SlideShare a Scribd company logo
1 of 45
Rob Curry
robert.curry@daugherty.com
February 22, 2018
Why Isn’t Clean Coding Working For My Team?
http://agilemanifesto.org
http://manifesto.softwarecraftsmanship.org
Software Craftsmanship Extends Agile
Software Development
Agile Software Development
• Individuals and interactions
over processes and tools
• Responding to change over
following a plan
• Customer collaboration
over contract negotiation
• Working software over
comprehensive
documentation
Software Craftsmanship Extends Agile
Software Development
Agile Software Development
• Individuals and interactions
over processes and tools
• Responding to change over
following a plan
• Customer collaboration
over contract negotiation
• Working software over
comprehensive
documentation
Software Craftsmanship
• But also a community of
professionals
Software Craftsmanship Extends Agile
Software Development
Agile Software Development
• Individuals and interactions
over processes and tools
• Responding to change over
following a plan
• Customer collaboration
over contract negotiation
• Working software over
comprehensive
documentation
Software Craftsmanship
• But also a community of
professionals
• But also steadily adding
value
Software Craftsmanship Extends Agile
Software Development
Agile Software Development
• Individuals and interactions
over processes and tools
• Responding to change over
following a plan
• Customer collaboration
over contract negotiation
• Working software over
comprehensive
documentation
Software Craftsmanship
• But also a community of
professionals
• But also steadily adding
value
• But also productive
partnerships
Software Craftsmanship Extends Agile
Software Development
Agile Software Development
• Individuals and interactions
over processes and tools
• Responding to change over
following a plan
• Customer collaboration
over contract negotiation
• Working software over
comprehensive
documentation
Software Craftsmanship
• But also a community of
professionals
• But also steadily adding
value
• But also productive
partnerships
• But also well-crafted
software
What constitutes “working” for a
team?
What constitutes “working” for a
team?
• Delivering working software at the end of
every sprint or iteration?
What constitutes “working” for a
team?
• Delivering working software at the end of
every sprint or iteration?
• Reduced fear when touching legacy code?
What constitutes “working” for a
team?
• Delivering working software at the end of
every sprint or iteration?
• Reduced fear when touching legacy code?
• Institutional flexibility?
What constitutes “working” for a
team?
• Delivering working software at the end of
every sprint or iteration?
• Reduced fear when touching legacy code?
• Institutional flexibility?
• Raising the perceived level of professionalism
of the team within the organization?
And how do we determine that
software is well crafted?
And how do we determine that
software is well crafted?
• Low defect rate?
And how do we determine that
software is well crafted?
• Low defect rate?
• Few re-opened issues?
And how do we determine that
software is well crafted?
• Low defect rate?
• Few re-opened issues?
• It’s easy to make changes without breaking
other functionality?
And how do we determine that
software is well crafted?
• Low defect rate?
• Few re-opened issues?
• It’s easy to make changes without breaking
other functionality?
• High level of reliability and maintainability?
And how do we determine that
software is well crafted?
• Low defect rate?
• Few re-opened issues?
• It’s easy to make changes without breaking
other functionality?
• High level of reliability and maintainability?
• Comprehensive test coverage?
And how do we determine that
software is well crafted?
• Low defect rate?
• Few re-opened issues?
• It’s easy to make changes without breaking
other functionality?
• High level of reliability and maintainability?
• Comprehensive test coverage?
• Works “as expected”?
Track and measure what makes sense
for your team!
• As a team, you have to define this
• Whatever you choose , make sure you check
and recalibrate often to make sure you remain
on track
• Measure continuously where you can (e.g.,
every commit, every build)
• Document and communicate your definition
of “working”
Reasonable Expectations
The Code
• The intention of the developers is clear in every part of
the code
• The code has great test coverage (tests both reflect and
promote clear intent)
• The code is easy to maintain (because of great test
coverage)
• The code functions as expected (no side effects or
hidden dependencies)
• There are fewer bugs
– Bob Martin says that code that is hard to understand gets
ignored, and that’s where bugs hide.
Reasonable Expectations
The Team
• Work can be planned and delivered with greater
consistency
• Quality Assurance can focus on new business
functionality and less on regression testing
(because of great test coverage)
• It’s easier to address changing business needs,
even late in the product development process
• Improved relationships with across partnerships
as the team consistently delivers clean code
Reasonable Expectations
The Business
• has real agility with respect to changing
market conditions
• has real agility with respect to changing
technologies
• has less developer turnover
• has more cross-team collaboration
What Gets In The Way?
What Gets In The Way?
Getting Back On Track
• Knowledge (easiest to correct)
– Training: lots of options these days beyond formal
and costly training
– Pair Programming: solves lack of experience and
developers being too busy
– Clean coding techniques: address all areas
because the code is easier to understand, easier
to change, and works as expected
Getting Back On Track
• Information (discipline and standards)
– Standards for code formatting make it easier to
track and compare code changes over time
– Pair Programming and TDD: bring intention to the
forefront and promote information exchange
– Say “No” to ambiguous requirements and
impossible timelines
• Bob Martin says, “A promise to try is an admission
you’ve been holding back…”
Getting Back On Track
Attitude (very challenging to address)
• Software Craftsmanship is about committing
oneself to excellence & continuous improvement
– Use the language of commitment with your team.
• Agile principles say “Build projects around
motivated individuals”, but we don’t always have
that freedom
– Make sure the developers know how their efforts
contribute to the success of the team and the
business
– Regularly recognize individual achievements
Getting Back On Track
Attitude (continued)
• There must be zero tolerance for bad attitudes and
unprofessional behavior
– Take the individual aside – never dress someone down in front
of the team
– Face-to-face conversation is the best way to confront this
– Make every attempt to find the “real” problem – a bad attitude
is often a symptom of some deeper problem
• Cowboys & Passive/Aggressive behaviors:
– ensure standards & guidelines are in place for code style,
branching strategy, etc.
– Failure to comply/follow rules then is not an adversarial
situation and is not personal.
Getting Back On Track
Attitude (continued)
• Conduct retrospectives for every iteration
– great way to identify issues at the individual level
– this is also a time to use the language of
commitment when assigning action items
• Every heated discussion is an opportunity to
identify a problem affecting the team
• Heated discussions are never a way to solve a
problem
What Gets In The Way?
Getting Back On Track
Team Behaviors
• Relaxing discipline to meet delivery schedules is a
slippery slope; don’t do it! Message sent is that all
standards and practices are negotiable.
– Review the standards and practices and ask team to
recommit
• Treating some developers as special
– It breaks trust among the team members and business
collaborators (trust me, they’ll notice)
– Directly defeats clean coding – back to confusing code,
reduced test coverage, code duplication, unclear intention,
etc.
Getting Back On Track
Team Behaviors
• Saying Yes
– Know when to say No
– Creates a chronic problem as business comes to
expect it
– Overworked, tired developers don’t write clean code
• Refactoring – Bob Martin is clear on this: truly
clean code is hard to achieve without refactoring
– Allow for refactoring cycles in your delivery timelines
– When clean coding is working for your team, this is
easier for the business to understand and accept
What Gets In The Way?
Getting Back On Track
• Corporate Behaviors - most challenging area to fix for your
team; much of this is outside of your control
– Ambiguous priorities, constant redirection, rushing to
target can be addressed by saying “No” (to the degree that
team is empowered)
– Withheld information, communication barriers can be
mitigated by leveraging your relationships with business
partners and other teams
– Inadequate training budgets: send one or two team
members and have them share with team
– Development teams working together to share results and
success stories of clean coding with the business stand the
best chance of influencing corporate behavior
In Conclusion
In Conclusion
• The agile software development discipline of clean coding will
produce well-crafted software and promote professionalism at all
levels of a business.
In Conclusion
• The agile software development discipline of clean coding will
produce well-crafted software and promote professionalism at all
levels of a business.
• Clean coding is about more than just the code.
In Conclusion
• The agile software development discipline of clean coding will
produce well-crafted software and promote professionalism at all
levels of a business.
• Clean coding is about more than just the code.
• What is good for agile software development is good for clean
coding.
In Conclusion
• The agile software development discipline of clean coding will
produce well-crafted software and promote professionalism at all
levels of a business.
• Clean coding is about more than just the code.
• What is good for agile software development is good for clean
coding.
• What is bad for agile software development is bad for clean coding.
In Conclusion
• The agile software development discipline of clean coding will
produce well-crafted software and promote professionalism at all
levels of a business.
• Clean coding is about more than just the code.
• What is good for agile software development is good for clean
coding.
• What is bad for agile software development is bad for clean coding.
• To paraphrase Robert Martin (and the Boy Scouts), leave the code
cleaner than you found it.
• Carl Buehner – “They may forget what you said, but they will never
forget how you made them feel.”
– If you want to be recognized as being a professional, act like one, always!
In Conclusion
• The agile software development discipline of clean coding will
produce well-crafted software and promote professionalism at all
levels of a business.
• Clean coding is about more than just the code.
• What is good for agile software development is good for clean
coding.
• What is bad for agile software development is bad for clean coding.
• To paraphrase Robert Martin (and the Boy Scouts), leave the code
cleaner than you found it.
• There is much more to clean coding than can be covered in an hour.
Google is your friend–start with any name from the manifesto main
page.

