SlideShare una empresa de Scribd logo
1 de 43
The Software Craftsman                        Gøran HansenAspiring Software Craftsman @ Capgemini   http://blog.goeran.no         @goeran   mail@goeran.no
Outline Why do we need Software Craftsmen? The Software Craftsman persona How to become a Software Craftsman
Why do we need Software Craftsmen?
Have you ever been slowed down by bad code? - Robert C. Martin aka. Unclebob
“The best processes in the world will not save a project from failure if the people involved do not have the necessary skills to execute the process; conversely, really good developers can make any process work”  – Pete McBreen, Software Craftsmanship: The New Imperative
Bad code amplifies the risk of project failure  – even for agile projects!
We need Software Craftsmen because they don’t write bad code…
When do we write bad code?
Pressure
When we have to “Get It Done”!
”Get It Done” vs. ”Get It Right”
Skill deficiency
A Software Craftsman will choose “Get It Right” (and get it done)!
Because he has the skills to do so…
The Software Craftsman persona The Software Craftsman persona
A Software Craftsman will always “Do It Right” – also under pressure
A Software Craftsman takes responsibility
A Software Craftsman takes pride in his work. Both the end product and the process towards it
A Software Craftsman signs his work
“Software Craftsmanship is all about putting responsibility and pride back into the software development process. As Hunt and Thomas (The Pragmatic Programmer) state, we need to start ‘signing our work’ again, just as other craftsmen do”  – Pete McBreen, Software Craftsmanship: The New Imperative
A Software Craftsman is a continuous learner. When he doesn’t work, he spends his time studying, to find new methods and tools can refine him as a Software Craftsman
“An investment in knowledge always pays the best interest” - Benjamin Franklin
A Software Craftsman practice deliberately, and understands the difference between practice and work. He practices in order to be prepared for work
A Software Craftsman writes code
“Knowledge is not the same as having the skills and practical ability to create software”  – Pete McBreen, Software Craftsmanship: The New Imperative
A Software Craftsman has the right attitude towards Software Development
A Software Craftsman contribute to the community
Characterization of a Software Craftsman Will “Do It Right” Take responsibility Take pride in his work Signs his work Continuous learner Practice deliberately Write code The right attitude  Contribute to the community
A Software Craftsman don’t write bad code because he hones his skills
How to become a Software Craftsman?
Tips from The Pragmatic Programmer: Care about your craft Think about your work
Start learning
What should I learn? TDD – can be applied to all languages Functional, dynamic and statically typed languages – learn the different paradigms Refactoring – learn how to change your code efficiently Design patterns Tools (ReSharper, Visual Studio, Ndepend, Pex etc) Frameworks (Nhibernate, Mongo db etc)
Start training! Code Dojos Code Katas Pair programming with other fellow Craftsmen
Practice – work on a real project
We need Software Craftsmen because they don’t write bad code
A Software Craftsman don’t write bad code because he hones his skills
And you can become a Software Craftsman by honing your skills (study, training and practice)
A special thanks to Corey Haines, for letting me using his slides. http://www.slideshare.net/openagile/the-craftsman-developer-in-an-agile-world http://www.coreyhaines.com

Más contenido relacionado

La actualidad más candente

10x programmers - What lies beneath
10x programmers - What lies beneath10x programmers - What lies beneath
10x programmers - What lies beneathHrishikesh Karekar
 
Planning Agile Projects
Planning Agile ProjectsPlanning Agile Projects
Planning Agile Projectsbriley1
 
Quality not-speed-for-distrobution
Quality not-speed-for-distrobutionQuality not-speed-for-distrobution
Quality not-speed-for-distrobutionbownyboy
 
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It IsAmanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It IsRehgan Avon
 
Optivem Framework
Optivem FrameworkOptivem Framework
Optivem FrameworkOptivem
 
Open Source Software Development Practices that Works
Open Source Software Development Practices that WorksOpen Source Software Development Practices that Works
Open Source Software Development Practices that WorksChoong Ping Teo
 
Taming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touchTaming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touchMike Clement
 
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015][XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]Agile đây Vietnam
 
Phoenix User Group Slides
Phoenix User Group SlidesPhoenix User Group Slides
Phoenix User Group Slidesagilebuddy
 
All Method, No Madness: Guiding Agile Teams Through Research
All Method, No Madness: Guiding Agile Teams Through ResearchAll Method, No Madness: Guiding Agile Teams Through Research
All Method, No Madness: Guiding Agile Teams Through ResearchAggregage
 
How agile is rails
 How agile is rails How agile is rails
How agile is railsJosé Mota
 
Software Developer Productivity: What we know and how to make it better
Software Developer Productivity: What we know and how to make it betterSoftware Developer Productivity: What we know and how to make it better
Software Developer Productivity: What we know and how to make it betterTasktop
 
