Each development project will encounter technical debt, simply due to the nature of how fast technology is progressing. Technical debt is not something to be afraid of, similar to running a healthy cash flow, technical debt has to be managed and can even be leveraged to make use of market opportunities. Let’s dig in and discuss further how to handle technical debt.
Every choice taken during the development process has an effect down the line. For instance, quick and dirty solutions may be suitable for meeting short-term objectives, but may need proper rework in the long term. Like any debt it must be paid back and interest will be due, and the longer you wait, the more it will be. At later stages in a project, this often means having to invest more hours to get something developed than it should. For example a mobile website was developed parallel to a traditional desktop website but never unified. As a result, any change requires twice the man hours to update both. Understanding when to take on debt, when to pay the interest and when to pay off the entire debt is key to financial success, the same applies to product development and maintenance.
The goal with any project should never be to avoid technical debt or be free of technical debt, this is simply not feasible and will likely drain your resources pursuing the wrong target. Instead, it is important to make the choices ahead of time that make sense for your product and timing to market. As a start-up, cash and time are limited, and the priority is to ship a product, yet avoid causing problems down the road when you might have to scale up quickly when your product does well.
Testing and QA is one of the key areas to make decisions in. You could test your product and pursue the perfect solution, yet never release anything, or choose an approach where it is accepted that there will be some bugs that can be resolved down the road. Testing time is a resource too and limited by nature. When releasing a new feature, you may want to go with as “as is” approach knowing there are limitations, then put more resources into it should it prove popular.
As your development progresses and grows, some debt gets accrued naturally. A common case is when scaling up and refactoring of base code becomes required. Another example is when multiple developers work on the same piece of software, different dependencies are added and as a result refactoring is required to bring it all together. While these are fairly harmful examples, more serious examples can be related to quality of code, poor on no documentation at all. These might not even be a problem right away but troubles may appear once new developers start working on the project and have the figure out how things work from scratch.
Quantifying technical debt is difficult at the best of times, and there is no set scale to measure them. One way to keep track of how you are doing is check the velocity of how fast these are fixed, compared to how fast new features are shipped. Test coverage can also be a secondary tool to help identify problems early. Making dealing with technical dept part of every sprint, even if it is just a small part percentage wise, will help avoid problems long term. A good product manager should discuss mid to long term effects of code and design decisions with the engineering team and get direct feedback. This is often the earliest indication that something needs extra attention. It will also keep your development team happy, as having to work on archaic systems on a daily basis without making much progress in one of the biggest morale killers.
Taking on technical debt is not to be feared but should be managed well, with choices that make sense in the long term. Taking a step back and understanding the wider needs of your project is the first step to understanding the particulars of technical debt in your development cycle. Having a dedicated team that is committed to the project and communicating on a regular basis is the best way to tackle technical debt and avoid it piling up to something unmanageable. Our PM’s and devs here atEnbi are well versed in managing, reducing and avoiding technical debt, and reach out to us to discuss your situation and needs. We’re always happy to chat!