More Related Content

What's hot

ISTQB Agile Extension
ISTQB Agile ExtensionISTQB Agile Extension
ISTQB Agile ExtensionDavis Thomas
 
Agile Methods: The Good, the Hype and the Ugly
Agile Methods: The Good, the Hype and the UglyAgile Methods: The Good, the Hype and the Ugly
Agile Methods: The Good, the Hype and the UglyTyrone Grandison
 
Are We Really Being Agile? (w/ Portuguese)
Are We Really Being Agile? (w/ Portuguese)Are We Really Being Agile? (w/ Portuguese)
Are We Really Being Agile? (w/ Portuguese)Richard Cheng
 
Scrum_BLR 10th meet up 13 sept-2014 - How to Measure Efficiency or Productivi...
Scrum_BLR 10th meet up 13 sept-2014 - How to Measure Efficiency or Productivi...Scrum_BLR 10th meet up 13 sept-2014 - How to Measure Efficiency or Productivi...
Scrum_BLR 10th meet up 13 sept-2014 - How to Measure Efficiency or Productivi...Scrum Bangalore
 
High Performance Software Engineering Teams
High Performance Software Engineering TeamsHigh Performance Software Engineering Teams
High Performance Software Engineering TeamsLars Thorup
 
Testing in Agile Projects
Testing in Agile ProjectsTesting in Agile Projects
Testing in Agile Projectssriks7
 