Dave West (Tasktop Technologies) - Wizard of Oz
Dave West (Tasktop Technologies) - Wizard of OzDave West (Tasktop Technologies) - Wizard of Oz
Dave West (Tasktop Technologies) - Wizard of OzTasktop
 
Moving Fast with XP
Moving Fast with XPMoving Fast with XP
Moving Fast with XPMike Mazur
 
What every developer can learn from startups
What every developer can learn from startupsWhat every developer can learn from startups
What every developer can learn from startupsOleg Podsechin
 
How To Do Kick-Ass Software Development
How To Do Kick-Ass Software DevelopmentHow To Do Kick-Ass Software Development
How To Do Kick-Ass Software DevelopmentSven Peters
 
Practical Programming It Awareness Advocacy
Practical Programming   It Awareness AdvocacyPractical Programming   It Awareness Advocacy
Practical Programming It Awareness AdvocacyMarie Claire Ponsaran
 
Presentation software testing
Presentation software testingPresentation software testing
Presentation software testingcegonsoft1999
 

La actualidad más candente (20)

10x programmers - What lies beneath
10x programmers - What lies beneath10x programmers - What lies beneath
10x programmers - What lies beneath
 
Planning Agile Projects
Planning Agile ProjectsPlanning Agile Projects
Planning Agile Projects
 
Quality not-speed-for-distrobution
Quality not-speed-for-distrobutionQuality not-speed-for-distrobution
Quality not-speed-for-distrobution
 
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It IsAmanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
 
Optivem Framework
Optivem FrameworkOptivem Framework
Optivem Framework
 
Open Source Software Development Practices that Works
Open Source Software Development Practices that WorksOpen Source Software Development Practices that Works
Open Source Software Development Practices that Works
 
Lean Software Development
Lean Software DevelopmentLean Software Development
Lean Software Development
 
