Insights from the Lorax
Who are we?
Great Smog of '52
- What were the symptoms?
illness, transit problems from low visibility
- What were the causes?
"things that make smoke"
- What policies can mitigate the issue?
1956 Clean Air Act:
- use clean energy
- increase height of chimneys
- implement "smoke free zones"
- What is technical debt?
- What causes technical pollution?
- How do you deal with technical pollution?
"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." (Ward Cunningham)
"The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt." (Ward Cunningham)
Source: Fowler, M. 2009. Technical debt quadrant, Blog post at: http://martinfowler.com/bliki/TechnicalDebtQuadrant.html.
The monetary analogy
communicates the wrong idea.
- Single metric? No.
- Easy to measure? No.
- Constant and deterministic impact? No.
The pollution analogy
communicates the right idea.
- Multi metric? Yes.
- Difficult to measure? Yes.
- Variable and probabilistic impact? Yes.
Managing your code is more like a garden
than your bank account.
And, for your information, you Lorax, I'm figgering on biggering
turning MORE Truffula Trees into Thneeds
which everyone, EVERYONE, EVERYONE needs!
"I repeat" cried the Lorax, "I speak for the trees"
How do you deal with technical pollution?
Being "green" requires everyone on board,
BDD language communicate business requirements without the business pressure (e.g. Gherkin).
PM's need to support their Lorax.
PM's need to protect the focus of your team.
Keep business pressure out.
Plan to Refactor
Agile is prone to technical debt
because of YAGNI.
Plan to Refactor
"An excellent time to refactor code is right before you extend it." (Ward Cunningham)
Test Driven Development
Prevent pollution at the source.
Define quality and
the tolerance level of pollution.
(See phpqatools.org and phpmetrics.org)
UNLESS someone like you
cares a whole awful lot,
nothing is going to get better.
(In order of reference during presentation.)
- Dr. Seuss. The Lorax. New York: Random House, 1971. Print.
- Brown, Paul. "50 years after the great smog, a new killer arises." The Guardian, 2002.
- Cunningham, Ward. "The WyCash Portfolio Management System." c2.com, March 1992. Web. June 2015.
- Fowler, Martin. "Technical Debt Quadrant." martinfowler.com, October 2009. Web. June 2015.
- Martin, Robert C. Clean Code. Boston: Prentice Hall, 2008. Print.
- Krutchten, P. "What colour is your backlog?." pkruchten.wordpress.com, December 2013. Web. June 2015.
- Nagappan, Nachiappan, et all. "Realizing quality improvement through test driven development." Empirical Software Engineering Volume 13. Issue 3 (2008): pp 289-302. Print.
- The PHP Quality Assurance Toolchain. http://phpqatools.org.
- PhpMetrics. http://phpmetrics.org.
- All the references!
- Brooks, Fred. The Mythical Man-Month: Essays on Software Engineering . Boston: Addison-Wesley, 1975. Print.
- Gamma, Erich, et all. Design Patterns: Elements of Reusable Object-Oriented Software. Reading, Mass: Addison-Wesley, 1995. Print.
- Denne, Mark, and Jane Cleland-Huang. Software by Numbers: Low-Risk, High-Return Development. Boston: Prentice Hall, 2003. Print.
- Johann, Sven and Eberhard Wolff. "Managing Technical Debt." www.infoq.com, May 2013. Web. June 2015.
- Laribee, David. "Using Agile Techniques to Pay Back Technical Debt." msdn.microsoft.com, December 2009. Web. June 2015.
- Fowler, Martin. "Design Stamina Hypothesis." martinfowler.com, June 2007. Web. June 2015.
- Cunningham, Ward. "First Law Of Programming." c2.com, December 2014. Web. June 2015.
- Cunningham, Ward. "Ward Explains Debt Metaphor." c2.com, January 2011. Web. June 2015.
Recommended Reading Cont'd
- P. Kruchten, R. Nord, and I. Ozkaya. "Technical Debt: From Metaphor to Theory and Practice." IEEE Software, Vol. 29. Issue 6 (2012): pp. 18-21.
- A. Martini, J. Bosch, and M. Chaudron. "Architecture Technical Debt: Understanding Causes and a Qualitative Model." www.researchgate.net, September 2014. Web. June 2015.
- Ramakrishnan, Srinath. "Managing Technical Debt." www.scrumalliance.org, July 2013. Web. June 2015.
- Fowler, Martin. "Goto Fail, Heartbleed, and Unit Testing Culture." martinfowler.com, May 2014. Web. June 2015.