Technical Debt - How to Manage it as a PM
Technical debt (also known as tech debt or code debt) is what happens when development teams rush to deliver a piece of functionality or a project, only to have to modify it later. To put it another way, it's the effect of favoring speed over perfection in coding.
If you've spent any time working in the software industry, you've probably heard the term "technical debt." The phrase (or, more precisely, the metaphor) is extensively used in the technology space and is also known as design debt or code debt. It's a catch-all term that refers to anything from glitches to legacy code to missing documentation. But, first and foremost, what is technical debt? And why do we refer to it as such?
Ward Cunningham, a software developer who, in addition to being one of the 17 authors of the Agile Manifesto, is also credited with developing the wiki, created the term "technical debt." He initially used the metaphor to illustrate why refactoring resources needed to be budgeted for non-technical WyCash stakeholders.
He had coined a new keyword in the software field, something he didn't recognize at the time. It would go on to be the subject of a slew of academic research, debates, and panel discussions later on.
Cunningham explained how he came up with the technical debt metaphor years later:
"You can achieve something sooner with borrowed money than you could otherwise, but you'll be paying interest until you pay it back." I felt borrowing money was a good idea, and that rushing software out the door to get some experience with it was a good idea, but that you would eventually repay that loan by reworking the program to reflect your experience as you gained it."
However, Technical Debt can also be a negative thing to approach as a team, for instance, there are multiple scenarios where Technical Debt has led situations to like:
The bullet points pointed above to keep you further away from the vision of the product or project the more you add to the Technical Debt and prioritize it. But, these scenarios are manageable if you agree with the team on the priorities of the Technical Debt and also the duration for how long the team is going to focus on Technical Debt.
How should you organize your ‘Technical Debt’
It is important to first identify your technical debt with your team, where the team has to have an eye out for things like build debt, code debt, defect debt, architecture debt, design debt, and infrastructure debt. A good approach would be on each scrum ritual where you sit as a team to identify technical debt on the way. During development, you might find out that there are things that need to be worked on during a feature that is more complex or needs more polishing.
Another way of doing that is by creating a ‘Spike’. A spike is an issue type where you are approaching scenarios where you have to present a certain outcome of research or investigation. Let’s say you find out that the old code that was used is interfering with the new Two-Factor Authentication that you want to implement on the Log-in Screen, that is when you need to create a Spike for Investigating the Technical Debt.
After the developer is done with the Spike for Investigation of the Technical Debt, the developer has to present it during a daily or have a separate call for the Spike. Out from the Spike, the team needs to continue creating the tasks from the investigation and put them on the backlog. Whether you decide to put it in the middle of the sprint or the next sprint, it is all up to the velocity of the workload and the project.
For the next step, it is important for you to mark your technical debt with an identifier and with a way to track down each Technical Debt issues statuses - if it is still in To Do, In Progress or Done.?
In this case, if you are using ‘Jira’ - you are able to create an ‘Epic’ where you can pile up and have an overview of the different statuses of the Technical Debts that your team has created.
It is important to distinguish it with a color that is different from your other Epics and to have a context in the description. The context should be:
These are the things that a Scrum Master should be writing up and presenting to the development team where everyone should agree and feel comfortable with the team’s definition of what ‘Technical Debt’ means for them.
Therefore, the next step of your journey into Technical Debt should be to assign the tickets you see in the picture below, you now have an overview in Jira on:
1. Different issue types within the Technical Debt Epic
2. Statuses of each ticket
3. Overview of how much % is actually completed
At this stage, having this system implemented - gives the team so much power and clearance ahead of time and it provides transparency to the stakeholders of the project.
An additional way where you can list your technical debt is on Confluence.
On Confluence, you can create different types of documentation where you do not need to invite them to the Atlassian Workspace to have an overview of what the list of Technical Debt is - you can simply just export it as a pdf file and attach it to an email to your given stakeholders.
First and foremost, you start out with a new page on the confluence and you call it ‘Technical Debt’ whereas we did before on the ‘Epic’ that you need to describe the purpose of the Technical Debt and who is the owner of it. In this case, the Project Manager will update the document and send it out to the stakeholders each time there are any changes to the list.?
The second step would be to create a ‘label’ where you can easily create an ‘Advanced Issue Search’ that will make your life much easier in the upcoming steps.
In this case, I created a label called ‘technicaldebt’ and assigned it to all of my Technical Debt issues which will help Jira to distinguish which issues needs to appear on the specific ‘Advanced Issue Search’ that we need to post on the Confluence page that we need to send to the client.? Once you have done that, we need to jump to the next step.
The next step is to go to ‘Advanced Issue Search’ and create a filter that will help us to only show the Technical Debt issues in the Jira Project. This is important because you do not want other issues to be involved in the list that we are going to present on the Confluence page.
After you are done with selecting the label and the specific label (in this case technicaldebt) - press ‘Save As’ and name the filter that you just created!
Voila! Now you have a Confluence page with no tasks that represent what you want to show and a filter with a specific label attached to it - now it is about time to merge both of them!
The first step towards merging and finalizing the Technical Debt Documentation is to retrieve the link to this filter. This link will only matter for that specific ‘Advanced Issue Search’. Therefore, if you want to revisit your Confluence page and update it, you also have to update your link.
All right! So the last step of the creation process is to simply just ‘Copy and Paste the link on an empty area on the Confluence page and there you have it!
A complete overview of the Technical Debt issue, the assignee, reporter, status, and creation information of the different issue types. Now, it is up to you to decide if you either want to just share the link of the Confluence page - or if you want to export it as a pdf file and attach it to an email.
To conclude this blog post, I would address that the way of presenting the Technical Debt is up to you as a Project Manager and to own it. It is important to be constructive and transparent to the whole team and stakeholders about what the current status of the Technical Debt. There are other amazing tools that you can use, but Atlassian (Jira and Confluence) is a powerhouse for these kinds of purposes.?
Co Founder at Codeon Technologies Pvt Ltd.
2 年Imrit Kasapolli Technical debt (also known as tech debt or code debt)?describes what results when development teams take actions to expedite the delivery of a piece of functionality or a project which later needs to be refactored. In other words, it's the result of prioritizing speedy delivery over perfect code.
Senior iOS Engineer at Airalo
2 年It's also common to label bad decisions with technical debt, which is a misuse of the term, this got so big that at some point Ward actually put out a video explaining the analogy for it.