SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
Software Craftsmanship
       The Fifth Agile Value


              Rik Dryfoos
           February 17, 2010

              (802) 778-0877
             rik@dryfoos.com
Software Craftsmanship
•   Introduction

•   The Costs of Delivery -vs- Ownership

•   What is Craftsmanship?

•   A Manifesto for Software Craftsmanship

•   Problems with Top Down Dictates

•   Working Environment

•   The McBreen Model

•   A Role for vtSDA

•   School Curriculum
Introduction

•   Field trip


•   Master of the obvious


•   Goal today is to spark dialog
Introduction
•   We have all seen or heard of cost and time
    overrun due to “spaghetti code” or systems that
    become too complex to maintain and update

•   Is a mess inevitable? - If yes, deal with it by:

    •   Big Design Up Front

    •   Change Control

•   Today there are tools to address the root issues.

•   It is not only fiscally and professionally
    responsible, but also profitable.
Introduction

Title:
The Pragmatic Programmer
Authors:
Andrew Hunt & David Thomas
Publisher:
Addison-Wesley Professional
Pages: 321
Date: October, 1999
Cost of Delivery
Cost of Delivery

Common Acceptance Criteria:

 • Features                   • Capacity
 • Delivery Dates             • Availability
 • Appearance                 • Security
 • Performance                • Cost
Cost of Delivery

•   Client budget is tight - forego tests


•   Get it running now - polish it later


•   Perceived quality is skin deep
Cost of Delivery

It is July 2006...
You decide that you will cut the delivery cost of your
webapp by making it only work with IE6.

IE6 is favored by over 85% of your users and you don’t
want to spend extra time and money to be standards
compliant AND work with IE.
Cost of Ownership


Now it is February 2010...
Your application won’t work with modern browsers
and there are twenty-two unpatched vulnerabilities in
IE6, some of which are rated moderately critical in
severity. *
Cost of Ownership

•   Spaghetti code

•   “He Left Things a Mess”

•   Large patches of code that is commented

•   No one wants to touch it for fear of breaking it

•   Documentation is outdated, misleading or wrong
Cost of Ownership
Cost of Ownership
If the project...

    •   Is not disposable

    •   Is produced in-house, or

    •   Is produced as part of a long-term relationship

Then you should stabilize the productivity curve.
Well crafted solutions are cost effective in the long term,
and help establish a relationship built on trust.
Cost of Ownership
When code is not written in a way that is “clean” and easy
to understand, development slows over time.

Eventually the codebase will be so tangled that it seems
easier to rewrite the whole thing from scratch.

Re-development begins without the discipline required to
insure that the code is “clean” and easy to understand.

Repeat.
What is Craftsmanship?

Title:
Clean Code
Author:
Robert C. Martin
(aka Uncle Bob)
Publisher:
Prentice Hall
Pages: 464
Date: August 11, 2008
What is Craftsmanship?
What is Craftsmanship?

“You know you are working on clean code when
  each routine you read turns out to be pretty
much what you expected.You can call it beautiful
 code when the code also makes it look like the
     language was made for the problem.”
  Ward Cunningham, as quoted in Clean Code, Prentice Hall, 2008, pg 11.
What is Craftsmanship?

“Habitability is the characteristic of source code that
enables programmers, coders, bug-fixers, and people
 coming to the code later in its life to understand its
    construction and intentions and to change it
            comfortably and confidently.”
     R. Gabriel, Patterns of Software, Oxford University Press, 1996, pg 11.
What is Craftsmanship?

Well crafted code demonstrates:
• Simplicity
• Lack of duplication
• Readability
• Elegance
What is Craftsmanship?
A Continuum of Understanding

 •   Apprentice - Software works, or it doesn't.

 •   Journeyman - Software judged by how clean it is.

 •   Master - Software development becomes a series
     of calculated trade-offs.

When the design works and is habitable, it is easier to
live with the outcomes of your decisions.
Manifesto
             http://manifesto.softwarecraftsmanship.org/
As aspiring Software Craftsmen we are raising the bar of professional software
development by practicing it and helping others learn the craft.