The Extreme Programming (XP) Model
The Extreme Programming (XP) ModelThe Extreme Programming (XP) Model
The Extreme Programming (XP) ModelDamian T. Gordon
 
Agile Base Camp - Agile metrics
Agile Base Camp - Agile metricsAgile Base Camp - Agile metrics
Agile Base Camp - Agile metricsSerge Kovaleff
 
Agile Testing Agile Ottawa April 2015
Agile Testing   Agile Ottawa April 2015Agile Testing   Agile Ottawa April 2015
Agile Testing Agile Ottawa April 2015Dag Rowe
 
Software Development Model for Startups
Software Development Model for StartupsSoftware Development Model for Startups
Software Development Model for StartupsMartin Verrev
 
A collaborative approach to the quality in the agile enterprise by Jaco Viljoen
A collaborative approach to the quality in the agile enterprise by Jaco ViljoenA collaborative approach to the quality in the agile enterprise by Jaco Viljoen
A collaborative approach to the quality in the agile enterprise by Jaco ViljoenIndigoCube
 
Agile software development
Agile software developmentAgile software development
Agile software developmentRajesh Piryani
 
Effectiveness of retrospective
Effectiveness of retrospectiveEffectiveness of retrospective
Effectiveness of retrospectiveSolomon Raja P.S
 
1×10 rola QA w tworzeniu Atlassian JIRA
 1×10 rola QA w tworzeniu Atlassian JIRA 1×10 rola QA w tworzeniu Atlassian JIRA
1×10 rola QA w tworzeniu Atlassian JIRA3camp
 
Agile Methodology Vs. Others by Sara Berrada
Agile Methodology Vs. Others by Sara BerradaAgile Methodology Vs. Others by Sara Berrada
Agile Methodology Vs. Others by Sara BerradaAgile ME
 
Mastering Agile Practices to Build High Performing Teams
Mastering Agile Practices to Build High Performing TeamsMastering Agile Practices to Build High Performing Teams
Mastering Agile Practices to Build High Performing TeamsAgileThought
 

What's hot (20)

ISTQB Agile Extension
ISTQB Agile ExtensionISTQB Agile Extension
ISTQB Agile Extension
 
