It's now been a year since I attended YAPC::NA 2006 in Chicago with Brian Miller and the talk that we've spoken of most frequently, and cited most usefully in our work, was "Get Out of Technical Debt Now!" by Andy Lester.
Most of the concepts and examples he gave were not new to us, nor to most of the attendees, I think. But his debt analogy made a coherent story out of ideas, maxims, and experiences that were previously too disjointed and differently labeled to pull together into a single comprehensible motivational package.
Are we out of technical debt? Not yet. I suppose we never will be entirely as long as we continue to work, since it's impossible to avoid accruing some new debt. But prioritizing debts and paying off those with the highest "interest rate" and benefit means we don't need to despair.
I highly recommend everyone read Andy's slides, watch the video (one version has the slides incorporated), and read the Portland Pattern Repository wiki page on technical debt. Do all three, spread out over a few months, to re-motivate and remind yourself in the busy haze of daily work.
Other reading on technical debt:
- Why Expensive Bugs are Cheap to Fix by Curtis Poe
- Technical Debt post on Martin Fowler's wiki
- A list of 7 sources of technical debt, including "code isolated in branches" which is insightful
- Kane Mar's article on technical debt and the death of design
- Don't live with broken windows, an interview with Andy Hunt and Dave Thomas
- An Incremental Technique to Pay Off Testing Technical Debt by Johanna Rothman