Through this work we have come to value:

  •     Not only working software, but also well-crafted software

  •     Not only responding to change, but also steadily adding value

  •     Not only individuals and interactions, but also a community of professionals

  •     Not only customer collaboration, but also productive partnerships

That is, in pursuit of the items on the left we have found the
items on the right to be indispensable.
©2009, the undersigned. this statement may be freely copied in any form, but only in its entirety through this notice.
Manifesto

•   Puts a name on the concept of Code Craft that we
    actively encourage and foster in our company.


•   Clarifies expectations and helps with the mutual
    selection process of hiring.


•   Creates a dialog which we were previously
    struggling to have.
Top Down Dictates
Managers often don’t know what to ask for,
let alone how to encourage best practices.
There are well over 10,000 Java jobs on Dice.com

   •   3690 mention “J2EE”

   •   2466 mention “Linux”

   •   98 mention “Refactoring”

   •   39 mention “Dependency Injection”

   •   10 mention “Inversion of Control”
Top Down Dictates

Similarities between Software Development when
viewed as a craft, and blacksmithing:

 •   Technical knowledge required, but not sufficient

 •   Need practice and skill with specialized tools

 •   An eye for aesthetics
It takes a blacksmith to train a blacksmith
Top Down Dictates

As a manager, I can...

 •   Hire craftsmen who are skilled mentors

 •   Hire motivated apprentices and interns

 •   Set an example: Right Thing – Right Way

 •   Provide an environment that values craft
Working Environment
•   Communication

•   Professionalism

    •   Pair Programming

    •   Continuous Integration

    •   Test-Driven / Behavior-Driven Development

    •   Quality Metrics - Monitoring for Code Smells

•   Sufficient backlog to minimize wait time

•   Short feedback loop

•   Continuous Learning
The McBreen Model

Title:
Software Craftsmanship
Author:
Pete McBreen
Publisher:
Addison-Wesley Professional
Pages: 208
Date: August 23, 2001
The McBreen Model

•   A great craftsman is worth more than her manager

•   A great craftsman is probably worth $150K-$250K

•   How would you spend a $600,000 salary budget?

•   Three great craftsman with three motivated
    apprentices, or ten mediocre developers?
A Role for vtSDA
Raising the bar of professional software development...

 •   Community
         Linkedin Subgroup

 •   Practicing
         Dojos and Randoris

 •   Helping Others Learn
         Internships
Two Dozen Things You Probably
         Did Not Learn in School
•   Agile Software Development             •   Lean Software Development
•   Aspect-Oriented Programming (AOP)      •   Loose Coupling and High Cohesion
•   Behavior-Driven Design (BDD)           •   Release Early, Release Often (RERO)
•   Big Design Up Front (BDUF)             •   The S.O.L.I.D. Principles
•   Continuous Integration                     •  Single Responsibility Principle (SRP)
•   Convention over Configuration (CoC)         •  Open/Close Principle (OCP)
•   Domain-Driven Design (DDD)                 •  Liskov Substitution Principle (LSP)
•   Don't Repeat Yourself (DRY)                •  Interface Segregation Principle (ISP)
•   Duplication is Evil (DIE)                  •  Dependency Inversion Principle (DIP)
•   Domain Specific Language (DSL)          •   Test-Driven Design (TDD)
•   Fluent Interface                       •   eXtreme Programming (XP)
•   Gang of Four's (GoF) Design Patterns   •   You Ain't Gonna Need It (YAGNI)
Thank you.

Más contenido relacionado

La actualidad más candente

Software Development Innovation in Practice - 33rd Degree 2014
Software Development Innovation in Practice - 33rd Degree 2014Software Development Innovation in Practice - 33rd Degree 2014
Software Development Innovation in Practice - 33rd Degree 2014Wojciech Seliga
 
TDD - Cultivating a Beginner's Mind
TDD -  Cultivating a Beginner's MindTDD -  Cultivating a Beginner's Mind
TDD - Cultivating a Beginner's MindShai Yallin
 
Create Your Own Starter Files
Create Your Own Starter FilesCreate Your Own Starter Files
Create Your Own Starter FilesEmily Lewis
 
