How much debt can you afford? We all live with some form of debt, whether it’s a student loan, a car loan, a mortgage, or a credit card balance. Debt doesn’t have to be a bad thing. It can be a tool that gives us leverage and flexibility to make large purchases. But there are limits to how much debt is reasonable and that’s where people get into trouble. If they take on too much debt, bad things can happen.
What does this have to do with GitLab? Everything.
What is technical debt?
According to Martin Fowler’s excellent summary on technical debt, it seems that Ward Cunningham coined the term around 1993 as a metaphor to describe a typical pattern that occurs on software projects. Technical debt is a pattern in which a development team does not have enough time, information, or capacity to refine and refactor their code, so their architecture, implementation, and testing may be incomplete. The challenge with technical debt is similar to financial debt in that it doesn’t magically go away. Unless it is managed and paid down, technical debt will grow over time, just like the balance on your credit card bill.
How to reduce technical debt
You may feel overwhelmed but there is a reason to be optimistic. The power of rapid, continuous delivery combined with small, incremental changes can help you manage your technical debt and avoid “foreclosure.” Here are three things you can do today to get your “technical finances” in order:
Find your technical debt and document it. It’s hard to pay off all your bills if you don’t know what they are. Begin this process by creating a list of issues that capture your specific technical “bills.” Assign them
prioritylabels. You probably won’t be able to pay them all off at one time, but now you know where to start.
Embrace small changes. At GitLab, we embrace Minimum Viable Change (MVC). The goal of MVC is to make small, incremental improvements. Your goal is to pay down your debt one micro payment at a time.
Let continuous delivery automate your payments. You can’t automate the improvements, but you can leverage CI/CD automation to streamline the process of testing, validating, and deploying code changes for you. Continuous delivery removes the friction and bottlenecks between your developers and the “bank.”
Technical debt is a reality in almost every software product in the world. The point about technical debt isn’t how to avoid it, but how to manage it so that you’re not in a situation where you are forced to foreclose on your project because the technical debt is out of control. The tools are readily available. The question is: Are you ready to start managing your technical debt? Just commit to your future.