SlideShare uma empresa Scribd logo
1 de 50
The Software Craftsman Gøran Hansen Aspiring Software Craftsman Senior Consultant @ Capgemini http://goeran.no mail@goeran.no  http://twitter.com/goeran
Outline Why do we need Software Craftsmen? Characterization of a Software Craftsman Manifesto of Software Craftsmanship How to become a Software Craftsman
Why do we need Software Craftsmen?
“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
The Total Costofowning a Mess “You have probably been slowed down by messy code. The degree of the slowdown can be significant. Over the span of a year or two, teams that were moving very fast at the beginning of a project can find themselves moving at a snail's pace.” “Over time the mess becomes so big and so deep and so tall, they can not clean it up. There is no way at all” “As the mess builds, the productivity of the team continues to decrease, asymptotically approaching zero. As productivity decreases, management does the only thing they can; they add more staff to the project in hopes of increasing productivity.” “Furthermore, they, and everyone else on the team, are under horrific pressure to increase productivity. So they all make more and more messes, driving the productivity ever further toward zero” - Robert C. Martin, Clean Code
How Scrum Can Fail
“Agilists assume craftsmanship Only few people pursue craftsmanship” ,[object Object],http://www.noop.nl/2009/05/agile-wrongfully-assumes-craftsmanship.html
Why do we need Software Craftsmen…?
… Because crappy code amplify the risk of failure – even for agile projects!
When do we write crappy code?
Pressure
When we have to “Get It Done”!
”Get It Done” vs. ”Get It Right”
An idea
ConstantPressure
Every Week
Pressure
Every Month
Pressure
Every Year
Pressure
What differentiate between making the choice of “Get It Done” vs. “Get It Right”?
Skill deficiency
A Software Craftsman will choose “Get It Right”
Because he has the skills to do so…
Not only will he “Dot It Right”, he will also do it for the right reasons…
The characterization of a Software Craftsman
He will “Do It Right” – also under pressure
He takes responsibility
He takes pride in his work. Both the end product and the process towards it
He 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
He 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
He practice deliberately, and understands the difference between practice and work. He practices in order to be prepared for work
He writes code
“Knowledge is not the same as having the skills and practical ability to create software”  – Pete McBreen, Software Craftsmanship: The New Imperative
He has the right attitude towards Software Development
He 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
How to become a Software Craftsman…
Tips from The Pragmatic Programmer: Care about your craft Think about your work
Start learning
Take responsibility for your professional career and apply what you’ve learned
Start to Practice Code Dojos Code Katas Pair programming with other fellow Craftsmen
What to practice? 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)
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
The Software Craftsman Gøran Hansen Aspiring Software Craftsman Senior Consultant @ Capgemini http://goeran.no mail@goeran.no  http://twitter.com/goeran

Mais conteúdo relacionado

Mais procurados

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
 
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
 
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
 
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
 