Smart+Shanghai+2008 09 05
Smart+Shanghai+2008 09 05Smart+Shanghai+2008 09 05
Smart+Shanghai+2008 09 05Guang Ying Yuan
 
Smart+Shanghai+2008 09 05
Smart+Shanghai+2008 09 05Smart+Shanghai+2008 09 05
Smart+Shanghai+2008 09 05guestaa42e9
 
Growing Drupal Organisations - Drupal Business Days 2012
Growing Drupal Organisations - Drupal Business Days 2012Growing Drupal Organisations - Drupal Business Days 2012
Growing Drupal Organisations - Drupal Business Days 2012Exove
 
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...Alberto Brandolini
 
Class 6: Introduction to web technology entrepreneurship
Class 6: Introduction to web technology entrepreneurshipClass 6: Introduction to web technology entrepreneurship
Class 6: Introduction to web technology entrepreneurshipallanchao
 
The Importance of Culture: Building and Sustaining Effective Engineering Org...
The Importance of Culture:  Building and Sustaining Effective Engineering Org...The Importance of Culture:  Building and Sustaining Effective Engineering Org...
The Importance of Culture: Building and Sustaining Effective Engineering Org...Randy Shoup
 
Use your IBM Collaboration tools smarter to make your work less stressful
Use your IBM Collaboration tools smarter to make your work less stressfulUse your IBM Collaboration tools smarter to make your work less stressful
Use your IBM Collaboration tools smarter to make your work less stressfulRoland Driesen
 
Class 7: Introduction to web technology entrepreneurship
Class 7: Introduction to web technology entrepreneurshipClass 7: Introduction to web technology entrepreneurship
Class 7: Introduction to web technology entrepreneurshipallanchao
 
Twenty Startups A Year Without Going Crazy
Twenty Startups A Year Without Going CrazyTwenty Startups A Year Without Going Crazy
Twenty Startups A Year Without Going CrazyCiklum Ukraine
 
Software Craftsmanship Essentials
Software Craftsmanship EssentialsSoftware Craftsmanship Essentials
Software Craftsmanship EssentialsEduards Sizovs
 
Responsive eLearning Development - Challenges & Considerations
Responsive eLearning Development - Challenges & Considerations Responsive eLearning Development - Challenges & Considerations
Responsive eLearning Development - Challenges & Considerations Upside Learning Solutions
 
We’re Going Mobile! Great! Wait… What Does That Mean?
We’re Going Mobile! Great! Wait… What Does That Mean?We’re Going Mobile! Great! Wait… What Does That Mean?
We’re Going Mobile! Great! Wait… What Does That Mean?STC-Philadelphia Metro Chapter
 
Dancing for a product release
Dancing for a product releaseDancing for a product release
Dancing for a product releaseLaurent Cerveau
 

La actualidad más candente (20)

Software Development Innovation in Practice - 33rd Degree 2014
Software Development Innovation in Practice - 33rd Degree 2014Software Development Innovation in Practice - 33rd Degree 2014
Software Development Innovation in Practice - 33rd Degree 2014
 
Os Long
Os LongOs Long
Os Long
 
TDD - Cultivating a Beginner's Mind
TDD -  Cultivating a Beginner's MindTDD -  Cultivating a Beginner's Mind
TDD - Cultivating a Beginner's Mind
 
Ruby on Rails Development Ecosystem
Ruby on Rails Development EcosystemRuby on Rails Development Ecosystem
Ruby on Rails Development Ecosystem
 
Create Your Own Starter Files
Create Your Own Starter FilesCreate Your Own Starter Files
Create Your Own Starter Files
 
Smart+Shanghai+2008 09 05
Smart+Shanghai+2008 09 05Smart+Shanghai+2008 09 05
Smart+Shanghai+2008 09 05
 
Smart+Shanghai+2008 09 05
Smart+Shanghai+2008 09 05Smart+Shanghai+2008 09 05
Smart+Shanghai+2008 09 05
 
Growing Drupal Organisations - Drupal Business Days 2012
Growing Drupal Organisations - Drupal Business Days 2012Growing Drupal Organisations - Drupal Business Days 2012
Growing Drupal Organisations - Drupal Business Days 2012
 
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
 
