With best practices and a determination not to let the technical debt grow, developers can create a solid business foundation, especially when staff and money are scarce. […]
Technical debt can be minor, such as minor code optimizations to improve performance, code readability, or other support factors. Large technical debts can be outdated APIs, applications without CI/CD (“Continuous Integration and Continuous Delivery”), services with little automated testing or legacy systems that interfere with operations.
Regardless of the source, size and impact, it is certain that IT teams need to measure, manage and reduce their technical debt. It is equally important to take measures and apply best practices that will help to avoid or limit additional technical debts.
Ruby Raley, vice president at Axway, believes that reducing and managing technical debt is even more important today due to the shortage of skilled workers and financial conditions. She says: “The need to reduce technical debt will come to the fore for CIOs. Due to inflation and the personnel problems caused by the great resignation and burnout of employees, they have to find operational efficiencies to finance new projects. One of these steps will be the technical consolidation to reduce the maintenance effort.
I can only agree with that. Even though it is always a challenge, development teams have to spend enough time to reduce technical debt and also take steps to minimize the introduction of new sources of error. Agile development teams and organizations pursuing Devops should rethink and consider these important practices.
Practices for avoiding technical debt in development
John Kodumal, CTO and co-founder of LaunchDarkly, says: “Technical debt is inevitable in software development, but you can fight it by being proactive: implementing policies, conventions and processes to recoup the cost of debt reduction over time. This is much healthier than stopping other work and trying to wriggle out of a mountain of debt.“
To reduce the likelihood of introducing new technical debts, you should consider the following best practices:
- Standardize naming conventions, documentation requirements, and reference diagrams.
- Use CI/CD and test automation to increase publishing frequency and improve quality.
- Develop code refactoring as skills and patterns practiced by more developers.
- Define the architecture so that developers know where to code data, logic and experiences.
- Conduct regular code reviews to help developers improve their programming practices.
Ravi Duddukuru, Chief Product Officer at DevGraph, believes that software development managers need to work personally with developers to internalize best practices. He says: “Developer coaching is the key to reducing technical debt. When developers repeat the same mistakes, quality assurance builds workarounds every time. The bad code remains and grows as the developer creates new code.“
He gives the following advice: “A good manager analyzes the developer’s code to detect patterns and works with him to change them in order to improve this code and all future code, thereby significantly reducing technical debt.“
Reduction of new debt through better planning and estimation
When I asked Andrew Amann, CEO of Nineteen Digital Ventures, how to reduce and minimize technical debt, he replied: “The first and most important measure is proper planning and estimation. Secondly, it is necessary to standardize the procedures in order to limit the time spent on the organization and be able to allocate more time for execution.“
Most development teams want more time to plan, but product managers, development managers, or executives may not realize how planning helps reduce and minimize technical debt. When developers have time to plan, they often discuss the architecture and implementation, and the discussions tend to get lost in technical details. Product owners and business stakeholders may not understand or be interested in these technical discussions.
So, if you want to have more time for planning, it’s important that you give managers feedback on your planning efforts. Here are my suggestions:
- Schedule joint brainstorming sessions with product owners and business stakeholders. Use these sessions to review several implementation options and discuss trade-offs, such as which options reduce technical debt and which could lead to maintenance, support or other debts that require future rework.
- When estimating agile user stories with story points, developers should include complexity and effort in the estimation. For stories that create new technical debts, higher estimates should be applied to reflect the additional complexity required to fix them later.
- Identify approaches to measuring and managing technical debt so that they are not just an afterthought. Some companies tag user stories, code, and other artifacts with technical debt and then calculate a technical debt metric. Others set agile principles and governance models so that agile product owners weigh their priorities to reduce debt.
By defining a process and setting metrics, development teams can more easily educate business sponsors about the risks that arise if technical debt is not addressed.
Optimization of technologies to reduce architectural debts
Choosing too many architectures and development patterns can be a recipe for disaster, because maintaining them requires significant development skills and costs. However, limiting development teams to a one-size-fits-all architecture often forces them to develop workarounds or compromise on usability, performance, scalability, or security.
The selection of optimal technologies also requires the development teams to brainstorm their implementations. What is an optimal data model? What level of granularity should developers build into their microservices? How many test scenarios are required to validate the implementation? When does a customized user experience provide sufficient business value compared to no-code and low-code implementation options?
If teams do not take these design considerations into account, they are more likely to introduce technical debt. In order to minimize the risks of new technical debts, sufficient time must be invested in planning, selecting suitable architectures, implementing Devops automations and further developing development standards.
*Isaac Sacolick is President of StarCIO and the author of the Amazon bestseller Driving Digital: The Leader’s Guide to Business Transformation through Technology, which covers many practices such as agile planning, devops, and data science that are critical to successful digital transformation programs. Sacolick is a recognized top social CIO and influencer in the field of digital transformation. He has more than 700 articles on InfoWorld.com , CIO.com , his blog Social, Agile, and Transformation and other websites.