Learning to make long-term decisions is perhaps the hardest part of the tech scale-up journey.
Naturally, you still need to respond and adapt to of-the-moment customer needs. But as you move away from the start-up phase, you also need to place greater emphasis on product and technology planning.
Tackling technical debt that could pose problems in the future is central to this.
We’ve written a lot about the different circumstances that can lead to technical debt. There are times when it is inevitable, even desirable, that speed of software development is prioritised over quality. (Check out this blog which looks at deliberate vs inadvertent and reckless vs prudent technical debt).
Whatever the story behind technical debt, it needs to be identified and managed. Bad debts need to be singled out and rectified before they come back to haunt you.
In our work with scale-ups, we find four types of technical debt routinely cause friction as a business and its processes get bigger and more complex. The longer they’re ignored, the harder it gets to resolve them, and the more damage they can cause.
Common technical debts that could harm your scale-up
Test coverage debt
Research into start-ups shows this is the area where most debt is accumulated and, despite attempts to automate, manual testing is still the norm. Small teams with relatively straightforward software can work quite effectively in this way. But testing rapidly becomes a problem as teams get bigger and software grows more complex.
Code quality debt
While testing may be the most common form of technical debt in start-ups, code quality has the highest impact on productivity. Dag Liodden, successful co-founder and CTO of Tapad, says this can be avoided through continuous refactoring, and that development teams should be accountable for cleaning up bad code as they incrementally improve the product.
“Balance thinking ahead and future-proofing with simplicity and quick delivery.”Dag Liodden
There are plenty of open source tools available to automate detection of ‘code smells’, so consider investing here if you suspect this to be an issue.
This debt is common in small teams where everyone has been deeply involved in the development and knows all the quirks and nuances of the system. It’s unlikely to cause problems in the short term, but resolving it has to be a priority before the team grows.
Documentation debt becomes a constraint in the time-to-effectiveness for new team members. As a business scales, this escalates exponentially if it’s not addressed. Worse still, it has the knock-on effect of introducing design debt where existing software is poorly understood.
The concept of technical debt increasingly extends into infrastructure, especially as infrastructure starts to look more like software. Snowflakes are uniquely configured infrastructure components (virtual machines, networks etc.) that aren’t written as code or managed through source control.
If this sounds familiar, it’s worth sorting it out at the earliest opportunity. Environment creation is usually the first constraint that needs to be resolved as the software delivery process is optimised. What’s more, according to 2018 Accelerate: State of DevOps, teams using infrastructure as code are 1.8x more likely to be ‘elite performers’.
How DevOps can rectify technical debt
Each of these technical debts causes problems in the day-to-day efficiency and effectiveness of teams. They might not directly result in a catastrophic failure. But they eat away at productivity, job satisfaction and value delivery. So, they hinder progress and don’t allow the business to reach its full potential.
The implementation of DevOps techniques is an opportunity to repay technical debts like these and improve processes to avoid future problems. It spans everything from shared self-service platforms which improve quality and consistency to as-code automation which can cut time spent troubleshooting snowflakes. Our CTO Steve Thair has blogged about some of the ways in which DevOps can help with technical debt here.
Tech scale-up leaders have a lot on their plate, from securing finance to developing skills to cornering new markets. But ensuring the underlying infrastructure has the resilience to support future growth has to be a top priority. Otherwise, you may find you’ve built a house of cards.