Class 6: Introduction to web technology entrepreneurship
Class 6: Introduction to web technology entrepreneurshipClass 6: Introduction to web technology entrepreneurship
Class 6: Introduction to web technology entrepreneurship
 
The Importance of Culture: Building and Sustaining Effective Engineering Org...
The Importance of Culture:  Building and Sustaining Effective Engineering Org...The Importance of Culture:  Building and Sustaining Effective Engineering Org...
The Importance of Culture: Building and Sustaining Effective Engineering Org...
 
Use your IBM Collaboration tools smarter to make your work less stressful
Use your IBM Collaboration tools smarter to make your work less stressfulUse your IBM Collaboration tools smarter to make your work less stressful
Use your IBM Collaboration tools smarter to make your work less stressful
 
Class 7: Introduction to web technology entrepreneurship
Class 7: Introduction to web technology entrepreneurshipClass 7: Introduction to web technology entrepreneurship
Class 7: Introduction to web technology entrepreneurship
 
Assertive Niceness
Assertive NicenessAssertive Niceness
Assertive Niceness
 
Twenty Startups A Year Without Going Crazy
Twenty Startups A Year Without Going CrazyTwenty Startups A Year Without Going Crazy
Twenty Startups A Year Without Going Crazy
 
Software Craftsmanship Essentials
Software Craftsmanship EssentialsSoftware Craftsmanship Essentials
Software Craftsmanship Essentials
 
Responsive eLearning Development - Challenges & Considerations
Responsive eLearning Development - Challenges & Considerations Responsive eLearning Development - Challenges & Considerations
Responsive eLearning Development - Challenges & Considerations
 
We’re Going Mobile! Great! Wait… What Does That Mean?
We’re Going Mobile! Great! Wait… What Does That Mean?We’re Going Mobile! Great! Wait… What Does That Mean?
We’re Going Mobile! Great! Wait… What Does That Mean?
 
Binary crosswords
Binary crosswordsBinary crosswords
Binary crosswords
 
Dancing for a product release
Dancing for a product releaseDancing for a product release
Dancing for a product release
 

Destacado

Friday final test
Friday final testFriday final test
Friday final testbcoder
 
Knowledge Cafe Masterclass, Neethlingshhof, South Africa, Nov 2008
Knowledge Cafe Masterclass, Neethlingshhof, South Africa, Nov 2008Knowledge Cafe Masterclass, Neethlingshhof, South Africa, Nov 2008
Knowledge Cafe Masterclass, Neethlingshhof, South Africa, Nov 2008David Gurteen
 
slideshare test
slideshare testslideshare test
slideshare testbcoder
 
wed post
wed postwed post
wed postbcoder
 
scrumtest
scrumtestscrumtest
scrumtestbcoder
 
dealer test
dealer testdealer test
dealer testbcoder
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome EconomyHelge Tennø
 

Destacado (7)

Friday final test
Friday final testFriday final test
Friday final test
 
Knowledge Cafe Masterclass, Neethlingshhof, South Africa, Nov 2008
Knowledge Cafe Masterclass, Neethlingshhof, South Africa, Nov 2008Knowledge Cafe Masterclass, Neethlingshhof, South Africa, Nov 2008
Knowledge Cafe Masterclass, Neethlingshhof, South Africa, Nov 2008
 
slideshare test
slideshare testslideshare test
slideshare test
 
wed post
wed postwed post
wed post
 
scrumtest
scrumtestscrumtest
scrumtest
 
dealer test
dealer testdealer test
dealer test
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome Economy
 

Similar a It is a sunny day

Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedAlexander Makarov
 
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation ProjectsAmazon Web Services
 
2019-Nov: Domain Driven Design (DDD) and when not to use it
2019-Nov: Domain Driven Design (DDD) and when not to use it2019-Nov: Domain Driven Design (DDD) and when not to use it
2019-Nov: Domain Driven Design (DDD) and when not to use itMark Windholtz
 
