Ways DevOps helps with tech debt

Sam Moulem
Sainsbury’s Tech Engineering
3 min readOct 26, 2020

Many organisations uncover mountains of tech debt (or technical debt) during their journey to the cloud.

What is tech debt and how can DevOps help deal with it?

In this post, we discuss a couple of ways DevOps can grind down your tech debt mountain.

What is tech debt?

Tech debt is the accumulation of sub-optimal technical decisions made overtime.

According to Wikipedia it “reflects the implied cost of additional rework caused by choosing an easy (limited) solution now instead of using a better approach that would take longer.”

Eventually, it gets harder to change things; IT initiatives grind to a halt.

For example, poor state management in an application can make horizontal scaling harder to implement.

Before you can do what you really want (horizontally scale your application) you need to re-write portions of the code.

Tech debt can occur in operations too. Still running an out-of-date OS that’s no longer supported?

Not keeping your servers patched and up to date?

That’s tech debt.

Is tech debt always bad?

Well, it depends. Martin Fowler’s tech debt quadrant makes the point that sometimes tech debt is inadvertent.

Sometimes, the only way to learn whether you have a viable product is to launch it and get feedback from your customers. That may mean that you make suboptimal choices and thus incur technical debt.

How can DevOps address the tech debt challenge?

1. Create DevOps product teams

One of the key tenets of DevOps is creating small, multidisciplinary teams who own the entire lifecycle of a product, from ‘inception to retirement’.

Because these teams feel the impact of tech debt, they are highly motivated to pay it back to make life easier.

Simple things can help teams tackle tech debt

An assessment of the tech debt in your products is the first step.

Label the work items to distinguish them.

Keeping 20% of a sprint committed to tech debt is a good starting point.

In every retro, keep prioritising repayment work until your team is happy that tech debt is not a blocker achieving goals.

Also, try to avoid creating more tech debt in new product development.

2. Build shared self-service platforms

Organisations increasingly build shared self-service platforms. These platforms avoid the tech debt of having to maintain toolchains.

Platform teams might be the ‘maintainers’ of their platform service; however, code repositories must be open to contributions.

Contributions usually involve a pull request.

3. Use automation to repay tech debt

Inherent to the DevOps culture is the heavy use of automation. Services platforms are often toolchains for product teams to use.

Infrastructure-as-code enables you to express precisely how you want the environment to be.

Time not spent troubleshooting snowflakes environments can be invested into paying back even more tech debt.

4. Use containers to simplify app deployment

As with environment management automation, containers can help simplify everything.

Containers orchestration tools like Kubernetes, by enabling automation of the container lifecycle, free DevOps teams to focus on higher value tasks.

5. An API-centric model

Encouraging teams to build and consume APIs is a great way to reduce tech debt.

Each product needs to adhere to a published API, with clear future roadmap.

All this adds up to less fragility and therefore less tech debt.

Conclusion

DevOps practices, like using CI/CD pipelines, enables teams to move faster with less risk and less tech debt.

Code pipelines also provide end-to-end traceability of application code. This makes it easier to manage technical debt and helps to focus tech debt repayment efforts.

--

--