SlideShare uma empresa Scribd logo
1 de 57
The Way of
The Software
   Craftsman
# Part One: The Beginning




           2009, Vitaliy Kulikov
Interrupt. Ask questions. Disagree.
WHY I CARE
Usual Process
Beautiful System
Add a feature
Add a new feature
Change a feature
Time Passes
Look familiar
Add a new feature


How?
Crap Code
Constant Cleaning
„Clean code that works“

        Ron Jeffries
Emergent Design
Add a feature
Clean It Up
Add a new feature
Clean It Up
Change a feature
Time Passes
Clean Architecture
Over Time
How do you do this?
USUALLY ...
Extreme
Programming
     (XP)
Development
 Techniques
Why don’t we do
    them?
We don’t know how
How do you learn to
      do it?
Emergent Design /
Evolutionary Design
Over Time
Test-Driven
Development
    (TDD)
How do we learn?
Work != Practice
How do we practice?
Shu Ha Ri
Shu ( 守 : "protect", "obey" ) - traditional wisdom
Ha ( 破 : "detach", "digress" ) - breaking with tradition
Ri ( 離 : "leave", "separate" ) - transcendence
“Hold, Break, Leave”

First, follow all the
practices.

Then, realize and
change them.

Finally, you don't
need to think about
the rules anymore.
Testing. Quality. Automation.
WHY I CARE (REDUX)
„Legacy code is code
   without tests“

     Michael Feathers
The Steps of
test-first design (TFD)
TDD = Refactoring + TFD
Testing via the xUnit Framework
Tests are
  documentation

„Every test is an executable example.“
Edit and Pray
✗   Carefully plan
✗   Make the change

✗   Start the application
      and check the change
✗   Poking around
Cover and Modify
✔   Write test

✔   Make the change

✔   Run all tests
Tests = Proof
If it's worth building,
   it's worth testing.

If it's not worth testing,
   why are you wasting
your time working on it?
●   Another tool for your toolbox
   ●   Use as you need it
   ●   Can be difficult for beginners
   ●   Frameworks can help



TRY IT
Tests guide the design


„We see the code from the user‘s perspective“
Stop Writing Crap
THANK YOU
            ?
✔   „Test Driven Development by Example“
                                -Kent Beck


✔   „Working Effectively with Legacy Code“
                          -Michael Feathers


✔   „Clean Code: A Handbook of Agile
    Software Craftsmanship“
                          -Robert C. Martin


RESOURCES

Mais conteúdo relacionado

Mais procurados

How to build the wrong thing faster and learn from it keynote by David Hussma...
How to build the wrong thing faster and learn from it keynote by David Hussma...How to build the wrong thing faster and learn from it keynote by David Hussma...
How to build the wrong thing faster and learn from it keynote by David Hussma...
ProductCamp Twin Cities
 
Getting to production
Getting to productionGetting to production
Getting to production
mxrss
 

Mais procurados (20)

Agile?! Are You Crazy???
Agile?! Are You Crazy???Agile?! Are You Crazy???
Agile?! Are You Crazy???
 
Tokyo-Tech 2017 EDP-A #3 Prototype and Test
Tokyo-Tech 2017 EDP-A #3 Prototype and TestTokyo-Tech 2017 EDP-A #3 Prototype and Test
Tokyo-Tech 2017 EDP-A #3 Prototype and Test
 
Software Project management
Software Project managementSoftware Project management
Software Project management
 
Test Driven Development: More Development Than Ever
Test Driven Development: More Development Than EverTest Driven Development: More Development Than Ever
Test Driven Development: More Development Than Ever
 
Four Stages of Automated Testing by Bradley Temple
Four Stages of Automated Testing by Bradley TempleFour Stages of Automated Testing by Bradley Temple
Four Stages of Automated Testing by Bradley Temple
 
The things we weren't told about Scrum
The things we weren't told about ScrumThe things we weren't told about Scrum
The things we weren't told about Scrum
 
Agile Practices
Agile PracticesAgile Practices
Agile Practices
 
Do we need testers on agile teams?
Do we need testers on agile teams?Do we need testers on agile teams?
Do we need testers on agile teams?
 
Startup Engineering culture - "What matters & what does not"
Startup Engineering culture - "What matters & what does not"Startup Engineering culture - "What matters & what does not"
Startup Engineering culture - "What matters & what does not"
 
How to build the wrong thing faster and learn from it keynote by David Hussma...
How to build the wrong thing faster and learn from it keynote by David Hussma...How to build the wrong thing faster and learn from it keynote by David Hussma...
How to build the wrong thing faster and learn from it keynote by David Hussma...
 
Design in the wild
Design in the wildDesign in the wild
Design in the wild
 
Planning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teams
 
Getting to production
Getting to productionGetting to production
Getting to production
 
Agile, Scrum, Lean & Kanban @ Idea & Innovation Management - Erasmus Universi...
Agile, Scrum, Lean & Kanban @ Idea & Innovation Management - Erasmus Universi...Agile, Scrum, Lean & Kanban @ Idea & Innovation Management - Erasmus Universi...
Agile, Scrum, Lean & Kanban @ Idea & Innovation Management - Erasmus Universi...
 
