Wednesday, October 14, 2015

Technical Debt

I've seen the term "technical debt" come up at least a dozen times in the past week, so I had to write a comic about it. I first heard this concept described about 9 years ago. We were preparing a demonstration of a system at work, and one of the components was not ready. To make the system function end-to-end for the demo, one of the members of the team created a mocked-up version of it that consumed inputs and produced outputs well enough to fool the rest of the components into functioning. The problem was that to the viewers of the demonstration it looked like we had already solved all the hard problems that should have been contained inside that component.

We made it clear what the actual state of the system was during the demo (and like most demos, I think it crashed while being presented). If we hadn't explicitly explained the situation to the customers, they may have concluded that the system was much more mature than it was in actuality. In such a scenario we could have incurred a great amount of technical debt, as there would have been pressure to ship the product before it was complete. In this example, the potential technical debt seemed like just plain old deception to me. But analogous to monetary debt, it could also be thought of as just taking out a loan. A loan of confidence in the development team. If we couldn't pay it back, we'd all end up in Technical Debtors Prison.

I know now that technical debt has many more flavors to it, and it's not always a bad thing. At the beginning of any project, the technical debt is the greatest. You have nothing but a promise to deliver a working system. As time goes on, hard work and smart decisions should pay back the debt. It might ship before the debt is completely paid off, but the next release can pay off a little bit more.

Similarly, I owe this blog some code. I haven't done much development outside of work in the past week, but hopefully that changes soon. In the mean time, continue to enjoy my comics and accept my I.O.U. for more software development examples and instruction.

Amphibian.com comic for 14 October 2015