On Technical Debt - Revisiting the Technical Mortgage
I love it when people come around :)
A money quote from Martin Fowler:
"The hypothesis has a corollary, which comes from the the design payoff line. If the functionality for your initial release is below the design payoff line, then it may be worth trading off design quality for speed; but if it's above the line then the trade-off is illusory. When your delivery is above the design payoff line neglecting design always makes you ship later. In technical debt terms it's like taking out a loan but not using the principal for so long that by the time you use it you've paid out more in interest payments."
What I think Martin is referring to here is the idea of a technical mortgage, which I talked about previously as the principle that if the life of a system is short enough, the interest payments on you technical debt will be worth the payoff of a shorter time to delivery you get when you take certain development shortcuts.
Martin Fowler actually explains the idea better than I can - I encourage you to read his post and look at his nifty graph that demonstrates the idea. I see this as real progress, as it is the first public acknowledgement by someone prominent in Agile that technical debt can be used for leverage. It is not universally bad. Just like we accept that a mortgage for a house is a perfectly acceptable way to leverage an investment, provided that the interest rate is reasonable.
The key - is to have good enough judgement to know whether the interest rate on technical debt is reasonable or not. Is the system you are building going to be a one-off transaction that you do in, say, the context of an M&A deal? Or is it a system something that you use to reconcile your general ledger year after year? There is a big difference between those two things with respect to how you should do your IT investment asset allocation - a fancier way of expressing "engineering trade off between expediency and maintainability".
The post from Fowler is timely, given that maintainability is a hot topic in the blogosphere in the last week or so, given posts from jdn, Oren Eini, Scott Bellware, and various others (update, to include a very insightful post by Jay Kimble). It is, alas, a rejection of the principle of perfection at any cost.