Stretching the "Tech Debt" Metaphor, Part 2: Escaping the hole

Click here for Part 1: Calculated Risk vs Desperation

So you’re in trouble. You’ve looked around, asked your experts, and you’re in the tech debt hole. Depending on how you respond, this could either be very bad, or the best thing that ever happened to your company. After lots of experience, conversations with colleagues, and study, I’ve found some strategies that tend to work.

Be ready to accept defeat

I’m not being dismissive or pithy - I do mean “accept that success might not be possible”. I’ve seen companies that acknowledge they’re in deep trouble, do everything right from that point on, and still fail. That’s the nature of business. Doing things “right” is only a modifier that makes success more likely. Take a sobering and honest assessment of the situation. This will get you in the mentality that the future of your business is on the line. This is not the time for optimism or grandiose thinking. This is the time to fight like your business depends on it.

Examine how you got here, then change

Let’s get this out of the way - your developers didn’t dig this hole on their own. Developers HATE throwing an unending stream of bandaid fixes into code and calling it “good enough”. No, they got into this mess because they were repeatedly told “we need this done fast”, “we promised Mr X this would be done by <date>”, or some variation thereof. That needs to change. Remember, software developers aren’t assembly line workers . They’re professionals with years of training and experience. Make every new feature & deadline go through your senior architect (or lead developer, or whatever their job title). Somebody who works with the code on a daily basis, and can tell you if a deadline or feature is unrealistic. Consider them the Word of God. If you don’t have one of those people, get one yesterday. You’ve probably got some good candidates working for you already.

Don’t go on a hiring spree

It’s easy to succumb to the temptation to go on a hiring spree to just throw more developers at the problem. Resist this temptation at all costs. Read The Mythical Man-Month instead (it will be a far better use of your time, trust me). Hiring will slow you down. Developers will take time to get up-to-speed. It may be months before they start making meaningful contributions. Given your already considerable debt problems, throwing bodies at it will only make the problem worse.

Cut up your credit cards

You have to do what everyone should when they find themselves in a debt spiral - cut up your credit cards. This means a prolonged period of no new features, and devoting as much energy as possible to getting your house in order. If that means you won’t be able to close a Big Client, tough. Remember, you can’t afford new features right now. “But we need Big Client” - tough. You can’t afford new features right now. Consider this a wakeup call. You’re in desperate trouble, and the solution isn’t gonna be “keep doing the very thing that caused this problem in the first place”.

Cut liabilities

Just like when you are forced to cut up your credit cards, tech debt problems require you to tighten your belt. This means cutting features. First up are the features that never get used. Next to be culled are ones that cost more than they provide in revenue. Cut features until it hurts, then cut some more. The name of the game is streamlining. Pick the most important two or three features, and everything revolves around them. That’s your minimum viable product. If Feature X makes your minimum viable product more difficult, Feature X is gone. Doesn’t matter who wants it - sales people, executive team, investors, etc. People who want features that get in the way are not trying to help your business. Remember, you’re trying to run a viable company, not build an empire. (Note: if you are trying to build an empire, you need to seek professional help to curtail your delusions of grandeur. Even Caesar himself had an entire Roman Republic to serve as the foundation for his Empire)

Reinforce “fixing the problem” as the #1 priority

The instant somebody with decision-making power in your organization says “we’ve gotta put the fixes on the backburner for a little bit so we can implement feature X/release this new product/etc”, all hope is lost. Not only does it become easier to do the same thing next time, it sends a clear signal to the entire company that fixing the systemic problems in the organization is not the highest priority. People pick up on that, and the problem just gets worse. It needs to be reinforced, every day, that the top priority in everyone’s minds must be making your product better. How you do that is up to you. The important thing is that you do not waiver from that goal.

Be ready to accept defeat

I know I said this already, but it’s so important that it’s worth repeating. No matter what you do, there is a non-trivial chance you will fail. The odds of failure are already high for a business. Getting mired in tech debt just stacks the odds against you even further. So get ready to make some painful sacrifices and shake things up. Very, very few businesses have ever gone from being in dire trouble to successful by refusing to make changes. If you’re banking on that, buy a lottery ticket instead. Treat this as an opportunity to realign the company. This doesn’t mean defeat is assured. Far from it. You can be successful. I’ve seen it happen. And not in a “I’ve seen Bigfoot” way, either. Go into this with eyes open, listen very carefully to your experts, be ready to make some unpopular decisions, and you could come out the other side with a streamlined product that dominates your market.

Steven Allen is a software developer with over ten years of experience.

He's seen many companies fail. Don't be one of them.

About me