A Quick and Complete Guide to Measuring Your Tech Debt and Using the Results

Rate this content
Bookmark

Hardly any people in Tech like when there's a lot of tech debt. And most of us would like when there's not too much of it. But how do we understand how much exactly we have of it? Where exactly does it sit? Which part of it is actually the most annoying? What would be the benefit for us if we spend time getting rid of it? When it comes to planning how you tackle your tech debt, all these questions deserve answers. Especially when we're asked about the ROI on our efforts to eliminate some annoying legacy stuff and build a new shiny module or service. Also, when we work on tech debt, we do want to tackle the most impactful parts of it first, don't we? This talk is about all of that: how we measure our tech debt, how we interpret the results of these measurements so that they give us the answers to the right questions, and how we guide our decision making with those answers.

Anton Kazakov
Anton Kazakov
27 min
09 Mar, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

This Talk discusses the measurement and interpretation of tech lead, focusing on tech debt. Tech debt is a tool to temporarily speed up development but can have negative consequences if not managed properly. Various tech debt metrics, including heuristic metrics and second-tier metrics, can help identify and manage tech debt. Tech debt interest is crucial for measuring the impact of tech debt and allows for prioritization. It is important to collect and analyze tech debt metrics to ensure software and team health.

1. Introduction

Short description:

Hi, everyone. My name is Anton, and thank you for having me at TechLeadConf this year. In the next 20, maybe 25 minutes, I'm gonna be talking about measuring tech lead and interpreting the results. I hope this talk will be useful and interesting for you. I lead engineering organizations and mentor other engineering leaders. Feel free to contact me for mentorship or coaching. Let's dive right in.

Hi, everyone. My name is Anton, and thank you for having me at TechLeadConf this year. And in the next 20, maybe 25 minutes, I'm gonna be talking about measuring tech lead and interpreting the results. I hope this talk will be useful and interesting for you.

The first couple of details about me, I lead engineering organizations. I am a director of engineering at Westing in Germany at the moment. And also, I mentor and coach other engineering leaders like engineering managers, staff principal engineers. So if you're looking for a mentor or for a coach, feel free to contact me, I'm always open. I'm also outside of work, I'm a father and a big fan of mountain skiing and hiking amongst other things. Down below you can see my Twitter handle and my contact info, like, email address and also the link to connect with me on LinkedIn. And yeah, with that, let's dive right in.

2. Understanding Tech Debt

Short description:

Tech debt is not inherently bad but depends on various factors. It is a tool to temporarily speed up development by cutting corners, much like taking a loan. To determine if we have tech debt, we can analyze our software and answer questions such as ease of analysis, modification, and safety. There are two types of tech debt: maintenance tech debt, which slows down changes due to imperfect design, and continuous tech debt, which requires time to keep the application operational. Continuous tech debt becomes bad when deployed to production, leading to bugs, downtime, security breaches, and lost revenue. Therefore, it is important to manage tech debt to avoid negative consequences.

Let's start with a shocker. What have I told you? Says our dear friend Morpheus, that not all your tech debt actually needs fixing. I fully support this statement, actually, oh, this question rather. And to understand how's that, how's that not all tech debt needs fixing and also how does it even contradict a relatively popular belief that tech debt is generally the root of all evil, let's look at a few things.

So starting with actually what is tech debt? If not, the root of all evil. It was the term coined by this guy, Ward Cunningham in 1992. And he was much younger at that time because this is a screenshot from his explainer video on YouTube that he posted in 2009. And the video is called Tech Debt Metaphor. And he's talking in depth, at large about it. And here are a couple of quotes, which we're not gonna read. We'll just skip over them. So just, according to Ward Cunningham, the author of the term tech debt, it is not the root of all evil. And what it is, it is a tool to temporarily speed up development in that we choose to cut corners to speed up now at the expense of slowing down later. Much like taking a loan, we can afford something earlier than we earn it fully, and then for that we have to pay interest. So since it's a tool, is tech debt inherently bad? Well, let's ask our dear friend Morpheus and he will tell us that the correct answer is it depends. So, as to many questions in the software engineering domain, well, how does it depend? That's the interesting part, right? What does it depend on, like how can we see what it depends on? Well, first, let's look at how we tell if we have tech debt in the first place. That we can do by looking at our piece of software and answering a number of questions. First, is it easy to analyze and understand? This piece of software. Second, is it easy to modify? Third, is it safe to modify? And finally the fourth question, are there any needed technical requirements, for example, scalability, stability, security requirements that aren't implemented? And if we have a yes to any of these questions, we do have tech debt in this piece of software.

