project reality
TRANSCRIPT
/
Controlling Complexity,Eliminating Technical Debt, &Chimera Pet-Care
Illusions of Engineering
Wednesday, September 16, 2009
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 organizations can be brought to a stand-still under the debt load of an unconsolidated implementation, object-oriented or otherwise.
Ward Cunningham:
“
”Wednesday, September 16, 2009
Technical Debt Misunderstood
Interest on technical debtis time spent on
“not-quite-right”code.
Wednesday, September 16, 2009
Technical Debt Misunderstood
I find that many developerspoorly define
“not-quite-right”
Wednesday, September 16, 2009
Technical Debt: Developer’s Perspective
Lack of elegance.Lack of extensibility.
Wednesday, September 16, 2009
Technical Debt: Engineer’s Perspective
does not meet: functional specifications;
security requirements;performance requirements.
Wednesday, September 16, 2009
Technical Debt Misunderstood
Why?
Wednesday, September 16, 2009
Technical Debt Understood
Fixing function, security or performance issues is part of
the original projecton the original budget.
Wednesday, September 16, 2009
Technical Debt Understood
New functional requirements have new budgets andthe cost of refactoringexisting components
can and mustbe included.
Wednesday, September 16, 2009
Technical Debt Understood
Choosing to not refactorwhen needed converts
technical debt intofinancial debt.
Wednesday, September 16, 2009
Technical debt as a tool
Debt is a financial instrument;
Technical debt is a software engineering instrument.
Wednesday, September 16, 2009
Technical debt as a tool
If you do not use it,you will not keep up.
If you do not manage it,it will suffocate you.
Wednesday, September 16, 2009
Safe technical debt
Lack of elegance.Lack of extensibility.
Rapid prototyping. END.
Wednesday, September 16, 2009
Typical technical debt
Lack of documentation.Lack of optimization.
Wednesday, September 16, 2009
Risky technical debt
Lack of complete function.Lack of complete tests.
Lack of architectural design.
Wednesday, September 16, 2009
Reality
80% of elegance is useful,20% is self-indulgence.
We call this part “good engineering.”
Wednesday, September 16, 2009
Reality
You likely have no idea how someone (even you)
will want to extend your code.
Wednesday, September 16, 2009
Reality
100% of premature optimization is wasteful.
Not all optimization is premature.
Good luck.
Wednesday, September 16, 2009
Reality
• Implementation averaged 25% over budget [1]
• 52.7% will cost 189% of original estimates [3]
• First year supports costs were underestimated an average of 20% [1]
• 40% failed to achieve their business case within a year of launch [1]
• 75% or more blew their schedules by over 30% [2]
• 31.1% will be canceled before they ever get completed [3]
[1] The Conference Board Survey (2001)[2] The KPMG Canada Survey (1997)[3] The Chaos Report (1995)
Wednesday, September 16, 2009
RULE I
TODOs related tofunction or securityshall not be used.
Instead tryfunction or security.
Wednesday, September 16, 2009
RULE II
Observe thePrinciple of Least Surprise
Wednesday, September 16, 2009
RULE III
Keep
It
Simple,
Stupid
Wednesday, September 16, 2009
RULE IV
If your code isn’t elegantit’s worth less.
If your code doesn’t workit’s worthless.
Wednesday, September 16, 2009
RULE V
Write functional tests.
Wednesday, September 16, 2009
RULE VI
Always use best coding practices.
Wednesday, September 16, 2009
RULE VII
Optimize everything*
* consider the optimal approach to each problem and articulately justify using anything else in comments/documentation
Wednesday, September 16, 2009
The Truth
The “Truth” issoftware engineering
is a hard balance
Wednesday, September 16, 2009
The Truth
Technical debt must be measured along side:
financial budgets,time budgets,
opportunity costs,expected project longevity.
Wednesday, September 16, 2009
Parting thought
I challenge you to be abetter engineer
and align your goalswith those of the project.
Wednesday, September 16, 2009