It's Christmas. Let us borrow money and have fun

Tuesday, December 04, 2007 11:46:30 AM (Romance Standard Time, UTC+01:00)

At this time of year we are constantly tempted to borrow money for spending more for Christmas. Money-lenders offer us one-click-loan on the internet or even so called SMS- loans on the mobile and shops are trying to persuade us with “buy now – do not pay until March” offers.

Most of us do not fall for the temptation. We may have tried it once, and know that after the short pleasure of being able to spend, comes the long pay-back period, where our freedom are much more limited than it otherwise would be.

When it comes to software development, we are also at times confronted with the same kind of temptation, especially close to some kind of deadline.  We may not be completely finished with what we should do, and when looking for a way out, we may think why not borrow a little?

There are many ways to borrow in developing software; generally we do it by lowering the bar a little and not doing things exactly as they should be done. We may create a solution that does not cover all required usages, we may make a shortcut  we know will cause us a performance penalty later or we may simply skip some of the testing we normally know to be good engineering practice. In this way we create technical debt in our product. Unfinished work your organization owes your product, as Preston Smith defines it in his book “Flexible Product Development”

Those who have tried to ship a software-product know this temptation. Most of us have fallen for it, at least once.  We also know how painful paying back is. The really strange thing is that many software developers and even more  software managers apparently does not learn from that experience.

If we stretch the Christmas analogy a little further, one of the things that are different with technical loans in the software, is that we do not know exactly when payback is due. There is no guarantee that you can wait until after Christmas, in this case the deadline. Some of the shortcuts you have taken may come back to you, at the most unpleasant time, where you thought, that now you were going to ship.  Also you do not know the interest rate – the only thing you know from experience is that it is high. Almost always higher than you expect. The cost of fixing a problem after the software has been delivered to customers is sizes of magnitude larger, than what is was, when you decided to take the loan.

It may very well even be so, that you never will be able to pay back in full.  You may for the life of the system, be paying the interest, which is a larger than necessary cost on future development,  and never have the surplus to actually be able to start reducing the debt.

If investors or buyers are smart when looking at your company, they will look at the size of the technical debt, with the same scrutiny as they use when examining  the financial data, since they know that a large technical debt, may mean that what looks like a promising company, actually is more like a sinking wreck,  only able to stay floating with a tremendous effort and thus with little potential for growth and future profits.

By Bent Jensen