Balancing Speed and Stability: A Guide to Managing Technical Debt

Ankur Parashar
fieldcircle
Published in
5 min readNov 21, 2023

In the dynamic landscape of contemporary startups, many operate within the framework of rapid and agile development. While the concept of sprint-based development is often outlined in meticulously crafted Excel sheets and Jira boards, the day-to-day reality for development teams is markedly distinct. The incessant influx of customer priorities, daily hot-fix requests, and urgent sales demands places developers, testers, and engineering managers in a constant adaptation mode, aligning their efforts with the pressing needs of the business. Despite the implementation of robust processes such as automated code review and efficient code management, the exigencies of this swift development environment frequently result in the accrual of substantial technical debt. This article is dedicated to exploring common practices that can be adopted to proactively mitigate and reduce the impact of future technical debt, providing valuable insights for startups navigating these challenges.

What not to do: Before delving into techniques for clearing technical debt, it’s crucial to highlight what should be avoided in this endeavor.

Waiting for the perfect time: In reality, there is no perfect time, except perhaps when your startup is stagnant, not experiencing growth — a situation that is far from ideal. Procrastinating under the guise of waiting for an opportune moment only perpetuates the accumulation of technical debt.

Waiting for funding to expand the team: Relying on the anticipation of funding to expand your team before addressing technical debt is a precarious strategy. The belief that more resources in both frontend and backend teams will automatically lead to smoother debt resolution is a myth. In truth, additional team members can inadvertently exacerbate technical debt by accelerating development without a concurrent focus on debt reduction.

Sole reliance on automation: While automated tools play a valuable role in identifying and managing technical debt, relying solely on them without human intervention can be a pitfall. Automated solutions may overlook nuanced issues that require human insight. A balanced approach, combining automation with manual review, ensures a more comprehensive debt-clearing strategy.

Focusing solely on short-term goals: Prioritizing immediate deliverables over long-term stability is a common mistake. While short-term goals are essential, neglecting the long-term impact of technical debt can lead to a cycle of continuous firefighting. Striking a balance between addressing immediate needs and planning for sustained development is crucial.

What to do: In the past few years of FieldCircle’s product development cycle, we have gleaned valuable lessons through firsthand experience, and these insights have become integral to our organizational culture, serving as a foundation for future growth. Presented here are strategic approaches that have organically emerged from our ongoing development pipeline, offering practical insights into the reduction of technical debt.

Don’t Compromise Growth: My primary advise to Engineering Managers and Tech Leaders is to suppress the instinct to halt product growth in order to address all existing code issues. In reality, such an approach is impractical, as it is neither feasible nor advisable to impede the momentum of growth or neglect customer needs. Striking a balance between growth and technical debt resolution is paramount for sustained success.

Utilize Team Motivation: Aligning your team with their goals becomes pivotal when technical debt items are abundant. Engage in constructive discussions with your team to delineate boundaries, breaking down the allocated timeframe into two parts: development and debt resolution. A motivated team, given the right guidance, possesses the capacity to make a substantial impact while deriving personal satisfaction.

Developers are always hungry for something new and willing to try new things whenever opportunity is being presented to them, cleaning the past mess and building your product smooth that’s the exactly kind of team you wanted to have for your company.

10% Rule: In situations where allocating dedicated time for debt reduction is challenging, consider implementing the 10% rule. Allocating 10% of your team’s time towards debt reduction can be a pragmatic strategy, provided it does not adversely impact ongoing work. This incremental approach allows for the gradual reduction of technical debt without disrupting the flow of regular operations.

In FieldCircle with this strategy we have been able to break our system from few services to 30+ microservices while keeping the growth intact.

One Quarter Rule: Regularly evaluate modules at the end of each quarter to identify areas where the team may have expedited development or taken shortcuts due to tight deadlines. These features, left to be refined in future iterations, need to be revisited promptly if embraced by customers. Adhering to the One Quarter Rule ensures that technical debt is addressed in a timely manner, minimizing attrition and optimizing the overall product quality.

At FieldCircle, we structured these tasks as monthly marathons, encouraging team members to voluntarily take on additional responsibilities beyond their regular workload.

Accept Risk with Existing Time: While keeping management informed is essential, addressing older issues may be met with resistance. Therefore, it is advisable to judiciously handle smaller debt tasks without explicit notification, ensuring that they are seamlessly integrated into the ongoing workflow. Coordination among team stakeholders, from Team Leaders to Developers to Testers, is crucial for the efficient execution of such tasks.

At FieldCircle such small bets always given us rewards like reducing the TAT from 1 second to 300 milliseconds in X-module APIs.

Working on feedback during development: Engaging with insights from individuals actively involved in coding and testing processes can uncover underlying technical debt of various features. By incorporating their feedback, you can avoid overlooking critical aspects of debt reduction and ensure a more comprehensive and effective strategy for optimizing existing code, especially for minor changes.

At FieldCircle, we have given equal opportunity to every new team members either Freshers or Experiences to pick up existing modules to learn as well as optimize.

Make sure everyone on your team understands that reducing technical debt is a group effort and something that happens bit by bit. Undoubtedly, there may be numerous constructive ideas that have crossed your mind and are being implemented in your organization. I encourage you to openly share your insights and thoughts on this matter.

--

--

Ankur Parashar
fieldcircle

Solution Architect, Developer, DevOps Enthusiast, VP @finoit, CTO @fieldcircle.com, Procrastinator :)