SlideShare a Scribd company logo
1 of 41
Software Craftsmanship
                           for better software




                      Phillip Oertel @ EuRuKo 2009

12.05.2009 (Di)
Overview

                  • Where does this term come from?
                  • How does it help us?
                  • What does it demand?


12.05.2009 (Di)
We‘ve compared
                   ourselves to ...


12.05.2009 (Di)
artists



12.05.2009 (Di)
musicians



12.05.2009 (Di)
writers



12.05.2009 (Di)
architects



12.05.2009 (Di)
engineers



12.05.2009 (Di)
We are professional
                  software developers.


12.05.2009 (Di)
craftsmen



12.05.2009 (Di)
12.05.2009 (Di)
schedule
                  requirements
                   code quality


12.05.2009 (Di)
It‘s our fault.



12.05.2009 (Di)
How does Software
                  Craftsmanship fix this?


12.05.2009 (Di)
Values



12.05.2009 (Di)
Responsibility



12.05.2009 (Di)
Practise




12.05.2009 (Di)
Discipline



12.05.2009 (Di)
Practises



12.05.2009 (Di)
Iterative
                  development


12.05.2009 (Di)
Automated tests



12.05.2009 (Di)
KISS
                  keep it simple, stupid.




12.05.2009 (Di)
Close customer
                   collaboration


12.05.2009 (Di)
Continuous small
                   improvements


12.05.2009 (Di)
12.05.2009 (Di)
Code for
                  other
                  humans,
                  not
                  machines.
12.05.2009 (Di)
Think of code
                  in flux.


12.05.2009 (Di)
Refactoring



12.05.2009 (Di)
Hard, Basic skills



12.05.2009 (Di)
Comments

                               Classes             Formatting
                  Unit Tests
                               Meaningful Names

                                                   Systems
                                  Functions

        Error Handling                          Objects and Data
                                                   Structures

                      Concurrency         Boundaries
12.05.2009 (Di)
Functions




12.05.2009 (Di)
Functions
                  •   small                      •   prefer exceptions

                  •   do one thing               •   don‘t repeat yourself

                  •   one level of abstraction

                  •   use descriptive names

                  •   function arguments

                  •   have no side effects




12.05.2009 (Di)
How we learn



12.05.2009 (Di)
12.05.2009 (Di)
learn like craftsmen:

                       apprentice
                      journeyman
                         master

12.05.2009 (Di)
we loose masters.



12.05.2009 (Di)
values and skills
                  are not enough.


12.05.2009 (Di)
12.05.2009 (Di)
12.05.2009 (Di)
some books
                  • Clean Code, Robert C. Martin, 2008
                  • The Pragmatic Programmer, Andy Hunt, Dave
                    Thomas, 1999
                  • Refactoring, Martin Fowler, 1999
                  • Software Craftsmanship, Pete McBreen, 2002


12.05.2009 (Di)
photo credits
                  •   Musician: http://www.flickr.com/photos/tommarcello/2250681391/

                  •   Fountain pen: http://www.flickr.com/photos/brightmeadow/281659324/

                  •   Architecture model: http://www.flickr.com/photos/blahflowers/2613241979/

                  •   F1 Engineers: http://www.flickr.com/photos/7480659@N06/2295266851/

                  •   Craftsman: http://www.flickr.com/photos/andreasej/3120849218/

                  •   Doctor: http://www.flickr.com/photos/orcoo/345583754/

                  •   Monkeying around: http://www.flickr.com/photos/practicalowl/661094024/




12.05.2009 (Di)

More Related Content

Viewers also liked

Viewers also liked (20)

The future of_antivirals___broad_spectrum.15
The future of_antivirals___broad_spectrum.15The future of_antivirals___broad_spectrum.15
The future of_antivirals___broad_spectrum.15
 
5min setup of Salesforce files connect
5min setup of Salesforce files connect5min setup of Salesforce files connect
5min setup of Salesforce files connect
 
Visual Marketing
Visual MarketingVisual Marketing
Visual Marketing
 
Digital Mediaina state
Digital Mediaina stateDigital Mediaina state
Digital Mediaina state
 
Recursos Per Les Llengues March 8th 2010
Recursos Per Les Llengues March 8th 2010Recursos Per Les Llengues March 8th 2010
Recursos Per Les Llengues March 8th 2010
 
ZŠ a MŠ Brezovica
ZŠ a MŠ BrezovicaZŠ a MŠ Brezovica
ZŠ a MŠ Brezovica
 
