Saturday, February 28, 2015

You'll pay massive interest on your technical debt - careful what you borrow from the future.

When you are programming, you incur a technical debt each time you chose to defer a task that is not absolutely required in order to get a working application.

The task probably still needs to be done at some point in the future, but you have saved time and effort in the short term by deferring it. Just as with money, technical debt requires you to pay in the future for the benefit you have taken in the present.

When you do come back later and see that task waiting to be done, it's going to cost much, much more time and effort to complete, compared to the time it would have taken you to do it in the first place.

When you first saw the task, you had your head in the code. You had the context in your head of how it all fitted together, you had recently been thinking about the syntax, libraries and methods that this section of code uses. You had some sense of how risky that code would be to build, and how it interacted with other parts of the system. You had the task context in your foreground thinking.

Whereas implementing the task in the first place might have taken you an hour, completing it as a technical debt task will require you to re-learn all that context. It's going to take you ALOT more time to get all that context back into place and there's always a chance you won't be able to fully regain that context, or you'll miss something. Chances are the price of your technical debt will be many times that of the initial time and effort required to complete that task.

Choose wisely which tasks you push into your technical debt, the interest rates can be staggering.