Technical Excellence Doesn't Just Happen - AgileIndy 2016
Technical Excellence Doesn't Just Happen - AgileIndy 2016Technical Excellence Doesn't Just Happen - AgileIndy 2016
Technical Excellence Doesn't Just Happen - AgileIndy 2016Allison Pollard
 
It's XP Stupid (2019)
It's XP Stupid (2019)It's XP Stupid (2019)
It's XP Stupid (2019)Mike Harris
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software DevelopmentAhmet Bulut
 
Clean Code Part III - Craftsmanship at SoCal Code Camp
Clean Code Part III - Craftsmanship at SoCal Code CampClean Code Part III - Craftsmanship at SoCal Code Camp
Clean Code Part III - Craftsmanship at SoCal Code CampTheo Jungeblut
 
Working with Developers
Working with DevelopersWorking with Developers
Working with DevelopersPaul Walk
 
Need to reboot your content creation strategy? Start with "No"
Need to reboot your content creation strategy? Start with "No"Need to reboot your content creation strategy? Start with "No"
Need to reboot your content creation strategy? Start with "No"Keith Boyd
 
Introduction To Agile Refresh Savannah July20 2010 V1 4
Introduction To Agile Refresh Savannah July20 2010 V1 4Introduction To Agile Refresh Savannah July20 2010 V1 4
Introduction To Agile Refresh Savannah July20 2010 V1 4Marvin Heery
 
Real World Application of Development
Real World Application of DevelopmentReal World Application of Development
Real World Application of Developmentdjones101
 
Cleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy ProjectsCleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy ProjectsMike Long
 
The Changing Role of the Developer in HE
The Changing Role of the Developer in HEThe Changing Role of the Developer in HE
The Changing Role of the Developer in HEPaul Walk
 
Software Engineering - Trends & Industry Practices
Software Engineering - Trends & Industry PracticesSoftware Engineering - Trends & Industry Practices
Software Engineering - Trends & Industry PracticesAlfred Jett Grandeza
 
Delivering Fantastic Brand Experiences With Low-Code
Delivering Fantastic Brand Experiences With Low-CodeDelivering Fantastic Brand Experiences With Low-Code
Delivering Fantastic Brand Experiences With Low-CodeCyber-Duck
 
The Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software DesignThe Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software DesignJeremy Miller
 
14 Habits of Great SQL Developers
14 Habits of Great SQL Developers14 Habits of Great SQL Developers
14 Habits of Great SQL DevelopersIke Ellis
 
Introduction to GoLang
Introduction to GoLangIntroduction to GoLang
Introduction to GoLangNVISIA
 

Similar a It is a sunny day (20)

Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developed
 
Introduction
IntroductionIntroduction
Introduction
 
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
 
2019-Nov: Domain Driven Design (DDD) and when not to use it
2019-Nov: Domain Driven Design (DDD) and when not to use it2019-Nov: Domain Driven Design (DDD) and when not to use it
2019-Nov: Domain Driven Design (DDD) and when not to use it
 
Technical Excellence Doesn't Just Happen - AgileIndy 2016
Technical Excellence Doesn't Just Happen - AgileIndy 2016Technical Excellence Doesn't Just Happen - AgileIndy 2016
Technical Excellence Doesn't Just Happen - AgileIndy 2016
 
Technical Debt.pptx
Technical Debt.pptxTechnical Debt.pptx
Technical Debt.pptx
 
It's XP Stupid (2019)
It's XP Stupid (2019)It's XP Stupid (2019)
It's XP Stupid (2019)
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
Clean Code Part III - Craftsmanship at SoCal Code Camp
Clean Code Part III - Craftsmanship at SoCal Code CampClean Code Part III - Craftsmanship at SoCal Code Camp
Clean Code Part III - Craftsmanship at SoCal Code Camp
 
Working with Developers
Working with DevelopersWorking with Developers
Working with Developers
 
Need to reboot your content creation strategy? Start with "No"
Need to reboot your content creation strategy? Start with "No"Need to reboot your content creation strategy? Start with "No"
Need to reboot your content creation strategy? Start with "No"
 
Introduction To Agile Refresh Savannah July20 2010 V1 4
Introduction To Agile Refresh Savannah July20 2010 V1 4Introduction To Agile Refresh Savannah July20 2010 V1 4
Introduction To Agile Refresh Savannah July20 2010 V1 4
 
