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