Clin infect dis. 2015-o'neill-1871-7
Clin infect dis. 2015-o'neill-1871-7Clin infect dis. 2015-o'neill-1871-7
Clin infect dis. 2015-o'neill-1871-7
 
Hydrogen Progress, Priorities and Next Steps (Sept. 15)
Hydrogen Progress, Priorities and Next Steps (Sept. 15)Hydrogen Progress, Priorities and Next Steps (Sept. 15)
Hydrogen Progress, Priorities and Next Steps (Sept. 15)
 
Itgrammar
ItgrammarItgrammar
Itgrammar
 
Developing the startup (in Russian)
Developing the startup (in Russian)Developing the startup (in Russian)
Developing the startup (in Russian)
 
HOT N´COLD
HOT N´COLD HOT N´COLD
HOT N´COLD
 
Las realidades sociales_de_ivan
Las realidades sociales_de_ivanLas realidades sociales_de_ivan
Las realidades sociales_de_ivan
 
ZŠ a MŠ Nečtiny
ZŠ a MŠ NečtinyZŠ a MŠ Nečtiny
ZŠ a MŠ Nečtiny
 
ACTG 5273
ACTG 5273ACTG 5273
ACTG 5273
 
Heather Taylor - #smib presentation
Heather Taylor - #smib presentation Heather Taylor - #smib presentation
Heather Taylor - #smib presentation
 
Reinforcement unit 7
Reinforcement unit 7Reinforcement unit 7
Reinforcement unit 7
 
Guida all'Email Marketing
Guida all'Email MarketingGuida all'Email Marketing
Guida all'Email Marketing
 
Truvada kaletra o raltegravir pr ep
Truvada kaletra o raltegravir pr epTruvada kaletra o raltegravir pr ep
Truvada kaletra o raltegravir pr ep
 
¿Tratamiento antirretroviral como prevencion?
¿Tratamiento antirretroviral como prevencion?¿Tratamiento antirretroviral como prevencion?
¿Tratamiento antirretroviral como prevencion?
 
Geotrails
GeotrailsGeotrails
Geotrails
 

Similar to Euruko 2009 - Software Craftsmanship

Sig A&D - Documentation And Communication
Sig A&D - Documentation And CommunicationSig A&D - Documentation And Communication
Sig A&D - Documentation And CommunicationDavid Meijers
 
Feedback on Part 1 of the CSLP
Feedback on Part 1 of the CSLPFeedback on Part 1 of the CSLP
Feedback on Part 1 of the CSLPStephen Gilmore
 
Chad Udell - Developers are from Mars, Designers are from Venus
Chad Udell - Developers are from Mars, Designers are from VenusChad Udell - Developers are from Mars, Designers are from Venus
Chad Udell - Developers are from Mars, Designers are from Venus360|Conferences
 
Design Types
Design TypesDesign Types
Design Types1&1
 
Aras and T-Systems: Supplier Management
Aras and T-Systems: Supplier ManagementAras and T-Systems: Supplier Management
Aras and T-Systems: Supplier ManagementAras
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven DesignAOE
 
Unit iii(part d - component level design)
Unit   iii(part d - component level design)Unit   iii(part d - component level design)
Unit iii(part d - component level design)BALAJI A
 
Successful Teams are Test-Driven Teams
Successful Teams are Test-Driven TeamsSuccessful Teams are Test-Driven Teams
Successful Teams are Test-Driven TeamsRob Myers
 
Practical Groovy Domain-Specific Languages
Practical Groovy Domain-Specific LanguagesPractical Groovy Domain-Specific Languages
Practical Groovy Domain-Specific LanguagesGuillaume Laforge
 
Gluecon miller horizon
Gluecon miller horizonGluecon miller horizon
Gluecon miller horizonMike Miller
 
