Tackling the Tech Debts
A few months back, a platform module that consisted of web app, native app and back-end apps got handed over to my team as part of re-org.
The expectation from leadership for this platform was to make it stable, robust and configurable so that business programs can be delivered in timely manners without any major bugs.
As the platform was new to us, we wanted to focus on the basics and wanted to understand the current state of the platform by identifying all the existing issues and gaps. On top of this, we also wanted to find out key focus areas that have significant impact on platform and demand immediate action from our side.
In order to do this, we decided to create the tech debts for the known gaps and label these tech debts against key categories for identifying the focus areas for further improvements.
After few internal discussions, we came up with following categories:
Key Categories:
- Business Capabilities — This category will help us in identifying the common issues that have direct impact on time to market.
- Quality Attributes — This category will help us in identifying the tech debts which are required to be addressed for making platform more stable and robust.
- Components — This category will help us in identifying the components for which tech debts are being introduced at higher rate.
The following section is going to provide more details on these categories and the break-down of the tech-debts.
Business Capabilities
We had discussions with product owners and identified the list of business capabilities that are most frequently changed as part of the business initiatives.
Business Capabilities
- Experience Design
- Validation
- Experimentation
- Content Management
- Customer Profile Management
- Asset Management
- Monitoring
Quality Attribute
We also identified following key quality attribute requirements for the platform:
- Configurability
- Mantainability
- Performance
- Availability
- Observability
- Security
- Testability
Components
The last category, we identified was components so that we know which specific components requires immediate action.
- Web App (React App)
- Native App (iOS and Android)
- Back-end Apps (Node App and Java App)
Analysis
After creating the tech debts for few months, we got the complete picture of the current state of the platform.
The following charts show the breakdown of the tech debts against the key categories:
After identifying the majority of the gaps, we had internal discussions with stakeholders and came up with following top 3 key focus areas.
- Configurability in Experience Enablement area in Back-End App.
- Maintainability in Monitoring area in Web and Native App.
- Testability across all apps.
The breakdown of tech-debts for each category was self-explanatory and helped in convincing the stakeholders.
Tools
Our team uses Jira for tracking the user stories, bugs so we decided to use the same for tracking the tech-debts as well.
Key points
- Discuss and define the categories with stakeholders for identifying the focus areas.
- Share the objective with team so that they are not hesitant in creating the tech-debts. We ensured developers that the main objective is to identify the gaps in platform and we will be coming up a plan later on for resolving both existing and new tech debts.
- Share how and when to create the tech-debts. we asked the developers to create tech debts during the development and code reviews phases for both existing and newly introduced gaps using JIRA tools.
- Lastly, discuss and identify the top 3 focus areas for improvements.