Agile Methods: The Good, the Hype and the Ugly
Agile Methods: The Good, the Hype and the UglyAgile Methods: The Good, the Hype and the Ugly
Agile Methods: The Good, the Hype and the Ugly
 
Are We Really Being Agile? (w/ Portuguese)
Are We Really Being Agile? (w/ Portuguese)Are We Really Being Agile? (w/ Portuguese)
Are We Really Being Agile? (w/ Portuguese)
 
Agile Development Process
Agile Development ProcessAgile Development Process
Agile Development Process
 
Scrum_BLR 10th meet up 13 sept-2014 - How to Measure Efficiency or Productivi...
Scrum_BLR 10th meet up 13 sept-2014 - How to Measure Efficiency or Productivi...Scrum_BLR 10th meet up 13 sept-2014 - How to Measure Efficiency or Productivi...
Scrum_BLR 10th meet up 13 sept-2014 - How to Measure Efficiency or Productivi...
 
High Performance Software Engineering Teams
High Performance Software Engineering TeamsHigh Performance Software Engineering Teams
High Performance Software Engineering Teams
 
Testing in Agile Projects
Testing in Agile ProjectsTesting in Agile Projects
Testing in Agile Projects
 
The Extreme Programming (XP) Model
The Extreme Programming (XP) ModelThe Extreme Programming (XP) Model
The Extreme Programming (XP) Model
 
Agile Engineering Practices
Agile Engineering PracticesAgile Engineering Practices
Agile Engineering Practices
 
Agile Base Camp - Agile metrics
Agile Base Camp - Agile metricsAgile Base Camp - Agile metrics
Agile Base Camp - Agile metrics
 
Agile Testing Agile Ottawa April 2015
Agile Testing   Agile Ottawa April 2015Agile Testing   Agile Ottawa April 2015
Agile Testing Agile Ottawa April 2015
 
Software Development Model for Startups
Software Development Model for StartupsSoftware Development Model for Startups
Software Development Model for Startups
 
A collaborative approach to the quality in the agile enterprise by Jaco Viljoen
A collaborative approach to the quality in the agile enterprise by Jaco ViljoenA collaborative approach to the quality in the agile enterprise by Jaco Viljoen
A collaborative approach to the quality in the agile enterprise by Jaco Viljoen
 
Agile software development
Agile software developmentAgile software development
Agile software development
 
Effectiveness of retrospective
Effectiveness of retrospectiveEffectiveness of retrospective
Effectiveness of retrospective
 
1×10 rola QA w tworzeniu Atlassian JIRA
 1×10 rola QA w tworzeniu Atlassian JIRA 1×10 rola QA w tworzeniu Atlassian JIRA
1×10 rola QA w tworzeniu Atlassian JIRA
 
Agile Methodology Vs. Others by Sara Berrada
Agile Methodology Vs. Others by Sara BerradaAgile Methodology Vs. Others by Sara Berrada
Agile Methodology Vs. Others by Sara Berrada
 
Lean Software 101
Lean Software 101Lean Software 101
Lean Software 101
 
Mastering Agile Practices to Build High Performing Teams
Mastering Agile Practices to Build High Performing TeamsMastering Agile Practices to Build High Performing Teams
Mastering Agile Practices to Build High Performing Teams
 
What is Agile Testing?
What is Agile Testing? What is Agile Testing?
What is Agile Testing?
 

Similar to Why Isn't Clean Coding Working For My Team

Measuring Performance: See the Science of DevOps Measurement in Action
Measuring Performance: See the Science of DevOps Measurement in ActionMeasuring Performance: See the Science of DevOps Measurement in Action
Measuring Performance: See the Science of DevOps Measurement in ActionXebiaLabs
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software DevelopmentSynerzip
 
Synerzip Agile Software Development
Synerzip Agile Software DevelopmentSynerzip Agile Software Development
Synerzip Agile Software DevelopmentSynerzip
 
Top 10 Agile Metrics
Top 10 Agile MetricsTop 10 Agile Metrics
Top 10 Agile MetricsXBOSoft
 
Sdec10 lean package implementation
Sdec10 lean package implementationSdec10 lean package implementation
Sdec10 lean package implementationTerry Bunio
 
Tester’s considerations when moving towards successful CI/CD
Tester’s considerations when moving towards successful CI/CDTester’s considerations when moving towards successful CI/CD
Tester’s considerations when moving towards successful CI/CDDerk-Jan de Grood
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software DevelopmentAhmet Bulut
 