Additionally, what I like to distinguish between are two types of tech debt. The first being maintenance tech debt. This is the tech debt related to the first three questions, which is basically the part of tech debt that is slowing down our changes, be it features or be it other types of changes in our code base. We're just implementing them slower because of the tech debt, because the design is not perfect. And the second part of tech debt is continuous tech debt. Which means that we need to spend some time, because of some tech debt in our application, we need to spend some time on keeping the application operational. And this tech debt actually shrinks the bucket of time that we can spend on introducing changes into our code base. So this is how these two types of tech debt are different, and this is how they differently define the answer to the question, when does tech debt become bad actually? Because not all of it is inherently bad, but when does it become bad? Well, continuing tech debt is immediately bad as soon as we deploy it to production. So any shortcuts, reliability, scalability, security shortcuts produce some first order consequences like bugs, downtime, security breaches, god forbid stolen data, which then in turn all produces ad hoc effort, context switching, which is, as we know, another popular productivity burner. Sometimes lost revenue, sometimes things that are even worse than that, like long term reputational damage and so on and so forth. So we don't want that.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

A Framework for Managing Technical Debt
TechLead Conference 2023TechLead Conference 2023
35 min
A Framework for Managing Technical Debt
Top Content
Let’s face it: technical debt is inevitable and rewriting your code every 6 months is not an option. Refactoring is a complex topic that doesn't have a one-size-fits-all solution. Frontend applications are particularly sensitive because of frequent requirements and user flows changes. New abstractions, updated patterns and cleaning up those old functions - it all sounds great on paper, but it often fails in practice: todos accumulate, tickets end up rotting in the backlog and legacy code crops up in every corner of your codebase. So a process of continuous refactoring is the only weapon you have against tech debt.In the past three years, I’ve been exploring different strategies and processes for refactoring code. In this talk I will describe the key components of a framework for tackling refactoring and I will share some of the learnings accumulated along the way. Hopefully, this will help you in your quest of improving the code quality of your codebases.

Principles for Scaling Frontend Application Development
React Summit 2023React Summit 2023
26 min
Principles for Scaling Frontend Application Development
Top Content
After spending over a decade at Google, and now as the CTO of Vercel, Malte Ubl is no stranger to being responsible for a team’s software infrastructure. However, being in charge of defining how people write software, and in turn, building the infrastructure that they’re using to write said software, presents significant challenges. This presentation by Malte Ubl will uncover the guiding principles to leading a large software infrastructure.
Fighting Technical Debt With Continuous Refactoring
React Day Berlin 2022React Day Berlin 2022
29 min
Fighting Technical Debt With Continuous Refactoring
Top Content
Let’s face it: technical debt is inevitable and rewriting your code every 6 months is not an option. Refactoring is a complex topic that doesn't have a one-size-fits-all solution. Frontend applications are particularly sensitive because of frequent requirements and user flows changes. New abstractions, updated patterns and cleaning up those old functions - it all sounds great on paper, but it often fails in practice: todos accumulate, tickets end up rotting in the backlog and legacy code crops up in every corner of your codebase. So a process of continuous refactoring is the only weapon you have against tech debt. In the past three years, I’ve been exploring different strategies and processes for refactoring code. In this talk I will describe the key components of a framework for tackling refactoring and I will share some of the learnings accumulated along the way. Hopefully, this will help you in your quest of improving the code quality of your codebases.
AI and Web Development: Hype or Reality
JSNation 2023JSNation 2023
24 min
AI and Web Development: Hype or Reality
In this talk, we'll take a look at the growing intersection of AI and web development. There's a lot of buzz around the potential uses of AI in writing, understanding, and debugging code, and integrating it into our applications is becoming easier and more affordable. But there are also questions about the future of AI in app development, and whether it will make us more productive or take our jobs.
There's a lot of excitement, skepticism, and concern about the rise of AI in web development. We'll explore the real potential for AI in creating new web development frameworks, and separate fact from fiction.
So if you're interested in the future of web development and the role of AI in it, this talk is for you. Oh, and this talk abstract was written by AI after I gave it several of my unstructured thoughts.
Building High-Performing Cross-Cultural Teams
React Day Berlin 2022React Day Berlin 2022
25 min
Building High-Performing Cross-Cultural Teams
Everything we do, from the way in which we write our emails, to the method in which we provide negative feedback and evaluate performance, governs the performance of our teams. And understanding how culture impacts our efficacy as a team can drastically improve our day-to-day collaboration. In this session you'll learn: How different cultures communicate, How different cultures evaluate performance and give constructive criticism, How different cultures make decisions, How different cultures trust, How different cultures perceive time.
Forget Bad Code, Focus on the System
React Summit US 2023React Summit US 2023
27 min
Forget Bad Code, Focus on the System
Top Content
Prop drilling is fine. Duplication is great. Long functions are love.

We talk a lot about bad complicated code because it’s easy to see the problem. But research shows engineers can work around self-contained bad code just fine. What really trips them up is something else entirely – architectural complexity.

Architectural complexity makes your code hard to work with, causes 3x more bugs, halves productivity, and may even cause devs to ragequit. In this talk we explore what you can do.