Technical Debt for the Non Technical

Preview:

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

Technical Debt for the Non-Technical

Demystifying the challenges of continuous software development.

Agenda

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

Maria Matarelli

@MariaMatarelli

Meet the Presenters

Collin Fagan

#Agile2013

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.

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

What is “Technical Debt”?

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

“Interest payments” are made with time.

But what “IS” Technical debt?

Can we relate this to real life?

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.

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'.

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'.

Is there something missing? Is this good enough?

Real world examples of “Technical Debt”

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

Real world examples of “Technical Debt”

How does this happen?

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

How much debt can a project handle?

Real world examples of not paying your “Technical Debt”

Housework

Real world examples of not paying your “Technical Debt”

Hoarders

Real world examples of not paying your “Technical Debt”

Hoarders

Technical Bankruptcy

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

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

- Andrew Jackson

Types of Technical Debt

Are there more types?

Technical Debt

Implementation

Architectural

Testing

Deployment

Information/Knowledge

How to deal with existing “Technical Debt”

Acknowledge your debt

How to deal with existing “Technical Debt”

Track it

The Debt List

Simple low-tech starting point.

Sonar: The spell checker of programming languages.

Automated static analysis.

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.

How to deal with existing “Technical Debt”

Start Paying it Now!

Avoiding “Technical Debt”

Dodging that bullet.

Avoiding “Technical Debt”

Refine you definition of ‘DONE’

DONE

Development

Unit Testing

Appropriate Documentation

Functional Testing

Code Review

Deployment

Avoiding “Technical Debt”

Discuss the consequences of “Good Enough”

Avoiding “Technical Debt”

Negotiate scope, not quality.

Avoiding “Technical Debt”

Empower teams to succeed, not just deliver.

Avoiding “Technical Debt”

Understand your complexity budget.

Avoiding “Technical Debt”

Build ‘T’ shaped skills by cross training

Make it easy to do the right thing.

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

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

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

Q & A

Contact Us

Maria Matarelli http://www.bevilledge.com

Maria.Matarelli@BevillEdge.com

@MariaMatarelli

www.linkedin.com/in/mariamatarelli

Collin Fagan

Collin.Fagan@nokia.com

www.linkedin.com/in/collinfagan