michael hall three beacons [email protected] 214.783.3936 managing technical debt using agile
TRANSCRIPT
Premise
2© Three Beacons LLC, 2011
“All known compound objects decay and become more complex with the passage of time. Software is no exception.”
www.synerzip.com
What is Technical Debt?
3© Three Beacons LLC, 2011
• “Technical Debt” term coined by Ward Cunningham in 1992
• Also called “design debt”
• Choosing a design or construction approach that is expedient
• But increases complexity and is costlier in the long term
www.synerzip.com
The Debt Metaphor
4© Three Beacons LLC, 2011
• Use a credit card to obtain something now
• Pay for it later - financial debt
• Plus interest
(short term)
(future payment due)
(the cost of being able to do this)
www.synerzip.com
Technical Debt
5
• The consequences of:
slapdash architecture
poor design
hasty coding (versus rapid)
lack of quality focus
others?
The danger occurs when the debt is not repaid quickly. Every minute spent on not-quite-right code results in interest on that debt.
© Three Beacons LLC, 2011www.synerzip.com
Technical Debt
6
T or F: all technical debt is bad and should be avoided at all costs.
© Three Beacons LLC, 2011www.synerzip.com
Types of Technical Debt
7© Three Beacons LLC, 2011
An outline to use when discussing technical debt
1. Unintentional
2. Intentional
A. Short-term
B. Long-term
www.synerzip.com
Types of Technical Debt
8© Three Beacons LLC, 2011www.synerzip.com
Technical debt quadrant
9© Three Beacons LLC, 2011
INTENTIONAL
UNINTENTIONAL
RECKLESS PRUDENT
“We don’t have time to mess with coding standards.”
“There is a standard way of doing this?”
“We will ship on time and revise the quick fix as our top priority in the next release.”
“We now know what to avoid.”
*
www.synerzip.com
Technical debt quadrant
10© Three Beacons LLC, 2011
* Short-term: Only if the commitment is there to schedule, prioritize, and fix soon (e.g. in the next sprint).
Long-term: Only if the commitment is there to sponsor projects to resolve the debt.
If you must take on technical debt for valid reasons, then “respect the asterisk”.
www.synerzip.com
Cost of Technical Debt
© Three Beacons LLC, 2011 11www.synerzip.com
Technical Debt - impact
12
“The all too common problem is that development organizations let their debt get out of control and spend most of their future development effort paying crippling interest payments.”
- Jeff Atwood, www.codinghorror.com Programming and Human Factors
© Three Beacons LLC, 2011
CASE STUDY
www.synerzip.com
• Person
• Team
• Business
Technical Debt – impacts
13© Three Beacons LLC, 2011
1990 - 2000 2000 - 2010
CASE STUDY
www.synerzip.com
Techniques forPREVENTING
Technical Debt
© Three Beacons LLC, 2011 14www.synerzip.com
1. Draw the Line
15© Three Beacons LLC, 2011
Culture shift:
• From this day forward …
• We no longer allow technical debt!
• Only exception: tactical or strategic
business justification
• Even then, we “respect the asterisk” *
www.synerzip.com
2. Strong “Definition of Done”
• Things to consider: Coding standards adherence
Code reviews
Static analysis
Dynamic purification
Complexity analysis
Written unit tests
0 known bugs
100% test cases pass
Test cases automated
Etc.
• Visible for User Story
Sprint
Release
© Three Beacons LLC, 2011 16www.synerzip.com
3. Test-Driven Development
TDD: write test, fail the test, then write code to pass the test. Refactor when needed.
Develop higher quality streamlined code!
© Three Beacons LLC, 2011 17www.synerzip.com
4. Collaborative Designs
• Whiteboard sessions on design topics
• Leverage collective experience of the team
• Wisdom of the crowd
• User Design Studio
• Less reliance on subject-matter experts
• Etc.
Increase the chance of an optimal design!
© Three Beacons LLC, 2011 18www.synerzip.com
Recap
• Draw the line!
• Strong definition of done
• TDD
• Collaborative designs
© Three Beacons LLC, 2011 19
Use these agile techniques to help prevent technical debt
www.synerzip.com
Techniques forManaging NEWTechnical Debt
© Three Beacons LLC, 2011 20www.synerzip.com
1. Debt Backlog
21© Three Beacons LLC, 2011
• Used when technical debt is business justified
• Tracks debt by name
• Lists work tasks associated with each debt
• Includes an estimate
• Tracks the commitment to fix schedule
• Form: product backlog entries, separate Excel
spreadsheet, special designation in defect DB,
tool entry, sticky notes, etc.
• Helps to keep the debt service level visible!
Track the debt as you go!
www.synerzip.com
Debt Backlog - example
22© Three Beacons LLC, 2011
Debt Backlog - My Natural Healer iPhone App
Debt Business Justification Sprint Incurred Estimate Work Items Commitment NoteVariable names preceded with "email" even though email is only part of their use
Confusion factor is not currently there, but will be in the future. sprint 2 1 week
Change variable names to more meaningful names. sprint 3 DONE
Duplicate code for displays in Remedy Controller and Favorites view
Meet early May release schedule, willing to accept cost of double maintenance for now. sprints 3 - 4 3 weeks
New file to contain common methods for remedy display, change existing code to conform
Release 1.1 - expected out in July 2010
Servicing this debt may push the SEARCH
function out to a later release.
The same method handles both designating and undesignating a favorite
Too risky to do right before the customer milestone demo sprint 6 2 weeks
Bust out undesignate into separate method, add logic to parts of code to know which method to invoke Sprint 7, possibly sprint 8
www.synerzip.com
2. Automatic Payment Plan
23© Three Beacons LLC, 2011
• Pay as you go
• Slow team’s velocity down to service the debt as
it is incurred
• Include technical debt items in upcoming sprints
• As quickly as feasible
• In line with fulfilling commitment made when
debt was justified
Service the debt as you go! Keep it as close to $0 as possible.
www.synerzip.com
3. Makeup Stories
24
• “Makeup”: a story that apologizes to the code base
And promises to fix it!
• Placeholder indicating non-user story work
For when you incur technical debt
For any reason you circumvented quality
Use a different color card (red or pink is good)
• Add it to the product backlog
• Prioritize into next sprint (if possible)
Good way to track technical debt.
© Three Beacons LLC, 2011www.synerzip.com
Makeup Stories - example
25© Three Beacons LLC, 2011
Who DescriptionEstimate (Hours)
Remaining (Hours) Notes
User loginChris Login window 8 4
Hide password 2 2John Verify login id is correct 16 0 i/f with Security systemJohn Verify password is correct 16 12 i/f with Security system
Alert and log if incorrect 8 8Chris Block after 3 incorrect tries 24 0 Log occurrence to "watch file"
Launch main window if correct 4 4
Refactor and improve Connection Timeout Technical debt itemMona Framework services API change 8 2Mark Adjust code to use system timers 40 20
Display main windowBala, Tim Query DB for video connections 32 0 Bala to do DB arch
Tim Establish connections 16 16Display sub-tiles according to user config 64 64
Research competitionIdentify main competitors 40 40
Paul Gap analysis 120 80Document and share market differentiators 80 80
Amy Brief marketing and sales teams 16 0
Total hours 494 332Total relative points from product backlog 43 43
www.synerzip.com
4. Adopt a Debt!
26
User Story Makeup Story
© Three Beacons LLC, 2011
Good way to insure that makeup stories get worked.
• “Adopt” approach
• If a user story leverages the debt area,
“adopt” the debt card as part of the user
story effort
• Add the makeup story estimate into the user
story
www.synerzip.com
5. Dedicated Sprint to Service Debt
27© Three Beacons LLC, 2011
• Similar to a “bugfix sprint”
• Do this only if really needed
Preponderance of business debt occurring during
project
Team concerned about debt growth
Upcoming features rely on code that has debt
• Or, combine for a bugfix/debt sprint
Periodically pay down your debt throughout the project!
www.synerzip.com
Recap
• Debt backlog
• Service the debt commitment
• Makeup stories
• Adoption
• Dedicated debt sprint
© Three Beacons LLC, 2011 28
Use these agile techniques to manage new technical debt
www.synerzip.com
Techniques forManaging LEGACY
Technical Debt
© Three Beacons LLC, 2011 29www.synerzip.com
1. Re-Do Project
30© Three Beacons LLC, 2011
• Business decides on a total re-design and re-write
• Happens rarely, hard to justify
• Hard for execs to see the value
• Often timed with new technology introduction
• How to insure that the new system is really better?
Rigorous quality plan
Strong Definition of Done
Iterative development
Feedback loops
Inspect & adapt
Watchful eyes
Not an answer: “better people”
www.synerzip.com
2. “Small Chunks” Approach
• Smaller chunks of effort
• In conjunction with normal dev flow
• Can work well across an API abstraction
• Often requires an architectural assessment
• Can require code changes to other parts of
legacy base (risky)
• Happens more often than Re-Do projects
• Must insure end result is worth the effort!
© Three Beacons LLC, 2011 31www.synerzip.com
3. 70/30 Rule
32
• 70% - new user stories
• 30% - paying down the debt of a legacy system
• Rule can also be used to manage new technical debt
• Helps to have a PO with history of the legacy system
• Socialize that legacy improvements are part of this
project!
Ask for commitment
Ask to be held accountable
Do your part
Ask others to continue the tradition
70 30
© Three Beacons LLC, 2011www.synerzip.com
4. “While There” Rule
• While adding a new feature
• Any legacy function modified for the feature must be
rewritten according to quality plan
Variable names
Coding guidelines
Braces alignment
Etc.
• Works well for support team also (while fixing bugs)
• CAUTION: may introduce bugs
Final thought on case study:• We improved almost 50% of the 4M LOC• Significant drop in critical defects reported from customers
• But, we introduced at least 10 new bugs on existing functionality• Each time – required additional justification to continue the effort
© Three Beacons LLC, 2011 33www.synerzip.com
Recap
• Re-Do project
• Small chunks approach
• 70/30 rule
• “While there” rule
© Three Beacons LLC, 2011 34
Use these agile techniques to manage legacy technical debt
www.synerzip.com
Conclusion
© Three Beacons LLC, 2011 35www.synerzip.com
36© Three Beacons LLC, 2011
“Developers know their code has technical debt, but they feel powerless to stop adding to it.”
– David Rooney, “Technical Debt: Challenging the Metaphor”
A Sobering Thought
There is hope – using Agile.
www.synerzip.com
37© Three Beacons LLC, 2011
“Take my advice: go well, not fast. Care about your code. Take the time to do things right. In software, slow and steady wins the race; and speed kills.
– Robert C. Martin (Uncle Bob), president of Object Mentor and agile methods author
Managing Technical Debt - conclusion
www.synerzip.com
Good References
38© Three Beacons LLC, 2011www.synerzip.com
Questions?
www.synerzip.com
Hemant Elhence, [email protected]
Agile Software Product Development Partner
39
www.threebeacons.com Short/Long term Agile coaching
Facilitated improvement
Agile Methods training:Scrum Team Training
Agile / ScrumUser Stories – Requirements w/ Agility
Product Owner RoleScrumMaster Role
Etc.All courses can be delivered onsite at your location
Michael Hall, [email protected]
www.synerzip.com © Three Beacons LLC, 2011
Confidential
Synerzip in a Nut-shell
1. Software product development partner for small/mid-sized technology companies
Exclusive focus on small/mid-sized technology companies, typically venture-backed companies in growth phase
By definition, all Synerzip work is the IP of its respective clients Deep experience in full SDLC – design, dev, QA/testing, deployment
2. Dedicated team of high caliber software professionals for each client
Seamlessly extends client’s local team, offering full transparency Stable teams with very low turn-over NOT just “staff augmentation”, but provide full mgmt support
3. Actually reduces risk of development/delivery Experienced team - uses appropriate level of engineering discipline Practices Agile development – responsive, yet disciplined
4. Reduces cost – dual-shore team, 50% cost advantage5. Offers long term flexibility – allows (facilitates) taking
offshore team captive – aka “BOT” optionwww.synerzip.com © Three Beacons LLC, 2011
Confidential
Synerzip Clients
www.synerzip.com © Three Beacons LLC, 2011
Thank You!
www.threebeacons.com
Michael [email protected]
214.783.3936
www.synerzip.com
Hemant [email protected]
469.322.0349
Agile Software Product Development Partner
Call Us for a Free Consultation!
42www.synerzip.com © Three Beacons LLC, 2011