Measuring Performance: See the Science of DevOps Measurement in Action
Measuring Performance: See the Science of DevOps Measurement in ActionMeasuring Performance: See the Science of DevOps Measurement in Action
Measuring Performance: See the Science of DevOps Measurement in ActionXebiaLabs
 
Agile Gurgaon 2016 | Thinking Beyond :: Marry Agile and DevOps for Phenomenal...
Agile Gurgaon 2016 | Thinking Beyond :: Marry Agile and DevOps for Phenomenal...Agile Gurgaon 2016 | Thinking Beyond :: Marry Agile and DevOps for Phenomenal...
Agile Gurgaon 2016 | Thinking Beyond :: Marry Agile and DevOps for Phenomenal...AgileNetwork
 
Top Agile Metrics
Top Agile MetricsTop Agile Metrics
Top Agile MetricsXBOSoft
 
Baby Steps To Agility
Baby Steps To AgilityBaby Steps To Agility
Baby Steps To AgilityNaresh Jain
 
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest IrelandMarkus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest IrelandDavid O'Dowd
 
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanBehavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanQA or the Highway
 
Introduction to Agile Software Development - Eric Wu - MBAX6360 New Product D...
Introduction to Agile Software Development - Eric Wu - MBAX6360 New Product D...Introduction to Agile Software Development - Eric Wu - MBAX6360 New Product D...
Introduction to Agile Software Development - Eric Wu - MBAX6360 New Product D...Eric Wu
 
XebiCon'17 : //Tam-tams// Voici l’histoire de la disparition des dinosaures d...
XebiCon'17 : //Tam-tams// Voici l’histoire de la disparition des dinosaures d...XebiCon'17 : //Tam-tams// Voici l’histoire de la disparition des dinosaures d...
XebiCon'17 : //Tam-tams// Voici l’histoire de la disparition des dinosaures d...Publicis Sapient Engineering
 
Webinar: Demonstrating Business Value for DevOps & Continuous Delivery
Webinar: Demonstrating Business Value for DevOps & Continuous DeliveryWebinar: Demonstrating Business Value for DevOps & Continuous Delivery
Webinar: Demonstrating Business Value for DevOps & Continuous DeliveryXebiaLabs
 
Software Agility.pptx
Software Agility.pptxSoftware Agility.pptx
Software Agility.pptxZaid Shabbir
 

Similar to Why Isn't Clean Coding Working For My Team (20)

Measuring Performance: See the Science of DevOps Measurement in Action
Measuring Performance: See the Science of DevOps Measurement in ActionMeasuring Performance: See the Science of DevOps Measurement in Action
Measuring Performance: See the Science of DevOps Measurement in Action
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
Synerzip Agile Software Development
Synerzip Agile Software DevelopmentSynerzip Agile Software Development
Synerzip Agile Software Development
 
Top 10 Agile Metrics
Top 10 Agile MetricsTop 10 Agile Metrics
Top 10 Agile Metrics
 
Sdec10 lean package implementation
Sdec10 lean package implementationSdec10 lean package implementation
Sdec10 lean package implementation
 
Tester’s considerations when moving towards successful CI/CD
Tester’s considerations when moving towards successful CI/CDTester’s considerations when moving towards successful CI/CD
Tester’s considerations when moving towards successful CI/CD
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
Measuring Performance: See the Science of DevOps Measurement in Action
Measuring Performance: See the Science of DevOps Measurement in ActionMeasuring Performance: See the Science of DevOps Measurement in Action
Measuring Performance: See the Science of DevOps Measurement in Action
 
Agile Gurgaon 2016 | Thinking Beyond :: Marry Agile and DevOps for Phenomenal...
Agile Gurgaon 2016 | Thinking Beyond :: Marry Agile and DevOps for Phenomenal...Agile Gurgaon 2016 | Thinking Beyond :: Marry Agile and DevOps for Phenomenal...
Agile Gurgaon 2016 | Thinking Beyond :: Marry Agile and DevOps for Phenomenal...
 
Top Agile Metrics
Top Agile MetricsTop Agile Metrics
Top Agile Metrics
 
Baby Steps To Agility
Baby Steps To AgilityBaby Steps To Agility
Baby Steps To Agility
 
Are you Agile enough?
Are you Agile enough?Are you Agile enough?
Are you Agile enough?
 
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest IrelandMarkus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
 
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanBehavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
 
