michael hall three beacons [email protected] 214.783.3936 managing technical debt using agile

42
Michael Hall Three Beacons [email protected] 214.783.3936 Managing Technical Debt Using Agile

Upload: nicholas-roach

Post on 15-Dec-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

Michael Hall

Three Beacons

[email protected]

214.783.3936

Managing Technical Debt Using Agile

Page 2: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 3: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 4: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 5: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 6: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

Technical Debt

6

T or F: all technical debt is bad and should be avoided at all costs.

© Three Beacons LLC, 2011www.synerzip.com

Page 7: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 8: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

Types of Technical Debt

8© Three Beacons LLC, 2011www.synerzip.com

Page 9: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 10: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 11: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

Cost of Technical Debt

© Three Beacons LLC, 2011 11www.synerzip.com

Page 12: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 13: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

• Person

• Team

• Business

Technical Debt – impacts

13© Three Beacons LLC, 2011

1990 - 2000 2000 - 2010

CASE STUDY

www.synerzip.com

Page 14: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

Techniques forPREVENTING

Technical Debt

© Three Beacons LLC, 2011 14www.synerzip.com

Page 15: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 16: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 17: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 18: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 19: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 20: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

Techniques forManaging NEWTechnical Debt

© Three Beacons LLC, 2011 20www.synerzip.com

Page 21: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 22: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 23: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 24: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 25: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 26: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 27: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 28: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 29: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

Techniques forManaging LEGACY

Technical Debt

© Three Beacons LLC, 2011 29www.synerzip.com

Page 30: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 31: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 32: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 33: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 34: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 35: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

Conclusion

© Three Beacons LLC, 2011 35www.synerzip.com

Page 36: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 37: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 38: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

Good References

38© Three Beacons LLC, 2011www.synerzip.com

Page 39: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 40: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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

Page 41: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

Confidential

Synerzip Clients

www.synerzip.com © Three Beacons LLC, 2011

Page 42: Michael Hall Three Beacons mike@threebeacons.com 214.783.3936 Managing Technical Debt Using Agile

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