The ever increasing bill to pay by our children.

What is Technical Debt

Technical Debt is what happens when you neglect to spend appropriate time on research and understanding the problem domain to appease someone with an even lesser undestanding of the problem domain, when they have called on you to solve their specific need.

It happens both when you lack the confidence in your abilities and when you have an overconfidence in your abilities. Both propensities imply an inability or an unwillingness to test your implementation or ask for outside counsel.

Causes of Technical Debt

Over-engineering

Over-engineering is when a particular solution is overly-complex for the problem for which it is intended. An overly complex solution leads to an increasing maintenance burden and an inability to re-engineer the solution to match a changing problem.

The reasons for over-engineering can partly arise due to unexperience, where a complex solution is chosen due to either marketing or convincing of equally inexperienced persons. It can also arise due to inexisting requirements leading to engineering a solution to a problem that was never there to be solved.

Under-engineering

Under-engineering is almost the polar opposite, where a solution is not sufficient to solve the problems that it has been put in place for. It can also happen when an existing solution is adapted to solve a different problem for which it is inherently unsuited for.

How to pay down Technical Debt

Technical Debt is something that will always be present in any organisation. In order to maintain your debt levels at an appropriate level you need to constantly spend efforts to pay it down. This is achieved by reviewing cases of over-engineering and removing parts that are not necessary. In cases of under-engineering the cases for which it is less suited need to be reviewed and brought up in budget discussions early to receive appropraite funding.