Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like...

25
Quality Debt Is your project going bankrupt? Presented by: Jordan Setters [email protected]

Transcript of Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like...

Page 1: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

Quality Debt Is your project going bankrupt?

Presented by:

Jordan Setters [email protected]

Page 2: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

So . . . What is “Quality Debt”

Page 3: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

Ward Cunningham: inventor of Wiki, and all around brainy guy

A Brief on “Technical Debt”

Shipping first time code is like going into debt. A little debt speeds

development so long as it is paid back promptly with a rewrite. . . . The

danger occurs when the debt is not repaid. Every minute spent on not-

quite-right code counts as interest on that debt. Entire engineering

organisation can be brought to a stand-still under the debt load of an

unconsolidated implementation, object-oriented or otherwise.

-Ward Cunningham, 1992-

Page 4: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

A Brief on “Technical Debt”

Debt can be simply broken into two parts: w  Principal:

The direct cost of fixing those structural flaws in the production system – at a minimum is a cost calculated by: •  number of hours to fix x •  fully burdened hourly cost of those

involved – design, developing, testing

Page 5: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

A Brief on “Technical Debt”

w  Interest: Continuing costs: The amount of time (therefore money) developers spend in working around known design flaws, limitations, and bugs while coding new features – i.e. inefficiency

w  See also: Project Risk, Liability, Business Risk, & Opportunity Cost

w  Note: If there is no Interest, there is NO debt.

© Planit Test Management Solutions Pty Ltd 2008

Page 6: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

A “Quality Debt” Concept

w  “Technical Debt” often doesn’t present itself into defects during the testing or use of the system - It is a debt to the developers

w  We (testers) deal with decisions that affect the quality of the system to the user - This is debt to the user / business . . . ”Quality Debt”

Page 7: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

Jordan Setters: Stylish Bass god, and the best tester in the world (according to him anyway)

A “Quality Debt” Concept

The first time code is released to production is like going into debt. A little debt speeds the project along, so long as it is paid back promptly with a rewrite. . . . The danger occurs when the debt is not

repaid. Every minute the users spend on not-quite-right functionality counts as

interest on that debt. Entire development projects can be brought to a stand-still under the debt load of bad functionality,

defects or otherwise. -Jordan Setters, 2012: shamelessly paraphrasing Ward

Cunningham -

Page 8: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

Types of Quality Debt

w  Intentional: Project makes a conscious decision to optimise for the present at the expense of the future. Characterised by decisions that include statements like: •  “If we don’t get this release done on time, there

won’t be a next one” •  “We don’t have the time to . . .” •  “We can work around by . . .” •  “We’ll clean this up later” •  “We’ll do that after go live . . . in another phase”

Page 9: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

Types of Quality Debt

w  Unintentional: These are not strategic, but are a result of people doing a bad job and is often occurred unknowingly: •  Bad Coding* •  A poor design approach •  Incomplete requirements*

Page 10: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

Be sure you are taking on the right kind of Debt

w  Some debt is taken on in large chunks: “We don’t have time to do it right, so we’ll fix it after go-live” – akin to large debt like buying a car, it can be tracked and measured.

Page 11: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

Be sure you are taking on the right kind of Debt

w  Other debt accumulates from taking hundreds of short-cuts – akin to Credit Card debt

•  Easy to incur unintentionally •  It adds up faster than you think •  It’s much harder to manage and track •  It’s interest is much more oppressive

© Planit Test Management Solutions Pty Ltd 2008

Page 12: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

Debt MUST BE SERVICED

w  There is a tipping point • Death by a thousand WTF’s

•  The debt of the hundred little inefficiencies building up, adding time and frustration to their daily tasks

•  This is “Interest” on your debt. Often not paid by the project, but paid by

the business in lost time and productivity.

Page 13: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

Debt MUST BE SERVICED

When do you know you have Problem •  A growing dislike for the system admitted by

developers, testers, and users •  Small defects never get fixed •  A bad user experience or UI is a clue it is

rotten to the core •  Growing number of workarounds •  Consistently not meeting requirements •  Lack of knowledge of what the system does

and why •  Unused features

Page 14: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

When are you in over your head •  Deep contempt for the system •  All knowledgeable developers, testers,

and SME have disavowed the system or left

