Imagine you have just discovered a gap in the market, and you have an exciting opportunity to release software to service this market's needs. The only catch? Time is not on your side and you need to jump at it quickly.
Or, you've just had an amazing idea of how your business could create software that would save you 100 man hours per month, naturally you want to launch it ASAP.
In both these situations time is not on your side, and neither is technical debt.
Wait, technical debt? What debt!?
What is technical debt?
Technical debt refers to the future difficulties a company will 'pay' for the benefit of implementing software development solutions quickly (immediate benefit). When code is created on a tight deadline it's written with the easiest solution in mind, satisfying the short term goals, rather than the best overall solution (which costs time in the short term).
It's catch 22, like financial debt. If the debt is not paid (revising the code in the future) it will accumulate interest (changes will get harder and harder to make). You borrow against the future to get what you want in the moment – your software.
And this is not uncommon! Infact, every software development project has some level of technical debt – it accrues in many different ways:
- Deliberate compromise – we will opt for the quick fix now and amend it later
- Business pressures
- Lack of documentation (resulting in more work later)
- Insufficient testing
- Lack of clarity in the scope of the project
- Lack of collaboration between developers
- Lack of (developer's) ability
- Last minute specification changes
- Engineers cannot predict the future, so they sometimes build parts which no longer fit
- The understanding of the problem becomes more clear, thus the solution evolves as the software is being built
How does it affect my business?
If left unpaid, technical debt will slow down your ability to implement changes as it increases the difficulty of future improvements. This means increased time and money spent updating your software. Also, no one likes their job being made 10 times harder, so it might be hard to find people willing to work with your software!
The cost of technical debt depends on the amount of shortcuts quality, and ill predictions in the code, as well as how fast your software is developing. Also, mistakes compound over time, so if you try and "code around" these areas it just creates more debt.
However, it's important to note that getting into technical debt is not a bad thing, it's a trade-off. It's important to be aware that you will need to account for it in your business decisions later.
As a rule of thumb, if you are in rapid growth you should be dedicating more time than you probably already are, if you are growing slowly (or not at all) you can afford to spend less time 'working on your debt' as it's not your biggest problem, and if you have software but don't know what technical debt is, you might already be in trouble!
What are the signs of technical debt?
When your software isn't working properly, there is some technical debt to be paid! This could manifest in the form of:
- The time it takes to fix software issues gets slower and slower
- The same errors keep occurring
- The application is getting slower to use
- The errors are getting more and more difficult to solve
How do you get rid of it?
Let's say you have already had your eureka moment, launched your software quickly and your product is now in use, and you have now discovered you have a pile of technical debt to pay – how do you pay it?
Unfortunately, fixing the code that is compromised is the only way out of this debt! Hence why it is best incur the least amount of technical debt possible when creating your software, to keep the amount of time and resources you need to spend servicing technical debt to a minimum.
As an incentive for you to take technical debt seriously, a realistic, long term consequence of incurring too much debt is your business will eventually spend more time (and money) servicing the debt (just keeping the application up and running), than you will on increasing its value (new features)!
How can I avoid it to begin with?
As with most things a clear vision helps you, and those around you, stay on track and understand the common goal.
At Lancom we use (and highly recommend) the working backwards approach, which we discuss with Warwick Eade our Founder and Managing Director, as well as DeskDirector's Founder and CEO on this episode of Lancom TV.
As a brief recap, the key idea of the working backwards approach is to imagine you have already created the software and are about to release it. Write the press release and FAQ for your software. This works two fold in giving you clarity in your vision, as well as giving your software developer clarity and scope of the final product.
This will help minimise debt incurred through lack of project scope, lack of understand and by reducing the chance of any minute specification changes.
Other than that, if you have the luxury of time – take it!
The purpose of this post was not to scare you out of software development, but it is important to understand the concept and have it on your radar before going into your project. This will help you reduce costs through allowing you to decide how much technical debt you want to take on by understanding how it is incurred, and recognise when you need to pay up!