Real World Application of Development
Real World Application of DevelopmentReal World Application of Development
Real World Application of Development
 
Cleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy ProjectsCleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy Projects
 
The Changing Role of the Developer in HE
The Changing Role of the Developer in HEThe Changing Role of the Developer in HE
The Changing Role of the Developer in HE
 
Software Engineering - Trends & Industry Practices
Software Engineering - Trends & Industry PracticesSoftware Engineering - Trends & Industry Practices
Software Engineering - Trends & Industry Practices
 
Delivering Fantastic Brand Experiences With Low-Code
Delivering Fantastic Brand Experiences With Low-CodeDelivering Fantastic Brand Experiences With Low-Code
Delivering Fantastic Brand Experiences With Low-Code
 
The Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software DesignThe Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software Design
 
14 Habits of Great SQL Developers
14 Habits of Great SQL Developers14 Habits of Great SQL Developers
14 Habits of Great SQL Developers
 
Introduction to GoLang
Introduction to GoLangIntroduction to GoLang
Introduction to GoLang
 

Último

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
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
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
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
 
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)wesley chun
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
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.pptxEarley Information Science
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
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 WorkerThousandEyes
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
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
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
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
 
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
 

Último (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
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
 
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)
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
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
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
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
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
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...
 
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
 

It is a sunny day

  • 1. Software Craftsmanship The Fifth Agile Value Rik Dryfoos February 17, 2010 (802) 778-0877 rik@dryfoos.com
  • 2. Software Craftsmanship • Introduction • The Costs of Delivery -vs- Ownership • What is Craftsmanship? • A Manifesto for Software Craftsmanship • Problems with Top Down Dictates • Working Environment • The McBreen Model • A Role for vtSDA • School Curriculum
  • 3. Introduction • Field trip • Master of the obvious • Goal today is to spark dialog
  • 4. Introduction • We have all seen or heard of cost and time overrun due to “spaghetti code” or systems that become too complex to maintain and update • Is a mess inevitable? - If yes, deal with it by: • Big Design Up Front • Change Control • Today there are tools to address the root issues. • It is not only fiscally and professionally responsible, but also profitable.
  • 5. Introduction Title: The Pragmatic Programmer Authors: Andrew Hunt & David Thomas Publisher: Addison-Wesley Professional Pages: 321 Date: October, 1999
  • 7. Cost of Delivery Common Acceptance Criteria: • Features • Capacity • Delivery Dates • Availability • Appearance • Security • Performance • Cost
  • 8. Cost of Delivery • Client budget is tight - forego tests • Get it running now - polish it later • Perceived quality is skin deep
  • 9. Cost of Delivery It is July 2006... You decide that you will cut the delivery cost of your webapp by making it only work with IE6. IE6 is favored by over 85% of your users and you don’t want to spend extra time and money to be standards compliant AND work with IE.
  • 10. Cost of Ownership Now it is February 2010... Your application won’t work with modern browsers and there are twenty-two unpatched vulnerabilities in IE6, some of which are rated moderately critical in severity. *
  • 11. Cost of Ownership • Spaghetti code • “He Left Things a Mess” • Large patches of code that is commented • No one wants to touch it for fear of breaking it • Documentation is outdated, misleading or wrong
  • 13. Cost of Ownership If the project... • Is not disposable • Is produced in-house, or • Is produced as part of a long-term relationship Then you should stabilize the productivity curve. Well crafted solutions are cost effective in the long term, and help establish a relationship built on trust.
  • 14. Cost of Ownership When code is not written in a way that is “clean” and easy to understand, development slows over time. Eventually the codebase will be so tangled that it seems easier to rewrite the whole thing from scratch. Re-development begins without the discipline required to insure that the code is “clean” and easy to understand. Repeat.
  • 15. What is Craftsmanship? Title: Clean Code Author: Robert C. Martin (aka Uncle Bob) Publisher: Prentice Hall Pages: 464 Date: August 11, 2008
  • 17. What is Craftsmanship? “You know you are working on clean code when each routine you read turns out to be pretty much what you expected.You can call it beautiful code when the code also makes it look like the language was made for the problem.” Ward Cunningham, as quoted in Clean Code, Prentice Hall, 2008, pg 11.
  • 18. What is Craftsmanship? “Habitability is the characteristic of source code that enables programmers, coders, bug-fixers, and people coming to the code later in its life to understand its construction and intentions and to change it comfortably and confidently.” R. Gabriel, Patterns of Software, Oxford University Press, 1996, pg 11.
  • 19. What is Craftsmanship? Well crafted code demonstrates: • Simplicity • Lack of duplication • Readability • Elegance
  • 20. What is Craftsmanship? A Continuum of Understanding • Apprentice - Software works, or it doesn't. • Journeyman - Software judged by how clean it is. • Master - Software development becomes a series of calculated trade-offs. When the design works and is habitable, it is easier to live with the outcomes of your decisions.
  • 21. Manifesto http://manifesto.softwarecraftsmanship.org/ As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value: • Not only working software, but also well-crafted software • Not only responding to change, but also steadily adding value • Not only individuals and interactions, but also a community of professionals • Not only customer collaboration, but also productive partnerships That is, in pursuit of the items on the left we have found the items on the right to be indispensable. ©2009, the undersigned. this statement may be freely copied in any form, but only in its entirety through this notice.
  • 22. Manifesto • Puts a name on the concept of Code Craft that we actively encourage and foster in our company. • Clarifies expectations and helps with the mutual selection process of hiring. • Creates a dialog which we were previously struggling to have.
  • 23. Top Down Dictates Managers often don’t know what to ask for, let alone how to encourage best practices. There are well over 10,000 Java jobs on Dice.com • 3690 mention “J2EE” • 2466 mention “Linux” • 98 mention “Refactoring” • 39 mention “Dependency Injection” • 10 mention “Inversion of Control”
  • 24. Top Down Dictates Similarities between Software Development when viewed as a craft, and blacksmithing: • Technical knowledge required, but not sufficient • Need practice and skill with specialized tools • An eye for aesthetics It takes a blacksmith to train a blacksmith
  • 25. Top Down Dictates As a manager, I can... • Hire craftsmen who are skilled mentors • Hire motivated apprentices and interns • Set an example: Right Thing – Right Way • Provide an environment that values craft
  • 26. Working Environment • Communication • Professionalism • Pair Programming • Continuous Integration • Test-Driven / Behavior-Driven Development • Quality Metrics - Monitoring for Code Smells • Sufficient backlog to minimize wait time • Short feedback loop • Continuous Learning
  • 27. The McBreen Model Title: Software Craftsmanship Author: Pete McBreen Publisher: Addison-Wesley Professional Pages: 208 Date: August 23, 2001
  • 28. The McBreen Model • A great craftsman is worth more than her manager • A great craftsman is probably worth $150K-$250K • How would you spend a $600,000 salary budget? • Three great craftsman with three motivated apprentices, or ten mediocre developers?
  • 29. A Role for vtSDA Raising the bar of professional software development... • Community Linkedin Subgroup • Practicing Dojos and Randoris • Helping Others Learn Internships
  • 30. Two Dozen Things You Probably Did Not Learn in School • Agile Software Development • Lean Software Development • Aspect-Oriented Programming (AOP) • Loose Coupling and High Cohesion • Behavior-Driven Design (BDD) • Release Early, Release Often (RERO) • Big Design Up Front (BDUF) • The S.O.L.I.D. Principles • Continuous Integration • Single Responsibility Principle (SRP) • Convention over Configuration (CoC) • Open/Close Principle (OCP) • Domain-Driven Design (DDD) • Liskov Substitution Principle (LSP) • Don't Repeat Yourself (DRY) • Interface Segregation Principle (ISP) • Duplication is Evil (DIE) • Dependency Inversion Principle (DIP) • Domain Specific Language (DSL) • Test-Driven Design (TDD) • Fluent Interface • eXtreme Programming (XP) • Gang of Four's (GoF) Design Patterns • You Ain't Gonna Need It (YAGNI)