Technical debt is something that most project teams or independent developers have to deal with – we take shortcuts to push out releases, deadlines need to be met, quick fixes slowly become the standard. In this talk, we will discuss what technical debt is, when it is acceptable and when it isn’t, and strategies for effectively managing it, both on an independent and team level.
6. “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 non-quite-right code counts as
interest on that debt.”
--Ward Cunningham, 1992
7. “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 non-quite-right code counts as
interest on that debt.”
--Ward Cunningham, 1992
8. “I think that there were plenty of cases where people
would rush software out the door and learn things but
never put that learning back into the program, and
that by analogy, was borrowing money thinking that
you never had to pay it back.... eventually all your
income goes to interest and your purchasing power
goes to zero.”
--Ward Cunningham, 1992
9. “I think that there were plenty of cases where people
would rush software out the door and learn things but
never put that learning back into the program, and
that by analogy, was borrowing money thinking that
you never had to pay it back.... eventually all your
income goes to interest and your purchasing power
goes to zero.”
--Ward Cunningham, 1992
10. 1. What is
Technical Debt?
Code or practices
that will
hinder your progress
in the future.
11. 1. What is
Technical Debt?
Code or practices
that will
hinder your progress
in the future.
12. 2. Why should we
care?
Too much technical debt
can cripple your team
or organization.
13. 2. Why should we
care?
Too much technical debt
can cripple your team
or organization.
14. 3. What can we do
about it?
Easy there, tiger.
We’ll get to that.
20. You have technical
debt if you have...
Suppressed errors.
(Psst. This doesn’t really
make the error go away. I’ve
tried.)
21. You have technical
debt if you have...
Confusing code, inconsistencies
& workarounds
22. You have technical
debt if you have...
Confusing code, inconsistencies
& workarounds
How much time has been
wasted trying to sort
through spaghetti code?
30. You have technical
debt if you have...
•Non-existent or improperly used VCS.
•Unstable deployment process.
•Individual code ownership.
•Lack of documentation.
•Unshared knowledge.
•Third party code that needs updated/patched
47. This could come from:
•inexperienced team members
•changing project
requirements
•post-release retrospectives
•security patches or updates
from third parties
48. This kind of debt
is known as
inadvertent
technical debt.
49. 4 ways to classify
technical debt:
prudent vs. reckless
deliberate vs. inadvertent
65. Break Down
What do we do with this mass of technical debt?
All debt breaks down into 2 categories:
1. Debts where we continue to pay interest.
2. Debts where we pay on the principal.
72. Paying it Off
Dedicate time.
• Use time right after a release
• Tech debt iteration/sprint
• Time each day for tech debt
• Refactor as you go
• Use off-season time
• Designated Debt Payer
75. Prevention
• Break past habits
• Group consensus & commitment
• Teach your “children” well
• Never file for bankruptcy
• Live within your means
• Anticipate your needs
82. Want to contact me?
http://naramore.net/blog
@ElizabethN
elizabeth@naramore.net
Freenode IRC: ElizabethN
THANKS!
Image used with permission from Martin Fowler