•  Infrequent software releases •  Bug fixes take too long •  Lots of “Sorry”, “OMG”, “WTF”, and “$

%#&*!!” comments •  Documentation is no longer useful as a

test oracle •  Work arounds are now enshrined in

the user experience

Debt MUST BE SERVICED

Page 15: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

GMAS Example

© Planit Test Management Solutions Pty Ltd 2008

Page 16: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

Managing Debt in an Agile World

w  The way debt can be measured and dealt with in Agile • Hardening Iteration • Debt a part of product backlog

• More opportunity to payback debt before it becomes an issue

w  More likelihood of accumulating ‘credit card’ debt

© Planit Test Management Solutions Pty Ltd 2008

Page 17: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

w  “What we needs is some way to pay back. Not some way to borrow more.” -  Will Rogers

w  At any given time, the highest priority is to eliminate bugs before writing any new code.

The “Zero Defect” Mindset

© Planit Test Management Solutions Pty Ltd 2008

Page 18: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

How Do You Measure Quality Debt

w  Maintain a “Debt List” with defects w  Keep a track of the “Debt Backlog”

•  when debt is paid off, remove it from the list;

•  if a debt starts becoming “old” then increase the priority of that fix

w  Must have a useful measure to safeguard against the accumulation of “credit card” debt

Page 19: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

How Do You Measure Quality Debt

w  You can calculate a cost for Quality Debt

(((0.1 ∑ LSV) + (0.25 ∑ MSV) + (0.5 ∑ HSV)) x Time(h) x $ /hour) LSV = Low severity defect MSV = Medium severity defect HSV = High severity defect

w  CAST surveyed 745 applications and the resulting analysis determined the average Technical Debt = $3.61 per line of code.

© Planit Test Management Solutions Pty Ltd 2008

Page 20: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

Communicating Quality Debt

and software is an organisational asset, decisions to cut quality must be made by executive management and reflected in the financial statements.”

© Planit Test Management Solutions Pty Ltd 2008

Ken Schwaber (http://www.infog.com/presentations/agile-quality-canary-coalmine)

w  “For every (dollar) of competitive advantage gained by cutting quality, it costs $4 to restore it; . . .

Page 21: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

Communicating Quality Debt

w  This is a concept that immediately resonates with executives and project management

w  Presents well to both non-technical and technical stake holders alike

Page 22: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

Communicating Quality Debt

w  Should be contextualised •  Discuss in terms of money and time, rather

than features or functionality •  If you can calculate the time of workarounds,

then compare with project business case •  Compare “good debt” with “bad debt”

© Planit Test Management Solutions Pty Ltd 2008

Page 23: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

Communicating Quality Debt

w  Treat the discussion as an on-going dialogue rather than a single presentation; it may take several discussions before the nuances of the metaphor fully sink in.

© Planit Test Management Solutions Pty Ltd 2008

Page 24: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

References

Curtis, Bill. Paying Down the Interest on Your Applications: A Guide to Measuring and Managing Technical Debt. New York: CAST, 2012

McConnel, Steve. Technical Debt. www.ontechnicaldebt.com, 2007 Schwaber, Ken.

www.infog.com/presentations/agile-quality-canary-coalmine Strutz, Nathan. Holistic Program Quality and Technical Debt

(presentation). CF. Objective, 2011 Szynkarski, Alexandra. 3 Concepts to Aid Developers in Addressing

Techinical Debt. www.ontechnicaldebt.com, 2012

Page 25: Quality Debt Oct13 - ANZTB · A Brief on “Technical Debt” Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly

Appendix A: Debt Glossary

w  Technical Debt: These are the activities that a team or team members take shortcuts on now that will impede future development if let as is

w  Quality (Testing) Debt: There is a diminishing ability to verify the functional and technical quality of software: the Break/Fix mentality

w  Configuration Management Debt: Integration and release management become more risky, complex, and error-prone

w  Design Debt: The cost of adding features is increasing toward the point where it is more than the cost of writing from scratch

w  Platform Experience Debt: The availability and alignment of people to business objectives that involve software changes is becoming more limited or cost-prohibitive

w  Non Debt: Feature backlog, deferred features, cut features, etc. Not all incomplete work is debt

© Planit Test Management Solutions Pty Ltd 2008