Introduction to Agile Software Development - Eric Wu - MBAX6360 New Product D...
Introduction to Agile Software Development - Eric Wu - MBAX6360 New Product D...Introduction to Agile Software Development - Eric Wu - MBAX6360 New Product D...
Introduction to Agile Software Development - Eric Wu - MBAX6360 New Product D...
 
Test i agile projekter af Gitte Ottosen, Sogeti
Test i agile projekter af Gitte Ottosen, SogetiTest i agile projekter af Gitte Ottosen, Sogeti
Test i agile projekter af Gitte Ottosen, Sogeti
 
XebiCon'17 : //Tam-tams// Voici l’histoire de la disparition des dinosaures d...
XebiCon'17 : //Tam-tams// Voici l’histoire de la disparition des dinosaures d...XebiCon'17 : //Tam-tams// Voici l’histoire de la disparition des dinosaures d...
XebiCon'17 : //Tam-tams// Voici l’histoire de la disparition des dinosaures d...
 
Fundamentals of Agile
Fundamentals of AgileFundamentals of Agile
Fundamentals of Agile
 
Webinar: Demonstrating Business Value for DevOps & Continuous Delivery
Webinar: Demonstrating Business Value for DevOps & Continuous DeliveryWebinar: Demonstrating Business Value for DevOps & Continuous Delivery
Webinar: Demonstrating Business Value for DevOps & Continuous Delivery
 
Software Agility.pptx
Software Agility.pptxSoftware Agility.pptx
Software Agility.pptx
 

Recently uploaded

Uncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoUncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoKayode Fayemi
 
Zone Chairperson Role and Responsibilities New updated.pptx
Zone Chairperson Role and Responsibilities New updated.pptxZone Chairperson Role and Responsibilities New updated.pptx
Zone Chairperson Role and Responsibilities New updated.pptxlionnarsimharajumjf
 
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfAWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfSkillCertProExams
 
Dreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIIDreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIINhPhngng3
 
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...amilabibi1
 
Report Writing Webinar Training
Report Writing Webinar TrainingReport Writing Webinar Training
Report Writing Webinar TrainingKylaCullinane
 
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfSOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfMahamudul Hasan
 
My Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle BaileyMy Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle Baileyhlharris
 
Dreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video TreatmentDreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video Treatmentnswingard
 
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven CuriosityUnlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven CuriosityHung Le
 
lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lodhisaajjda
 
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...David Celestin
 
Digital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalDigital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalFabian de Rijk
 
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...ZurliaSoop
 
Introduction to Artificial intelligence.
Introduction to Artificial intelligence.Introduction to Artificial intelligence.
Introduction to Artificial intelligence.thamaeteboho94
 

Recently uploaded (17)

Uncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoUncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac Folorunso
 
Zone Chairperson Role and Responsibilities New updated.pptx
Zone Chairperson Role and Responsibilities New updated.pptxZone Chairperson Role and Responsibilities New updated.pptx
Zone Chairperson Role and Responsibilities New updated.pptx
 
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfAWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
 
Dreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIIDreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio III
 
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
 
Report Writing Webinar Training
Report Writing Webinar TrainingReport Writing Webinar Training
Report Writing Webinar Training
 
in kuwait௹+918133066128....) @abortion pills for sale in Kuwait City
in kuwait௹+918133066128....) @abortion pills for sale in Kuwait Cityin kuwait௹+918133066128....) @abortion pills for sale in Kuwait City
in kuwait௹+918133066128....) @abortion pills for sale in Kuwait City
 
ICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdfICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdf
 
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfSOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
 
My Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle BaileyMy Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle Bailey
 
Dreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video TreatmentDreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video Treatment
 
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven CuriosityUnlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
 
lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.
 
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
 
Digital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalDigital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of Drupal
 
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
 
Introduction to Artificial intelligence.
Introduction to Artificial intelligence.Introduction to Artificial intelligence.
Introduction to Artificial intelligence.
 

