We Migrated Our Blog from Static Site to Decap CMS (Netlify)
Introduction Insighture is in its growth phase. We recently set strategic goals that involved a spike in content marketing initiatives and pushing out …
READ MOREThe topic of technical debt is no longer dubious. However, given that there is no set way to go about it, getting to know where to start with managing it can be quite hectic. As a C-suite executive, you may be having many concerns on the cost of ignoring it.
“Are we not making the tech investments our competitors are?”
“Is our current tech infrastructure optimized for maximum efficiency?”
After looking closely at the varying perspectives that exist around this topic, we thought of consolidating all those insights into a list of refined tips for debt management that you can implement starting today.
Recap: The true nature of technical debt
In our previous blog post, we explored the critical role of technical debt in your company’s strategy. We also discussed whether it was possible to create debt strategically or recklessly as well.
If we choose to look at tech debt like this, we are arriving at a more empathetic, healthy approach to understanding its precursors and also finding better ways to manage it — ways that don’t involve pointing fingers of blame at engineers or product managers. As previously reiterated, we need to make trade-offs that we can live with.
Let’s set a few facts straight before we get into how to tackle tech debt.
As a leader, your natural instinct may be to seek a tech-related magic fix. However, it is crucial to maintain a strategic approach and consider the big picture. We’ve established that we need to create a bit of debt to keep our tech products alive. But how do we keep things from turning “toxic”?
Your engineering teams are the lifeblood of your product portfolio. The need to reduce technical debt is likely to receive support from engineers themselves. Those who have been in the field for some time have already seen the impact of toxic debt on the application ecosystem. However, for practical changes in process and workflow to materialise, adjustments must be made on the ground in highly tangible ways.
Industry leaders propose the following strategies to shape the perspectives and approaches to technical debt within engineering teams.
Get the vote of your engineers first. Before you pitch the idea of addressing TD to stakeholders and other departments, you need to make sure that the team of engineers is in alignment with its importance. They need to be hands-on if a new project is created around addressing tech debt items; otherwise, you have a culture problem on your hands. Their support of the outcomes goes a long way once you get sign-off from stakeholders and the rest. Refactoring may not be a delight for everyone, but there are always a couple of “menders” on every team who see it as a welcome challenge.
Make “investment work” and “fixing work” their top priorities. Some devs are more inclined towards feature work and others towards refactoring or mending work. Identify these “makers” and “menders”. Assembling a team with individuals who like doing both contributes to a more effective process of tech debt management. Your product managers can plan for technical debt and technical investments with the same vigour and attention to detail that goes into developing a product strategy or roadmap, knowing that certain people on a team like cleanup. Additionally, by coordinating strategic and technical investments on a monthly, quarterly, or semi-annual basis, you can connect such investments to the company’s more high-level initiatives.
Address tech debt as a daily mantra. Taking it a step further, this method becomes the status quo when technical debt management is implemented on a daily (or at the very least, weekly or sprint) basis.
“The notion that 100 percent of my engineering team’s time or every engineer’s time is going to go to feature development is where your problems start. None of us is perfect the first time we write something. We all know as soon as we put something out there, there’s going to be a problem and we’re going to have to go fix that problem. You need to allocate out a budget in a way that says some percentage of this is always dedicated to maintenance, clean up and bug fixing.” - Rob Zuber, CTO of CircleCI
Quality-oriented coding practices: Encourage a culture of quality through the enforcement of coding practices that prioritise clarity and maintainability. Embrace coding standards and best practices, coupled with regular code reviews, to catch potential issues at an early stage.
Automated QA: Elevate code quality with automated tools designed to conduct rigorous checks. These tools not only identify potential issues but also enforce coding standards consistently. This way, you establish a proactive approach to maintaining a high standard of code throughout the project lifecycle.
Architectural excellence: Cultivate a commitment to quality by designing systems with scalability and maintainability in focus. Prioritise good architectural practices to reduce the risk of accumulating technical debt. A well-thought-out architecture serves as a foundation for long-term success, fostering a culture where each team member contributes to building robust and scalable solutions.
Stability of infrastructure environment and sustainable practices: Uphold the stability and sustainability of the core infrastructure environment by implementing and adhering to best practices. Regularly monitor system health and performance to prevent the accumulation of technical debt.
Code Promotion: This strategy is about maintaining a branch per environment and triggering deployments when a check-in is triggered against the branch.
Good code promotion practices, including code reviews, automated testing, documentation, and collaboration, contribute to maintaining code quality and addressing issues early in the development lifecycle. This, in turn, helps prevent the accumulation of technical debt and promotes a healthier and more sustainable software development process.
Each phase in the workflow contributes to maintaining code quality and can help reduce technical debt in various ways.
If you are a startup founder, you’ll have more insight into how your product managers may be doing. They may be really struggling to address tech debt and may be becoming overwhelmed. Advise them to:
This includes questions like “what is the extent of the debt?”, “who is accountable?”, “have we engaged decision makers?”, “what is creating tech debt?” and “what is the payment plan exactly?”
Comprehensive assessment: The first step in managing technical debt is to conduct a thorough assessment. This involves understanding the scope of the debt within your organisation. Identify areas that require immediate attention and categorise them based on their impact, cost, and time required to go back in and fix things. What are the organisational structures or processes hampering the company’s ability to address them? By performing this assessment, you gain a clearer picture of the debt landscape and can make informed decisions.
It makes sense why there are times when members of the larger organisation object to the thought of dedicating funds to pay off technical debt. They believe that releasing new features to users is a trade-off for paying off technical debt. When it comes to product health efforts, they often feel hesitant to support them if there isn’t an immediate tangible advantage. The secret is to shift the focus from the debt itself to topics that are important to these stakeholders.
Here are a few strategies to shift the focus from ongoing product health or success lever, however you choose to refer to TD.
Clearly communicate any trade-offs.
There are trade-offs with any product. The well-known “good, fast, or cheap” Venn diagram is a great illustration of this fact. Any one or two of those factors may be used to complete a project. However, using all three at once is not feasible.
An engineering leader must decide which debt is acceptable and when it may be paid off.
For instance, a team may choose to release the capability now and then devote more work to improving or stabilising it at a later date. Alternatively, they might take the extra time to stabilise it now and provide the feature to the market thereafter. There is a trade-off, and it is the duty of engineering — and in their best interest — to specify those trade-offs.
Calculate the opportunity cost of tech debt payment.
Typically, engineering executives are aware of the cost of technical debt in the codebase — the team’s inability to consistently produce products at full speed. However, many executives may see this as a waste of money when they learn that engineers must take on a significant restructuring project that will take months. Instead, they should be informed about the benefits that resolving technical debt would bring to the company.
Stories of technological debt are all too frequently anecdotal. The effectiveness of discussions with various stakeholders increases significantly when these issues can be measured using metrics and converted into monetary losses.
Recasting technical debt as an investment in future returns is possible by using models like the Technical Debt Ratio. It will be easier to make the case for strategically tackling technological debt if that type of data is available.
Highlight its importance to the whole company.
Few organisations have teams or people whose goal is to reduce technical debt, which is one of the reasons it accumulates in the first place. Building products, improving the customer experience, and increasing revenue are common goals. However, full ownership of technical debt is often put on the back burner.
Therefore, the next stage is to get support for engineering team TD pain point across the whole organisation from upper-level stakeholders who have given engineering leaders buy-in to address technical debt. Engineering teams may find it more difficult to commit time and resources to effective debt reduction without your high-level assistance, leaders.
Planning significant technical debt efforts concurrently with a company’s product strategy and roadmap is one approach to getting this kind of buy-in. Whether that’s done on a monthly, quarterly, or half-yearly basis, coordinating such activities together improves process efficiency for the organisation and raises awareness of the initiatives.
IT executives who effectively handle technical debt are in a considerably better position to improve organisational performance. Infrastructure and operations executives may achieve at least 50% quicker service delivery times to the company by aggressively managing and reducing technical debt, according to research and consultancy firm Gartner. By conscientiously addressing technical debt as a strategic initiative rather than a reactive measure, businesses can fortify their competitiveness and adaptability.
For further insights into our commitment to principles such as TD management, explore our official Engineering Manifesto and Engineering Playbook.
Introduction Insighture is in its growth phase. We recently set strategic goals that involved a spike in content marketing initiatives and pushing out …
READ MOREWith the advent of digital transformation, businesses are always looking for new ways to stay competitive and grow. Artificial Intelligence (AI) is …
READ MORE