Technical Debt for the Non Technical
-
Upload
maria-matarelli -
Category
Technology
-
view
1.281 -
download
2
description
Transcript of Technical Debt for the Non Technical
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
@MariaMatarelli
www.linkedin.com/in/mariamatarelli
Collin Fagan
www.linkedin.com/in/collinfagan