Why Isn't Clean Coding Working For My Team

  • 1. Rob Curry robert.curry@daugherty.com February 22, 2018 Why Isn’t Clean Coding Working For My Team?
  • 2.
  • 5. Software Craftsmanship Extends Agile Software Development Agile Software Development • Individuals and interactions over processes and tools • Responding to change over following a plan • Customer collaboration over contract negotiation • Working software over comprehensive documentation
  • 6. Software Craftsmanship Extends Agile Software Development Agile Software Development • Individuals and interactions over processes and tools • Responding to change over following a plan • Customer collaboration over contract negotiation • Working software over comprehensive documentation Software Craftsmanship • But also a community of professionals
  • 7. Software Craftsmanship Extends Agile Software Development Agile Software Development • Individuals and interactions over processes and tools • Responding to change over following a plan • Customer collaboration over contract negotiation • Working software over comprehensive documentation Software Craftsmanship • But also a community of professionals • But also steadily adding value
  • 8. Software Craftsmanship Extends Agile Software Development Agile Software Development • Individuals and interactions over processes and tools • Responding to change over following a plan • Customer collaboration over contract negotiation • Working software over comprehensive documentation Software Craftsmanship • But also a community of professionals • But also steadily adding value • But also productive partnerships
  • 9. Software Craftsmanship Extends Agile Software Development Agile Software Development • Individuals and interactions over processes and tools • Responding to change over following a plan • Customer collaboration over contract negotiation • Working software over comprehensive documentation Software Craftsmanship • But also a community of professionals • But also steadily adding value • But also productive partnerships • But also well-crafted software
  • 11. What constitutes “working” for a team? • Delivering working software at the end of every sprint or iteration?
  • 12. What constitutes “working” for a team? • Delivering working software at the end of every sprint or iteration? • Reduced fear when touching legacy code?
  • 13. What constitutes “working” for a team? • Delivering working software at the end of every sprint or iteration? • Reduced fear when touching legacy code? • Institutional flexibility?
  • 14. What constitutes “working” for a team? • Delivering working software at the end of every sprint or iteration? • Reduced fear when touching legacy code? • Institutional flexibility? • Raising the perceived level of professionalism of the team within the organization?
  • 15. And how do we determine that software is well crafted?
  • 16. And how do we determine that software is well crafted? • Low defect rate?
  • 17. And how do we determine that software is well crafted? • Low defect rate? • Few re-opened issues?
  • 18. And how do we determine that software is well crafted? • Low defect rate? • Few re-opened issues? • It’s easy to make changes without breaking other functionality?
  • 19. And how do we determine that software is well crafted? • Low defect rate? • Few re-opened issues? • It’s easy to make changes without breaking other functionality? • High level of reliability and maintainability?
  • 20. And how do we determine that software is well crafted? • Low defect rate? • Few re-opened issues? • It’s easy to make changes without breaking other functionality? • High level of reliability and maintainability? • Comprehensive test coverage?
  • 21. And how do we determine that software is well crafted? • Low defect rate? • Few re-opened issues? • It’s easy to make changes without breaking other functionality? • High level of reliability and maintainability? • Comprehensive test coverage? • Works “as expected”?
  • 22. Track and measure what makes sense for your team! • As a team, you have to define this • Whatever you choose , make sure you check and recalibrate often to make sure you remain on track • Measure continuously where you can (e.g., every commit, every build) • Document and communicate your definition of “working”
  • 23. Reasonable Expectations The Code • The intention of the developers is clear in every part of the code • The code has great test coverage (tests both reflect and promote clear intent) • The code is easy to maintain (because of great test coverage) • The code functions as expected (no side effects or hidden dependencies) • There are fewer bugs – Bob Martin says that code that is hard to understand gets ignored, and that’s where bugs hide.
  • 24. Reasonable Expectations The Team • Work can be planned and delivered with greater consistency • Quality Assurance can focus on new business functionality and less on regression testing (because of great test coverage) • It’s easier to address changing business needs, even late in the product development process • Improved relationships with across partnerships as the team consistently delivers clean code
  • 25. Reasonable Expectations The Business • has real agility with respect to changing market conditions • has real agility with respect to changing technologies • has less developer turnover • has more cross-team collaboration
  • 26. What Gets In The Way?
  • 27. What Gets In The Way?
  • 28. Getting Back On Track • Knowledge (easiest to correct) – Training: lots of options these days beyond formal and costly training – Pair Programming: solves lack of experience and developers being too busy – Clean coding techniques: address all areas because the code is easier to understand, easier to change, and works as expected
  • 29. Getting Back On Track • Information (discipline and standards) – Standards for code formatting make it easier to track and compare code changes over time – Pair Programming and TDD: bring intention to the forefront and promote information exchange – Say “No” to ambiguous requirements and impossible timelines • Bob Martin says, “A promise to try is an admission you’ve been holding back…”
  • 30.
  • 31. Getting Back On Track Attitude (very challenging to address) • Software Craftsmanship is about committing oneself to excellence & continuous improvement – Use the language of commitment with your team. • Agile principles say “Build projects around motivated individuals”, but we don’t always have that freedom – Make sure the developers know how their efforts contribute to the success of the team and the business – Regularly recognize individual achievements
  • 32. Getting Back On Track Attitude (continued) • There must be zero tolerance for bad attitudes and unprofessional behavior – Take the individual aside – never dress someone down in front of the team – Face-to-face conversation is the best way to confront this – Make every attempt to find the “real” problem – a bad attitude is often a symptom of some deeper problem • Cowboys & Passive/Aggressive behaviors: – ensure standards & guidelines are in place for code style, branching strategy, etc. – Failure to comply/follow rules then is not an adversarial situation and is not personal.
  • 33. Getting Back On Track Attitude (continued) • Conduct retrospectives for every iteration – great way to identify issues at the individual level – this is also a time to use the language of commitment when assigning action items • Every heated discussion is an opportunity to identify a problem affecting the team • Heated discussions are never a way to solve a problem
  • 34. What Gets In The Way?
  • 35. Getting Back On Track Team Behaviors • Relaxing discipline to meet delivery schedules is a slippery slope; don’t do it! Message sent is that all standards and practices are negotiable. – Review the standards and practices and ask team to recommit • Treating some developers as special – It breaks trust among the team members and business collaborators (trust me, they’ll notice) – Directly defeats clean coding – back to confusing code, reduced test coverage, code duplication, unclear intention, etc.
  • 36. Getting Back On Track Team Behaviors • Saying Yes – Know when to say No – Creates a chronic problem as business comes to expect it – Overworked, tired developers don’t write clean code • Refactoring – Bob Martin is clear on this: truly clean code is hard to achieve without refactoring – Allow for refactoring cycles in your delivery timelines – When clean coding is working for your team, this is easier for the business to understand and accept
  • 37. What Gets In The Way?
  • 38. Getting Back On Track • Corporate Behaviors - most challenging area to fix for your team; much of this is outside of your control – Ambiguous priorities, constant redirection, rushing to target can be addressed by saying “No” (to the degree that team is empowered) – Withheld information, communication barriers can be mitigated by leveraging your relationships with business partners and other teams – Inadequate training budgets: send one or two team members and have them share with team – Development teams working together to share results and success stories of clean coding with the business stand the best chance of influencing corporate behavior
  • 40. In Conclusion • The agile software development discipline of clean coding will produce well-crafted software and promote professionalism at all levels of a business.
  • 41. In Conclusion • The agile software development discipline of clean coding will produce well-crafted software and promote professionalism at all levels of a business. • Clean coding is about more than just the code.
  • 42. In Conclusion • The agile software development discipline of clean coding will produce well-crafted software and promote professionalism at all levels of a business. • Clean coding is about more than just the code. • What is good for agile software development is good for clean coding.
  • 43. In Conclusion • The agile software development discipline of clean coding will produce well-crafted software and promote professionalism at all levels of a business. • Clean coding is about more than just the code. • What is good for agile software development is good for clean coding. • What is bad for agile software development is bad for clean coding.
  • 44. In Conclusion • The agile software development discipline of clean coding will produce well-crafted software and promote professionalism at all levels of a business. • Clean coding is about more than just the code. • What is good for agile software development is good for clean coding. • What is bad for agile software development is bad for clean coding. • To paraphrase Robert Martin (and the Boy Scouts), leave the code cleaner than you found it. • Carl Buehner – “They may forget what you said, but they will never forget how you made them feel.” – If you want to be recognized as being a professional, act like one, always!
  • 45. In Conclusion • The agile software development discipline of clean coding will produce well-crafted software and promote professionalism at all levels of a business. • Clean coding is about more than just the code. • What is good for agile software development is good for clean coding. • What is bad for agile software development is bad for clean coding. • To paraphrase Robert Martin (and the Boy Scouts), leave the code cleaner than you found it. • There is much more to clean coding than can be covered in an hour. Google is your friend–start with any name from the manifesto main page.