Technical debt is a lot like gardening
Table of Contents
In the world of software development, technical debt is a common challenge that teams face.
Technical debt referes to the “cost” of rushing things, and taking shortcuts. Especially when we’re trying to rush things out the door, either because the deadline is tighter than expected, or because change management wasn’t properly handled, and suddenly the budget is blown, and you’re only halfway through the project, and you have to make a choice: do you cut corners, and take on technical debt, or do you ask for more time and money to do it right?
The analogy of gardening
As I’ve been spending a lot of time in my garden lately, for a variety of reasons, I realized that technical debt, is just like gardening, there are weeds in my lawn, the longer I procrastinate taking care of them, the more they grow, and spread, and the harder it becomes to get rid of them.
I could spray them with pesticides, but that’s another shortcuts, that’s not sustainable, I’m now contaminating the soil, and the water, and the air. however but pulling them out by hand, and making sure I get the roots, that’s a lot of work, so I have to make a choice: do I take the easy way out, and spray them with pesticides, or do I put in the time and manual labor.
What I should’ve done is to have a regular maintenance schedule, where I check for weeds, maybe once a week, and pull them out before they have a chance to grow and spread.
Technical debt is exactly the same if I had a regular code review process, and a culture of quality, I could catch technical debt early on, and address it before it becomes a bigger problem.
How to manage technical debt with a gardening mindset
So, how do we manage technical debt with a gardening mindset?
My perspective is bias, as I’ve spent my entire career in the consulting world, and that’s a place where technical debt tends to be more prevalent, because of the nature of the work, and the way projects are structured,they have a start and and end date, where as if you had your own in-house team, you would have more of a continuous development process, and you would be able to address technical debt as it comes up, rather than letting it build up over time.
But even in the consulting world, there are ways to manage technical debt with a gardening mindset, and these are my takes on how you should consider approaching technical debt, and how to manage it effectively:
It’s all about responsibility and accountablilty lots of consultants will say things like “oh, they didn’t specifically ask for that”, or “that’s not in the scope of work”, but at the end of the day, if you know that something is going to cause technical debt, and you’re not addressing it, then you’re just as responsible for it as the client is.
As a consultant
So, if you see a weed in your lawn, or your customers lawn and you know that it’s going to spread, and cause more problems down the line, you have a responsibility to pull it out, even if it’s not technically in your job description.
And if you’re not going to pull it out, then you have a responsibility to at least warn the client about it, and make sure they understand the consequences of not addressing it.
As a client
Make sure you have a frank and honest conversation with your consultants about technical debt, and make sure they understand that you expect them to take responsibility for it, and to address it as it comes up, rather than letting it build up over time.
And make sure they feel like they’re part of the team, and that they’re invested in the success of the project, rather than just being a vendor that’s there to do a job, and then leave.
If they’re not willing to take that responsibility, then maybe you need to reconsider whether they’re the right partner for you.
Conclusion
Technical debt when working with consultants is hard, because you need to have a culture of quality, and a mindset of continuous improvement, and that’s not always easy to achieve when you’re working with an external partner, that’s focused on deliverables, timelines, and budgets.
Make sure you find a partner that’s invested in the success of not just the project, but also in the long-term health of your organization, and your long term success, and that they understand that technical debt is a real problem, and that they’re willing to take responsibility for it, and address it as it comes up, rather than letting it build up over time.
TL;DR
Technical debt is a lot like gardening, if you let it build up, it becomes harder and harder to manage, and it can cause a lot of problems down the line.
Make sure you keep on top of it, and make sure everyone feels responsible, and accountable, and that you have a culture of quality, and a mindset of continuous improvement, and that you’re working with partners that are invested in your long-term success, and that understand the importance of managing technical debt effectively.