Embracing Tech Debt as a Team #

Working on a product team always has two primary goals: figuring out what you are building and when you can deliver those features. Ideally, the team maintains its delivery velocity indefinitely. As an engineer, you’re delivering, but something starts to feel off. Features become harder to implement, and there’s a refactoring you’ve been putting off. Eventually, you realize you can’t keep delivering as you once did.

You’ve encountered the all-too-familiar challenge of technical debt.

It’s tempting to look for someone to blame:

But pointing fingers won’t help. Technical debt is a symptom of a team struggling to prioritize. Your team needs to create space for addressing its needs. Some tasks are essential, while others can wait, and the key is to focus on what’s truly important.

A product manager’s job is to say, “Let’s deliver features. How do we get there?” It’s up to engineering to figure out the best way to achieve this. Remember, the product manager is on your team to help accomplish the same goals. Please include them in your mindset and process, and don’t place blame on one person for any group setbacks. Work together to improve and resolve issues.

Tech debt can seem like an intimidating and undefined obstacle. We’ve accepted that our products will never be “finished,” We’ll keep refining them through continuous delivery. But too often, tech debt gets pushed into a “save it for later” category. Instead, let’s change our perspective and remove the negative connotation.

Think of code maintenance as gardening. It will grow beautiful if we consistently prune, replant, and tend to our code. There’s no such thing as a one-day fix for a gardener because it would be inefficient for the long-term care of the garden.

Maintaining code should be a regular part of the development process, and you can help your team overcome its tech debt by continuously keeping it in mind. So let’s embrace it together and cultivate a thriving, collaborative environment for everyone involved.