How to Minimize Technical Debt by Designing in Understandability

Technical debt is a programming concept that explains the extra work necessary to understand code. It is unproductive time spent trying to figure out “what in the world was this developer thinking when they wrote this?”. We too often forget that technical debt is also the unproductive time trying to figure out “what in the world was I thinking when I wrote this?” Sometimes, this question arises after only a few days away from the code. Technical debt encumbers us over and over again, in predictable and unpredictable ways. Of course, we expect some level of technical debt when we maintain someone else’s code written months, years, or decades ago. Unfortunately, we don’t expect technical debt when we return to code we wrote yesterday or last week. How often do you pick it up and ask the question: “what was I doing??????”. Unfortunately, we usually cannot pick it up and continue. We have to reacquaint ourselves with our own work? You are not unique. When we develop without proper coding technique, we incur technical debt. Any time you spend figuring out what you did is time spent paying down your technical debt. We must develop and implement coding techniques that produces software that is easy to create, understand, and maintain. Writing understandable code does not have to take extra time or extra effort. Don’t write code for a compiler, write code for humans (including yourself). Humans who will have to understand what you produced in order to make it work under changing circumstances.