“. . . the errors are errors now, but they weren’t errors then.”
-- Marianne A. Paget, The Unity of Mistakes: A Phenomenological Interpretation of Medical Work.
I’ve talked about tech debt and agility before. It’s the choices you make to get value sooner by pushing work out to the future. And it’s absolutely a good idea. When done in moderation and at the right time. Just like Taking on any other debt.
And I’ve also talked about decision making. How the process of making decisions and their quality is related to, but not the same as, the outcome of the decision. We should be making the best decisions we can with the information we have when we need to make the decision.
Communication is important. That means definitions are important. It’s important to label things correctly so that everyone has the same, shared understanding of the situation. Which brings me to my point.
Not everything that isn’t the way it should be now is tech debt. We learn new things all the time. When what we know changes we need to respond to it. That often adds work, but it’s not tech debt.
Consider this scenario. I’ve been at least tangentially involved with computer graphics for a long time now. Simulation, games, 3D mapping. When I started the limiting factor was geometry transforms. Doing all that floating point match to figure out which pixels the corners of a triangle mapped to on the screen took a long time. Especially compared to the simple integer math involved with filling the triangle once you had the corners. So we built our models with as few polygons as possible. Did aggressive culling by knowing that from one octant it was physically impossible to see some of the model, so don’t even try to draw that triangle. And z-buffering was expensive too, so we used the painter’s algorithm and spent a lot of time figuring out how to time drawing the model in the correct order, from relative back to front and just overwriting things.
Then the world changed and we got transform engines in silicon. Chips designed to do that math fast. And suddenly we were fill rate limited. So all of the old models and the rendering engines were suboptimal. We needed to rebuild them. Some people called that tech debt. But it’s not. It’s new work. It’s an opportunity to add value based on new information and capabilities. In fact, not doing the work to take advantage of the new capabilities and releasing the next version without supporting them would be adding tech debt.
And building models and rendering engines that took the transform limit into account was the right thing to do. When the models and engines were built that was the way to get the most performance from the system. Doing anything else would have been a bad decision, because we had information showing us that more polygons and higher framerate added value to the customer. Doing anything else at the time would have been an error.
But needing to do the work to support the new graphics cards was neither tech debt nor caused by a bad decision. We needed to do it because the environment, the context changed. The work needed is the work needed. You still need to do it. But don’t put the wrong label on it just because the terms are handy. Be honest with yourself and each other. Saying someone made the wrong decision because the world changed and now there’s a better choice doesn’t help anyone.