How To Prioritize Ruthlessly and Manage Tech Debt Like a Startup | by Cara Borenstein | Nov, 2022

Dealing with technical debt and bugs at the right time can be transformative

photo by mark koenig Feather unsplash

You’ve launched or released a major new feature. But it’s still hard to work with all the code because it requires refactoring.

“While technical debt is unique to start-ups, sometimes when technical debt becomes a serious issue, it seems like you’ve made it,” said Sonia Yang, CTO and co-founder. StreetWhich helps brands with resale services.

congratulations. You’ve got technical debt. You probably also have a list of bugs and tests (that your engineers told you once… or a dozen times) on your to-do list.

Now, there’s one more feature to ship. Customer base with marginal increase in churn. So, how do you know when to shift gears from product to active maintenance?

We talked with the teams on Treat, To preach (Slack-native technical onboarding and training to enable your software engineering team to scale), and linear (Issue Tracking Tool for High-Performance Teams) To understand more about technical debt, testing, and bugs as a startup. And we found four clear lessons on access, decision making, prioritization, and storytelling.

Keep reading to learn why maintenance tasks and technical debt don’t need to separate your product roadmap.

When you think of technical debt, you probably (and understandably) focus on what you haven’t done. But if you want to develop a sustainable system for high code quality, you have to consider the engineers who haven’t joined your team yet.

“We realized that if we wanted to grow, we needed to make it easier for people to enter the culture,” said Treat CTO and co-founder Sonia Yang.

Much like cleaning your house because guests are arriving, Treat found the perfect time to solve lingering bugs in the weeks before it onboarded a new pair of engineers. Yang scheduled a sprint session with his team that focused on a checklist of issues that were discussed, edited, and then assigned.

While the pause to clean up the code was effective—Yang estimated that he tackled 70% of his issues during the time he devoted to fixing code—it was the latter that could yield significant benefits.

The company carried out monitoring to measure the effectiveness of the work. They are also re-examining how they make changes to the document.

Treats and other startups can look to Linear for a blueprint for moving projects forward while fixing bugs. Linear CEO and co-founder Karri Saarinen has developed a culture that encourages engineers to fix problems when they find them and discover they’ve found a backstop.

“We have an engineer in the “goalkeeper” rotation, who is the person to help support and fix bugs and issues,” Saarinen said.

Treat is weighting a rotation or dedicated percentage of bandwidth to ensure that someone is always completing the tasks that need to be done.

“One sprint session will never clear our entire plate,” Yang said. “Now, it’s top of mind when we’re building something to think about how sensible it would be for another engineer to do it.”

Small teams are agile by design. Quick decision making taking into account user feedback and product pivots is required.

Yet, as your team grows, how do you embrace flexibility – to reduce the potential tension between the need for maintenance and the desire for improved performance?

For Jaime Rabenberg, director of product for Edify, the answer is simple: You need to adopt a clear decision-making framework to decide when and how you will deal with testing, code quality, and technical debt.

“You have to start with a framework because you can’t develop one in the heat of the moment,” Rabenberg said.

Since decisions can be difficult, it is essential that the process of decision making be simplified. Rabenberg is partial eisenhower matrix, a time management system developed by former President Dwight D. Eisenhower. Here, potential problems are addressed, delegated or removed according to their urgency (x-axis) and importance (y-axis). If something is both urgent and important, it is given priority.

eisenhower matrix

At Edify, there is a decision maker for each project. The rest of the team members then slot in as advisors, offering context (what the client wants or what the outcomes may be) to allow the adjudicator to understand the urgency and importance of a given issue.

Technical debt and trials are unlikely to be considered urgent, but they may take priority when long-standing problems are slowing or preventing development of a new feature. In contrast, functional bugs and performance issues often seem urgent, yet they can only be significant if they are decoupled from the user experience.

A decision-making framework provides the consistency needed to weigh different courses of action and determine how resources will be allocated. It also creates transparency. Team members’ voices are heard. Decisions are then made overall accounting for the needs of various departments and user feedback.

What about small improvements, what Rabenberg calls “microdecisions,” that can fall through the cracks?

Rabenberg empowers his team to make their own choices in order to efficiently solve discrete problems. For decisions deemed too small for a formal process, Edify outlines design standards and establishable, measurable outcomes that help offer guidance that still allows autonomy.

Once you accept that you can’t address all your technical debt — and probably don’t even want to — the job isn’t done. You still have to decide when to prioritize maintenance.

In Treat, Yang delves into the errors that hinder an engineer’s potential engage in intense work,

“If an error is happening multiple times a day, it’s away from doing the main thing,” Yang said.

Treat often prioritizes bugs that need to be resolved immediately because the cost of that debt – an engineer’s lost time and focus – is too high. Another way to assess the value of maintenance work is to consider the ultimate benefit to your end users or team.

At Stashpad, we’re hyper-focused on performance. Developers can’t get value out of our product unless it’s fast. Performance standards are part of the acceptance criteria for all new facilities. We prioritize technical debt when it starts getting in our way and slowing us down.

By keeping our core features small, we make it possible to keep our standards for performance high. It provides common ground and a shared language for our product and engineering teams, ensuring that decisions are based on how they ultimately affect performance – even if it means fewer features are shipped. Huh.

Once you decide to prioritize the development of a technical debt, bug, or new feature, everyone on your team should understand why the decision was made.

Rabenberg said, “I had to learn to articulate why I made the decisions.” “I don’t think it’s particularly innate to people who are good at making decisions.”

Accept that personal feelings are part of the process, even when decisions are based on a clear set of metrics or market demands. Having space for people to share what they feel eliminates the possibility that the pivot could leave one of your team feeling left out. It can also help you clarify what you need to prioritize next.

“As a leader, I think my job is to facilitate an environment that feels safe,” Rabenberg said. “How we look as humans and interact as humans is what makes us successful.”

Remember, you are not only taking care of your team’s emotional needs, but you are also aligning team members, customers, and your leadership. The story of the decision is part of the story of your company, because each decision is a step in a new direction.

When you are clear about your why, it becomes much easier to prioritize and find the right way forward.

Leave a Reply