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

Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
"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
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 

Recently uploaded (20)

Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
"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
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 

Euruko 2009 - Software Craftsmanship