Master Class: Integration in the world of Social Business (Lotusphere2012 JMP...
Master Class: Integration in the world of Social Business (Lotusphere2012 JMP...Master Class: Integration in the world of Social Business (Lotusphere2012 JMP...
Master Class: Integration in the world of Social Business (Lotusphere2012 JMP...John Head
 
Fabio Sergio: Design Thinking for the Future
Fabio Sergio: Design Thinking for the FutureFabio Sergio: Design Thinking for the Future
Fabio Sergio: Design Thinking for the Futurefrog
 
Cloud4all Architecture Overview
Cloud4all Architecture OverviewCloud4all Architecture Overview
Cloud4all Architecture Overviewicchp2012
 
Model-Driven Software Engineering in Practice - Chapter 1 - Introduction
Model-Driven Software Engineering in Practice - Chapter 1 - IntroductionModel-Driven Software Engineering in Practice - Chapter 1 - Introduction
Model-Driven Software Engineering in Practice - Chapter 1 - IntroductionMarco Brambilla
 
Advancing UX in Your Organization (TorCHI Talk - December 12, 2013)
Advancing UX in Your Organization (TorCHI Talk - December 12, 2013)Advancing UX in Your Organization (TorCHI Talk - December 12, 2013)
Advancing UX in Your Organization (TorCHI Talk - December 12, 2013)Kimberley Peter
 
Introducing Immutant
Introducing Immutant Introducing Immutant
Introducing Immutant Jim Crossley
 
Notes on data-intensive processing with Hadoop Mapreduce
Notes on data-intensive processing with Hadoop MapreduceNotes on data-intensive processing with Hadoop Mapreduce
Notes on data-intensive processing with Hadoop MapreduceEvert Lammerts
 

Similar to Euruko 2009 - Software Craftsmanship (20)

Sig A&D - Documentation And Communication
Sig A&D - Documentation And CommunicationSig A&D - Documentation And Communication
Sig A&D - Documentation And Communication
 
Feedback on Part 1 of the CSLP
Feedback on Part 1 of the CSLPFeedback on Part 1 of the CSLP
Feedback on Part 1 of the CSLP
 
Chad Udell - Developers are from Mars, Designers are from Venus
Chad Udell - Developers are from Mars, Designers are from VenusChad Udell - Developers are from Mars, Designers are from Venus
Chad Udell - Developers are from Mars, Designers are from Venus
 
Design Types
Design TypesDesign Types
Design Types
 
Aras and T-Systems: Supplier Management
Aras and T-Systems: Supplier ManagementAras and T-Systems: Supplier Management
Aras and T-Systems: Supplier Management
 
Bern.jb
Bern.jbBern.jb
Bern.jb
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Unit iii(part d - component level design)
Unit   iii(part d - component level design)Unit   iii(part d - component level design)
Unit iii(part d - component level design)
 
Successful Teams are Test-Driven Teams
Successful Teams are Test-Driven TeamsSuccessful Teams are Test-Driven Teams
Successful Teams are Test-Driven Teams
 
Practical Groovy Domain-Specific Languages
Practical Groovy Domain-Specific LanguagesPractical Groovy Domain-Specific Languages
Practical Groovy Domain-Specific Languages
 
Gluecon miller horizon
Gluecon miller horizonGluecon miller horizon
Gluecon miller horizon
 
Master Class: Integration in the world of Social Business (Lotusphere2012 JMP...
Master Class: Integration in the world of Social Business (Lotusphere2012 JMP...Master Class: Integration in the world of Social Business (Lotusphere2012 JMP...
Master Class: Integration in the world of Social Business (Lotusphere2012 JMP...
 
Fabio Sergio: Design Thinking for the Future
Fabio Sergio: Design Thinking for the FutureFabio Sergio: Design Thinking for the Future
Fabio Sergio: Design Thinking for the Future
 
Homework9
Homework9Homework9
Homework9
 
Cloud4all Architecture Overview
Cloud4all Architecture OverviewCloud4all Architecture Overview
Cloud4all Architecture Overview
 
Model-Driven Software Engineering in Practice - Chapter 1 - Introduction
Model-Driven Software Engineering in Practice - Chapter 1 - IntroductionModel-Driven Software Engineering in Practice - Chapter 1 - Introduction
Model-Driven Software Engineering in Practice - Chapter 1 - Introduction
 
Advancing UX in Your Organization (TorCHI Talk - December 12, 2013)
Advancing UX in Your Organization (TorCHI Talk - December 12, 2013)Advancing UX in Your Organization (TorCHI Talk - December 12, 2013)
Advancing UX in Your Organization (TorCHI Talk - December 12, 2013)
 
Introducing Immutant
Introducing Immutant Introducing Immutant
Introducing Immutant
 
Hadoop.mapreduce
Hadoop.mapreduceHadoop.mapreduce
Hadoop.mapreduce
 
Notes on data-intensive processing with Hadoop Mapreduce
Notes on data-intensive processing with Hadoop MapreduceNotes on data-intensive processing with Hadoop Mapreduce
Notes on data-intensive processing with Hadoop Mapreduce
 

Recently uploaded

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 

Recently uploaded (20)

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 

Euruko 2009 - Software Craftsmanship