Product Managers: How To Get Your Developers To Love You
Product Managers: How To Get Your Developers To Love YouProduct Managers: How To Get Your Developers To Love You
Product Managers: How To Get Your Developers To Love You
 
10+ Testing Pitfalls and How to Avoid them
10+ Testing Pitfalls and How to Avoid them 10+ Testing Pitfalls and How to Avoid them
10+ Testing Pitfalls and How to Avoid them
 
BB Session: Prototyping your workflow
BB Session: Prototyping your workflowBB Session: Prototyping your workflow
BB Session: Prototyping your workflow
 
Lean and Continuous delivery
Lean and Continuous deliveryLean and Continuous delivery
Lean and Continuous delivery
 
Scrum master's role - top 20 challenges
Scrum master's role - top 20 challenges Scrum master's role - top 20 challenges
Scrum master's role - top 20 challenges
 
Meetup-Transition2AgileSHARE
Meetup-Transition2AgileSHAREMeetup-Transition2AgileSHARE
Meetup-Transition2AgileSHARE
 

Destaque (6)

Coderetreat - Practice to Master Your Crafts
Coderetreat - Practice to Master Your CraftsCoderetreat - Practice to Master Your Crafts
Coderetreat - Practice to Master Your Crafts
 
Apprenticeship Patterns
Apprenticeship PatternsApprenticeship Patterns
Apprenticeship Patterns
 
Acceptance startup fini
Acceptance startup finiAcceptance startup fini
Acceptance startup fini
 
The Software Craftsman
The Software CraftsmanThe Software Craftsman
The Software Craftsman
 
Coreyhaines
CoreyhainesCoreyhaines
Coreyhaines
 
Software Craftsmanship
Software CraftsmanshipSoftware Craftsmanship
Software Craftsmanship
 

Semelhante a The Way of The Software Craftsman # Part One: The Beginning

Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best Practices
Igor Moochnick
 
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
Svetlin Nakov
 

Semelhante a The Way of The Software Craftsman # Part One: The Beginning (20)

TDD in Agile
TDD in AgileTDD in Agile
TDD in Agile
 
Software development myths that block your career
Software development myths that block your careerSoftware development myths that block your career
Software development myths that block your career
 
Going extreme-with-extreme-programming
Going extreme-with-extreme-programmingGoing extreme-with-extreme-programming
Going extreme-with-extreme-programming
 
Frug'Agile 2021: Agile as doctrine (and that's a good thing)
Frug'Agile 2021: Agile as doctrine (and that's a good thing)Frug'Agile 2021: Agile as doctrine (and that's a good thing)
Frug'Agile 2021: Agile as doctrine (and that's a good thing)
 
It's XP, Stupid
It's XP, StupidIt's XP, Stupid
It's XP, Stupid
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best Practices
 
It's XP Stupid (2019)
It's XP Stupid (2019)It's XP Stupid (2019)
It's XP Stupid (2019)
 
Agile
AgileAgile
Agile
 
Scrum plus – why scrum is not enough for successful delivery
Scrum plus – why scrum is not enough for successful deliveryScrum plus – why scrum is not enough for successful delivery
Scrum plus – why scrum is not enough for successful delivery
 
TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019
 
Introduction to TDD
Introduction to TDDIntroduction to TDD
Introduction to TDD
 
Devops & Agility - Build the Culture, Get the Tools, Win the Day - Dundee Tec...
Devops & Agility - Build the Culture, Get the Tools, Win the Day - Dundee Tec...Devops & Agility - Build the Culture, Get the Tools, Win the Day - Dundee Tec...
Devops & Agility - Build the Culture, Get the Tools, Win the Day - Dundee Tec...
 
User Experience Basics for Product Management
User Experience Basics for Product ManagementUser Experience Basics for Product Management
User Experience Basics for Product Management
 
Devops, Secops, Opsec, DevSec *ops *.* ?
Devops, Secops, Opsec, DevSec *ops *.* ?Devops, Secops, Opsec, DevSec *ops *.* ?
Devops, Secops, Opsec, DevSec *ops *.* ?
 
Holistic Product Development
Holistic Product DevelopmentHolistic Product Development
Holistic Product Development
 
TDD Anti-patterns (2022 edition)
TDD Anti-patterns (2022 edition)TDD Anti-patterns (2022 edition)
TDD Anti-patterns (2022 edition)
 
TDD - Christchurch APN May 2012
TDD - Christchurch APN May 2012TDD - Christchurch APN May 2012
TDD - Christchurch APN May 2012
 
AgileDC15 I'm Using Chef So I'm DevOps Right?
AgileDC15 I'm Using Chef So I'm DevOps Right?AgileDC15 I'm Using Chef So I'm DevOps Right?
AgileDC15 I'm Using Chef So I'm DevOps Right?
 
Intro to TDD
Intro to TDDIntro to TDD
Intro to TDD
 
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
 

Último

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
Enterprise Knowledge
 
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
giselly40
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Último (20)

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
 
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
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 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
 
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...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 

The Way of The Software Craftsman # Part One: The Beginning