41
Technical Debt for the Non-Technical Demystifying the challenges of continuous software development.

Technical Debt for the Non Technical

Embed Size (px)

DESCRIPTION

Presentation given at Agile 2013 in Nashville, TN on Technical Debt. Title: "Technical Debt for the Non-Technical" Description: Demystify challenges in continuous software development by learning the importance of addressing Technical Debt. Hear real world examples and situations to relate the jargon filled technical world of software development to every day life using Technical Debt as a metaphor referring to the eventual consequences of poor or evolving software architecture and software development. Understand short term and long term impacts of uncompleted changes within a codebase, and most importantly, learn techniques on how to address it. Leave with a new perspective and ideas on how to explain it to others.

Citation preview

Page 1: Technical Debt for the Non Technical

Technical Debt for the Non-Technical

Demystifying the challenges of continuous software development.

Page 2: Technical Debt for the Non Technical

Agenda

What is Technical Debt Real World Examples How much Debt can a Project Handle Technical Bankruptcy How to deal with Technical Debt

Page 3: Technical Debt for the Non Technical

Maria Matarelli

@MariaMatarelli

Meet the Presenters

Collin Fagan

#Agile2013

Page 4: Technical Debt for the Non Technical

Industry thoughts about “Technical Debt”

• “We have time honored traditions in our profession for increasing our velocity under pressure. We drop quality.”

• Ken Schwaber – Founder of Scrum.org

• “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.”

• Martin Fowler – Coauthor of ‘The Agile Manifesto’

• The Ticking Time Bombing Of Technical Debt• David Norton – Research Director Gartner

• Technical Debt Is Now Costing Us $3.61 Per Line Of Code• Jonathan Bloom – CAST software

This is an industry wide issue.

Page 5: Technical Debt for the Non Technical

“Technical Debt” is a metaphor for software quality modeled on monetary debt.

What is “Technical Debt”?

Page 6: Technical Debt for the Non Technical

… but as we all know, “Time is money”.

“Interest payments” are made with time.

Page 7: Technical Debt for the Non Technical

But what “IS” Technical debt?

Can we relate this to real life?

Page 8: Technical Debt for the Non Technical

Can you read this?

Real world examples of “Technical Debt”

Aoccdrnig to rscheearch at Cmabrigde Uinervtisy, it deosn't mttaer in waht oredr the ltteers in a wrod are, the olny iprmoetnt tihng is taht the frist and lsat ltteer be at the rghit pclae. The rset can be a toatl mses and you can sitll raed it wouthit a porbelm. Tihs is bcuseae the huamn mnid deos not raed ervey lteter by istlef, but the wrod as a wlohe.

Page 9: Technical Debt for the Non Technical

How about this?

Real world examples of “Technical Debt”

Rreuscion is the pescros a perucdore geos thurgoh when one of the spets of the prcdoeure ivnleovs iovkning the pordcerue isltef. A porceurde that geos tghruoh rorecuisn is said to be 'rrcesiuve'.

Page 10: Technical Debt for the Non Technical

This paragraph is too complex and the ‘rule’ does not work.

Real world examples of “Technical Debt”

Recursion is the process a procedure goes through when one of the steps of the procedure involves invoking the procedure itself. A procedure that goes through recursion is said to be 'recursive'.

Page 11: Technical Debt for the Non Technical

Is there something missing? Is this good enough?

Real world examples of “Technical Debt”

Page 12: Technical Debt for the Non Technical

If all you ever did was sit in the driver seat, would you ever know?

Real world examples of “Technical Debt”

Page 13: Technical Debt for the Non Technical

How does this happen?

Page 14: Technical Debt for the Non Technical

Martin Fowler’s Technical Debt Quadrant

We don’ t have t ime to do

things r ight.

We must ship now and deal

wi th the consequences.

What’s software design?

Now we know what we should

have done.

Reckless Prudent

Deliberate

Inadvertent

Page 15: Technical Debt for the Non Technical

How much debt can a project handle?

Page 16: Technical Debt for the Non Technical

Real world examples of not paying your “Technical Debt”

Housework

Page 17: Technical Debt for the Non Technical

Real world examples of not paying your “Technical Debt”

Hoarders

Page 18: Technical Debt for the Non Technical

Real world examples of not paying your “Technical Debt”

Hoarders

Page 19: Technical Debt for the Non Technical

Technical Bankruptcy

Page 20: Technical Debt for the Non Technical

For the software to mature and grow you MUST pay your debt.

Page 21: Technical Debt for the Non Technical

“When you get in debt you become a slave.”

- Andrew Jackson

Page 22: Technical Debt for the Non Technical

Types of Technical Debt

Are there more types?

Technical Debt

Implementation

Architectural

Testing

Deployment

Information/Knowledge

Page 23: Technical Debt for the Non Technical

How to deal with existing “Technical Debt”

Acknowledge your debt

Page 24: Technical Debt for the Non Technical

How to deal with existing “Technical Debt”

Track it

Page 25: Technical Debt for the Non Technical

The Debt List

Simple low-tech starting point.

Page 26: Technical Debt for the Non Technical

Sonar: The spell checker of programming languages.

Automated static analysis.

Page 27: Technical Debt for the Non Technical

How to deal with the Technical Debt you already have.

• Make little “payments” over time.• Try to commit at least some time in a sprint to

eliminating technical debt.

• If you need the time, take the time.• Involve the team, get creative.

• Start with everything you can do first. • Put the impossible off for later.

Every little bit helps.

Page 28: Technical Debt for the Non Technical

How to deal with existing “Technical Debt”

Start Paying it Now!

Page 29: Technical Debt for the Non Technical

Avoiding “Technical Debt”

Dodging that bullet.

Page 30: Technical Debt for the Non Technical

Avoiding “Technical Debt”

Refine you definition of ‘DONE’

DONE

Development

Unit Testing

Appropriate Documentation

Functional Testing

Code Review

Deployment

Page 31: Technical Debt for the Non Technical

Avoiding “Technical Debt”

Discuss the consequences of “Good Enough”

Page 32: Technical Debt for the Non Technical

Avoiding “Technical Debt”

Negotiate scope, not quality.

Page 33: Technical Debt for the Non Technical

Avoiding “Technical Debt”

Empower teams to succeed, not just deliver.

Page 34: Technical Debt for the Non Technical

Avoiding “Technical Debt”

Understand your complexity budget.

Page 35: Technical Debt for the Non Technical

Avoiding “Technical Debt”

Build ‘T’ shaped skills by cross training

Page 36: Technical Debt for the Non Technical

Make it easy to do the right thing.

Page 37: Technical Debt for the Non Technical

In Summary Acknowledge your debt Track it Deal with what you already have - Pay it now! Avoid it

Page 38: Technical Debt for the Non Technical

Avoiding Technical Debt

Refine definition of “DONE” Discuss the consequences of “Good Enough” Negotiate Scope, not quality Empower teams to succeed, not just deliver Understand your complexity budget Build ‘T’ shaped skills by cross training

Page 39: Technical Debt for the Non Technical

For the software to mature and grow you MUST pay your debt.

Page 40: Technical Debt for the Non Technical

Q & A

Page 41: Technical Debt for the Non Technical

Contact Us

Maria Matarelli http://www.bevilledge.com

[email protected]

@MariaMatarelli

www.linkedin.com/in/mariamatarelli

Collin Fagan

[email protected]

www.linkedin.com/in/collinfagan