[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
 
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
 
Phoenix User Group Slides
Phoenix User Group SlidesPhoenix User Group Slides
Phoenix User Group Slidesagilebuddy
 
How agile is rails
 How agile is rails How agile is rails
How agile is railsJosé Mota
 
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
 

Mais procurados (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
 
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
 
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
 
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
 
[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]
 
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
 
Phoenix User Group Slides
Phoenix User Group SlidesPhoenix User Group Slides
Phoenix User Group Slides
 
How agile is rails
 How agile is rails How agile is rails
How agile is rails
 
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
 

Destaque

Apprenticeship Patterns
Apprenticeship PatternsApprenticeship Patterns
Apprenticeship PatternsArturo Herrero
 
The Way of The Software Craftsman # Part One: The Beginning
The Way of The Software Craftsman # Part One: The BeginningThe Way of The Software Craftsman # Part One: The Beginning
The Way of The Software Craftsman # Part One: The BeginningVitaliy Kulikov
 
Acceptance startup fini
Acceptance startup finiAcceptance startup fini
Acceptance startup finiSkills Matter
 
Coderetreat - Practice to Master Your Crafts
Coderetreat - Practice to Master Your CraftsCoderetreat - Practice to Master Your Crafts
Coderetreat - Practice to Master Your CraftsLemi Orhan Ergin
 
Software Craftsmanship
Software CraftsmanshipSoftware Craftsmanship
Software CraftsmanshipSandro Mancuso
 

Destaque (6)

Apprenticeship Patterns
Apprenticeship PatternsApprenticeship Patterns
Apprenticeship Patterns
 
The Way of The Software Craftsman # Part One: The Beginning
The Way of The Software Craftsman # Part One: The BeginningThe Way of The Software Craftsman # Part One: The Beginning
The Way of The Software Craftsman # Part One: The Beginning
 
Coreyhaines
CoreyhainesCoreyhaines
Coreyhaines
 
Acceptance startup fini
Acceptance startup finiAcceptance startup fini
Acceptance startup fini
 
Coderetreat - Practice to Master Your Crafts
Coderetreat - Practice to Master Your CraftsCoderetreat - Practice to Master Your Crafts
Coderetreat - Practice to Master Your Crafts
 
Software Craftsmanship
Software CraftsmanshipSoftware Craftsmanship
Software Craftsmanship
 

Semelhante a The Software Craftsman

The Software Craftsman (2nd edition)
The Software Craftsman (2nd edition)The Software Craftsman (2nd edition)
The Software Craftsman (2nd edition)goeran
 
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
 
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
 
Vakmanschap is meesterschap
Vakmanschap is meesterschapVakmanschap is meesterschap
Vakmanschap is meesterschapMartijn Dashorst
 
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
 
WinSmart Technologies
WinSmart TechnologiesWinSmart Technologies
WinSmart Technologiesbijunairk
 
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
 
Panu Kalliokoski, Solita “Why Custom Software Should Be Open Source” - Mindt...
Panu Kalliokoski, Solita  “Why Custom Software Should Be Open Source” - Mindt...Panu Kalliokoski, Solita  “Why Custom Software Should Be Open Source” - Mindt...
Panu Kalliokoski, Solita “Why Custom Software Should Be Open Source” - Mindt...Mindtrek
 
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
 
You call yourself a Senior Developer?
You call yourself a Senior Developer?You call yourself a Senior Developer?
You call yourself a Senior Developer?Antonio Peric-Mazar
 
UCD / IxD Introduction - User centric design, interaction design
UCD / IxD Introduction - User centric design, interaction designUCD / IxD Introduction - User centric design, interaction design
UCD / IxD Introduction - User centric design, interaction designsdavis6b
 
How to design a 'Good' Embedded Software?
How to design a 'Good' Embedded Software?How to design a 'Good' Embedded Software?
How to design a 'Good' Embedded Software?apurvaprabhakar
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingUtkarsh Khare
 
Why do lazy developers write beautiful code?
Why do lazy developers write beautiful code?Why do lazy developers write beautiful code?
Why do lazy developers write beautiful code?Javier Arias Losada
 
Fearless IT Outsourcing
Fearless IT OutsourcingFearless IT Outsourcing
Fearless IT OutsourcingAndy Hilliard
 
Originate - Think In Hours Not Sprints
Originate - Think In Hours Not SprintsOriginate - Think In Hours Not Sprints
Originate - Think In Hours Not SprintsRob Meadows
 
Software Development in 21st Century
Software Development in 21st CenturySoftware Development in 21st Century
Software Development in 21st CenturyHenry Jacob
 
Whittle Modeling Wizards 2012
Whittle Modeling Wizards 2012Whittle Modeling Wizards 2012
Whittle Modeling Wizards 2012jonathw
 
Extreme Programming 2018 — Agile Beyond Scrum
Extreme Programming 2018 — Agile Beyond ScrumExtreme Programming 2018 — Agile Beyond Scrum
Extreme Programming 2018 — Agile Beyond ScrumChristian Hujer
 
I Don't Code, Am I No Longer Useful
I Don't Code, Am I No Longer UsefulI Don't Code, Am I No Longer Useful
I Don't Code, Am I No Longer UsefulMaaret Pyhäjärvi
 

Semelhante a The Software Craftsman (20)

The Software Craftsman (2nd edition)
The Software Craftsman (2nd edition)The Software Craftsman (2nd edition)
The Software Craftsman (2nd edition)
 
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...
 
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...
 
Vakmanschap is meesterschap
Vakmanschap is meesterschapVakmanschap is meesterschap
Vakmanschap is meesterschap
 
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
 
WinSmart Technologies
WinSmart TechnologiesWinSmart Technologies
WinSmart Technologies
 
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
 
Panu Kalliokoski, Solita “Why Custom Software Should Be Open Source” - Mindt...
Panu Kalliokoski, Solita  “Why Custom Software Should Be Open Source” - Mindt...Panu Kalliokoski, Solita  “Why Custom Software Should Be Open Source” - Mindt...
Panu Kalliokoski, Solita “Why Custom Software Should Be Open Source” - Mindt...
 
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
 
You call yourself a Senior Developer?
You call yourself a Senior Developer?You call yourself a Senior Developer?
You call yourself a Senior Developer?
 
UCD / IxD Introduction - User centric design, interaction design
UCD / IxD Introduction - User centric design, interaction designUCD / IxD Introduction - User centric design, interaction design
UCD / IxD Introduction - User centric design, interaction design
 
How to design a 'Good' Embedded Software?
How to design a 'Good' Embedded Software?How to design a 'Good' Embedded Software?
How to design a 'Good' Embedded Software?
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
 
Why do lazy developers write beautiful code?
Why do lazy developers write beautiful code?Why do lazy developers write beautiful code?
Why do lazy developers write beautiful code?
 
Fearless IT Outsourcing
Fearless IT OutsourcingFearless IT Outsourcing
Fearless IT Outsourcing
 
Originate - Think In Hours Not Sprints
Originate - Think In Hours Not SprintsOriginate - Think In Hours Not Sprints
Originate - Think In Hours Not Sprints
 
Software Development in 21st Century
Software Development in 21st CenturySoftware Development in 21st Century
Software Development in 21st Century
 
Whittle Modeling Wizards 2012
Whittle Modeling Wizards 2012Whittle Modeling Wizards 2012
Whittle Modeling Wizards 2012
 
Extreme Programming 2018 — Agile Beyond Scrum
Extreme Programming 2018 — Agile Beyond ScrumExtreme Programming 2018 — Agile Beyond Scrum
Extreme Programming 2018 — Agile Beyond Scrum
 
I Don't Code, Am I No Longer Useful
I Don't Code, Am I No Longer UsefulI Don't Code, Am I No Longer Useful
I Don't Code, Am I No Longer Useful
 

Último

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 

Último (20)

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 

The Software Craftsman

  • 1. The Software Craftsman Gøran Hansen Aspiring Software Craftsman Senior Consultant @ Capgemini http://goeran.no mail@goeran.no http://twitter.com/goeran
  • 2. Outline Why do we need Software Craftsmen? Characterization of a Software Craftsman Manifesto of Software Craftsmanship How to become a Software Craftsman
  • 3. Why do we need Software Craftsmen?
  • 4. “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
  • 5. The Total Costofowning a Mess “You have probably been slowed down by messy code. The degree of the slowdown can be significant. Over the span of a year or two, teams that were moving very fast at the beginning of a project can find themselves moving at a snail's pace.” “Over time the mess becomes so big and so deep and so tall, they can not clean it up. There is no way at all” “As the mess builds, the productivity of the team continues to decrease, asymptotically approaching zero. As productivity decreases, management does the only thing they can; they add more staff to the project in hopes of increasing productivity.” “Furthermore, they, and everyone else on the team, are under horrific pressure to increase productivity. So they all make more and more messes, driving the productivity ever further toward zero” - Robert C. Martin, Clean Code
  • 7.
  • 8. Why do we need Software Craftsmen…?
  • 9. … Because crappy code amplify the risk of failure – even for agile projects!
  • 10. When do we write crappy code?
  • 12. When we have to “Get It Done”!
  • 13. ”Get It Done” vs. ”Get It Right”
  • 22.
  • 23. What differentiate between making the choice of “Get It Done” vs. “Get It Right”?
  • 25. A Software Craftsman will choose “Get It Right”
  • 26. Because he has the skills to do so…
  • 27. Not only will he “Dot It Right”, he will also do it for the right reasons…
  • 28. The characterization of a Software Craftsman
  • 29. He will “Do It Right” – also under pressure
  • 31. He takes pride in his work. Both the end product and the process towards it
  • 32. He signs his work
  • 33. “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
  • 34. He 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
  • 35. “An investment in knowledge always pays the best interest” - Benjamin Franklin
  • 36. He practice deliberately, and understands the difference between practice and work. He practices in order to be prepared for work
  • 38. “Knowledge is not the same as having the skills and practical ability to create software” – Pete McBreen, Software Craftsmanship: The New Imperative
  • 39. He has the right attitude towards Software Development
  • 40. He contribute to the community
  • 41. 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
  • 42.
  • 43. How to become a Software Craftsman…
  • 44. Tips from The Pragmatic Programmer: Care about your craft Think about your work
  • 46. Take responsibility for your professional career and apply what you’ve learned
  • 47. Start to Practice Code Dojos Code Katas Pair programming with other fellow Craftsmen
  • 48. What to practice? 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)
  • 49. 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
  • 50. The Software Craftsman Gøran Hansen Aspiring Software Craftsman Senior Consultant @ Capgemini http://goeran.no mail@goeran.no http://twitter.com/goeran