Technical debt is often an overlooked element of development but has far reaching implications on profit, delivery and quality of a project.

What is Technical Debt

I’ve taken the definition for my technical debt from “The Art of Agile Development“:

Technical Debt is the total amount of less-than-perfect design and implementation decisions in your project

How Technical Debt Affects Delivery

Delivery is based either on a clear delivery plan / spec or an agile approach. Either way technical debt comes about when code / design is implemented in a quick and dirty fashion, usually “when it just needs to be done”. This is quite common when Project Success isn’t considered or when there’s unrealistic pressure either coming from the client or internally.

Technical debt essentially breeds bugs. So while you may reduce an initial release deadline, you start pushing back “done done” significantly as the number of issues increases exponetially. Not only does this affect other projects by draining resounces it also pushes billing deadlines back and affects cash flow.

Project Support and Technical Debt

Even when a project’s live, the ghost of technical debt will affect the support of the project. This generally comes in the form of massively increased time estimates for relatively simple bugs. Serious technical debt can actually mean it’s cheaper and quicker to start the development on an entire section or project again, rather than fix the issues which are being logged on a daily basis.

Technical Debt and Project Success

We obviously need to refer back to what Project Success actual is to see how Technical Debt can affect this.

Reducing Technical Debt

Obviously Technical Debt is not a good thing, and with all bad thing we need to look at ways in which is it reduced, diminished or completely removed from a project.

Profit and Technical Debt

Needless to say having projects which high technical debt mean their success can be limited. Project success along with technical debts affect on being able to deliver multiple projects can severely affect the profitability of the job itself and any job which your company is working on as resources are pulled from other projects or staff get too fed up working on the same issues and it turns into a Death March Project.

Conclusion

Technical debt is pervasive. Although it would appear to only affect support of a project after go live it does in fact represent a massive risk to development efficiency on other projects, profit and a moral issue with project success.

The key to avoiding technical debt is solid foundations (no quick fixes), paired programming (i.e. peer review) and keeping vigilant.