Taming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touchTaming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touch
 
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015][XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
 
Phoenix User Group Slides
Phoenix User Group SlidesPhoenix User Group Slides
Phoenix User Group Slides
 
All Method, No Madness: Guiding Agile Teams Through Research
All Method, No Madness: Guiding Agile Teams Through ResearchAll Method, No Madness: Guiding Agile Teams Through Research
All Method, No Madness: Guiding Agile Teams Through Research
 
How agile is rails
 How agile is rails How agile is rails
How agile is rails
 
Software Developer Productivity: What we know and how to make it better
Software Developer Productivity: What we know and how to make it betterSoftware Developer Productivity: What we know and how to make it better
Software Developer Productivity: What we know and how to make it better
 
Dave West (Tasktop Technologies) - Wizard of Oz
Dave West (Tasktop Technologies) - Wizard of OzDave West (Tasktop Technologies) - Wizard of Oz
Dave West (Tasktop Technologies) - Wizard of Oz
 
Lean Responsive
Lean ResponsiveLean Responsive
Lean Responsive
 
Moving Fast with XP
Moving Fast with XPMoving Fast with XP
Moving Fast with XP
 
What every developer can learn from startups
What every developer can learn from startupsWhat every developer can learn from startups
What every developer can learn from startups
 
How To Do Kick-Ass Software Development
How To Do Kick-Ass Software DevelopmentHow To Do Kick-Ass Software Development
How To Do Kick-Ass Software Development
 
Practical Programming It Awareness Advocacy
Practical Programming   It Awareness AdvocacyPractical Programming   It Awareness Advocacy
Practical Programming It Awareness Advocacy
 
Presentation software testing
Presentation software testingPresentation software testing
Presentation software testing
 

Similar a The Software Craftsman (2nd edition)

The Software Craftsman
The Software CraftsmanThe Software Craftsman
The Software Craftsmangoeran
 
Sandro Mancuso and David Green: London Software Craftsmanship Community: What...
Sandro Mancuso and David Green: London Software Craftsmanship Community: What...Sandro Mancuso and David Green: London Software Craftsmanship Community: What...
Sandro Mancuso and David Green: London Software Craftsmanship Community: What...Skills Matter
 
How to become a Software Engineer Carrier Path for Software Developer
How to become a Software Engineer Carrier Path for Software DeveloperHow to become a Software Engineer Carrier Path for Software Developer
How to become a Software Engineer Carrier Path for Software Developerjeetendra mandal
 
Gluing it all together: How teams can build enterprise JavaScript application...
Gluing it all together: How teams can build enterprise JavaScript application...Gluing it all together: How teams can build enterprise JavaScript application...
Gluing it all together: How teams can build enterprise JavaScript application...Codemotion
 
Programming vs Coding: Unveiling The Key Differences
Programming vs Coding: Unveiling The Key DifferencesProgramming vs Coding: Unveiling The Key Differences
Programming vs Coding: Unveiling The Key DifferencesFredReynolds2
 
Specification Of The Programming Language Of Java
Specification Of The Programming Language Of JavaSpecification Of The Programming Language Of Java
Specification Of The Programming Language Of JavaKim Moore
 
10 steps to becoming a professional software engineer
10 steps to becoming a professional software engineer10 steps to becoming a professional software engineer
10 steps to becoming a professional software engineerJimmy Sorensen
 
Vakmanschap is meesterschap
Vakmanschap is meesterschapVakmanschap is meesterschap
Vakmanschap is meesterschapMartijn Dashorst
 
Computer programming
Computer programmingComputer programming
Computer programmingSujay Raj
 
Software Craftsmanship
Software CraftsmanshipSoftware Craftsmanship
Software CraftsmanshipSandro Mancuso
 
Software Craftsmanship - Sandro Mancuso - BCS Agile Methods SG
Software Craftsmanship - Sandro Mancuso - BCS Agile Methods SGSoftware Craftsmanship - Sandro Mancuso - BCS Agile Methods SG
Software Craftsmanship - Sandro Mancuso - BCS Agile Methods SGJose Casal-Gimenez FBCS CITP
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovSvetlin Nakov
 
Roles and responsibilities of an IT software professional
Roles and responsibilities of an IT software professionalRoles and responsibilities of an IT software professional
Roles and responsibilities of an IT software professionalannie annie
 
Becoming a Software Developer
Becoming a Software DeveloperBecoming a Software Developer
Becoming a Software DeveloperMuhammad Samu
 
Software Development Simplified - A Beginner's Guide.pdf
Software Development Simplified - A Beginner's Guide.pdfSoftware Development Simplified - A Beginner's Guide.pdf
Software Development Simplified - A Beginner's Guide.pdfSeasiaInfotech2
 
Software Developer VS Software Engineer.pdf
Software Developer VS Software Engineer.pdfSoftware Developer VS Software Engineer.pdf
Software Developer VS Software Engineer.pdfRitika Shukla
 
How to hire developers for a startup.pdf
How to hire developers for a startup.pdfHow to hire developers for a startup.pdf
How to hire developers for a startup.pdfIonicFirebade App
 
Introduction of Software Architect(Definition, Mindset, Process).pptx
Introduction of Software Architect(Definition, Mindset, Process).pptxIntroduction of Software Architect(Definition, Mindset, Process).pptx
Introduction of Software Architect(Definition, Mindset, Process).pptxrony setyawansyah
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingUtkarsh Khare
 

Similar a The Software Craftsman (2nd edition) (20)

The Software Craftsman
The Software CraftsmanThe Software Craftsman
The Software Craftsman
 
Sandro Mancuso and David Green: London Software Craftsmanship Community: What...
Sandro Mancuso and David Green: London Software Craftsmanship Community: What...Sandro Mancuso and David Green: London Software Craftsmanship Community: What...
Sandro Mancuso and David Green: London Software Craftsmanship Community: What...
 
How to become a Software Engineer Carrier Path for Software Developer
How to become a Software Engineer Carrier Path for Software DeveloperHow to become a Software Engineer Carrier Path for Software Developer
How to become a Software Engineer Carrier Path for Software Developer
 
Gluing it all together: How teams can build enterprise JavaScript application...
Gluing it all together: How teams can build enterprise JavaScript application...Gluing it all together: How teams can build enterprise JavaScript application...
Gluing it all together: How teams can build enterprise JavaScript application...
 
Programming vs Coding: Unveiling The Key Differences
Programming vs Coding: Unveiling The Key DifferencesProgramming vs Coding: Unveiling The Key Differences
Programming vs Coding: Unveiling The Key Differences
 
Specification Of The Programming Language Of Java
Specification Of The Programming Language Of JavaSpecification Of The Programming Language Of Java
Specification Of The Programming Language Of Java
 
10 steps to becoming a professional software engineer
10 steps to becoming a professional software engineer10 steps to becoming a professional software engineer
10 steps to becoming a professional software engineer
 
Vakmanschap is meesterschap
Vakmanschap is meesterschapVakmanschap is meesterschap
Vakmanschap is meesterschap
 
Computer programming
Computer programmingComputer programming
Computer programming
 
Software Craftsmanship
Software CraftsmanshipSoftware Craftsmanship
Software Craftsmanship
 
Software Craftsmanship - Sandro Mancuso - BCS Agile Methods SG
Software Craftsmanship - Sandro Mancuso - BCS Agile Methods SGSoftware Craftsmanship - Sandro Mancuso - BCS Agile Methods SG
Software Craftsmanship - Sandro Mancuso - BCS Agile Methods SG
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
 
Roles and responsibilities of an IT software professional
Roles and responsibilities of an IT software professionalRoles and responsibilities of an IT software professional
Roles and responsibilities of an IT software professional
 
Becoming a Software Developer
Becoming a Software DeveloperBecoming a Software Developer
Becoming a Software Developer
 
Software Development Simplified - A Beginner's Guide.pdf
Software Development Simplified - A Beginner's Guide.pdfSoftware Development Simplified - A Beginner's Guide.pdf
Software Development Simplified - A Beginner's Guide.pdf
 
Specification
SpecificationSpecification
Specification
 
Software Developer VS Software Engineer.pdf
Software Developer VS Software Engineer.pdfSoftware Developer VS Software Engineer.pdf
Software Developer VS Software Engineer.pdf
 
How to hire developers for a startup.pdf
How to hire developers for a startup.pdfHow to hire developers for a startup.pdf
How to hire developers for a startup.pdf
 
Introduction of Software Architect(Definition, Mindset, Process).pptx
Introduction of Software Architect(Definition, Mindset, Process).pptxIntroduction of Software Architect(Definition, Mindset, Process).pptx
Introduction of Software Architect(Definition, Mindset, Process).pptx
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
 

The Software Craftsman (2nd edition)

  • 1. The Software Craftsman Gøran HansenAspiring Software Craftsman @ Capgemini http://blog.goeran.no @goeran mail@goeran.no
  • 2. Outline Why do we need Software Craftsmen? The Software Craftsman persona How to become a Software Craftsman
  • 3. Why do we need Software Craftsmen?
  • 4. Have you ever been slowed down by bad code? - Robert C. Martin aka. Unclebob
  • 5. “The best processes in the world will not save a project from failure if the people involved do not have the necessary skills to execute the process; conversely, really good developers can make any process work” – Pete McBreen, Software Craftsmanship: The New Imperative
  • 6. Bad code amplifies the risk of project failure – even for agile projects!
  • 7. We need Software Craftsmen because they don’t write bad code…
  • 8.
  • 9. When do we write bad code?
  • 11. When we have to “Get It Done”!
  • 12.
  • 13. ”Get It Done” vs. ”Get It Right”
  • 15. A Software Craftsman will choose “Get It Right” (and get it done)!
  • 16. Because he has the skills to do so…
  • 17. The Software Craftsman persona The Software Craftsman persona
  • 18. A Software Craftsman will always “Do It Right” – also under pressure
  • 19. A Software Craftsman takes responsibility
  • 20. A Software Craftsman takes pride in his work. Both the end product and the process towards it
  • 21. A Software Craftsman signs his work
  • 22. “Software Craftsmanship is all about putting responsibility and pride back into the software development process. As Hunt and Thomas (The Pragmatic Programmer) state, we need to start ‘signing our work’ again, just as other craftsmen do” – Pete McBreen, Software Craftsmanship: The New Imperative
  • 23. A Software Craftsman is a continuous learner. When he doesn’t work, he spends his time studying, to find new methods and tools can refine him as a Software Craftsman
  • 24. “An investment in knowledge always pays the best interest” - Benjamin Franklin
  • 25. A Software Craftsman practice deliberately, and understands the difference between practice and work. He practices in order to be prepared for work
  • 26. A Software Craftsman writes code
  • 27. “Knowledge is not the same as having the skills and practical ability to create software” – Pete McBreen, Software Craftsmanship: The New Imperative
  • 28. A Software Craftsman has the right attitude towards Software Development
  • 29. A Software Craftsman contribute to the community
  • 30. Characterization of a Software Craftsman Will “Do It Right” Take responsibility Take pride in his work Signs his work Continuous learner Practice deliberately Write code The right attitude Contribute to the community
  • 31. A Software Craftsman don’t write bad code because he hones his skills
  • 32.
  • 33. How to become a Software Craftsman?
  • 34. Tips from The Pragmatic Programmer: Care about your craft Think about your work
  • 36. What should I learn? TDD – can be applied to all languages Functional, dynamic and statically typed languages – learn the different paradigms Refactoring – learn how to change your code efficiently Design patterns Tools (ReSharper, Visual Studio, Ndepend, Pex etc) Frameworks (Nhibernate, Mongo db etc)
  • 37. Start training! Code Dojos Code Katas Pair programming with other fellow Craftsmen
  • 38. Practice – work on a real project
  • 39.
  • 40. We need Software Craftsmen because they don’t write bad code
  • 41. A Software Craftsman don’t write bad code because he hones his skills
  • 42. And you can become a Software Craftsman by honing your skills (study, training and practice)
  • 43. A special thanks to Corey Haines, for letting me using his slides. http://www.slideshare.net/openagile/the-craftsman-developer-in-an-agile-world http://www.coreyhaines.com
  • 44. The Software Craftsman Gøran HansenAspiring Software Craftsman @ Capgemini http://blog.goeran.no @goeran mail@goeran.no