On technical debt, complexity and opportunity cost
easyart.github.io
easyart.github.io
What I am saying is that this is a good blog post, but this is stuff we should all know, all push to the PM and CEO with the morning mail, not have to be reminded of.
Just if we have to relearn this every year, let alone every generation, what are we missing ?
(#) really we have terrible software engineering research in the real world.
Perhaps this assumption is wrong. The problem is that some people never learned to be wary of the total cost of their choices. If you miss the forest for the trees, you'll never recognize the actions that can cause technical debt before the technical debt is realized.
I believe as the software industry increases it's understanding of architectural design that we will learn to add most types of features, in a systematically less costly way. Making them easier to maintain,update, and detangle from the rest of the software.
In fact, I am finding that we are just now arriving at that point with functional languages. Not that functional is our savior, but it does provide a good set of tools for this particular problem.
To wrap this up, I don't think software needs less code and less features. I think it needs better tools and methodologies with which to deal with creating, updating, and maintaining features and complexity.
This topic is on my mind at the moment because I'm having to decide which features live and die as we migrate from a legacy platform to a new one. We're very keen to avoid unnecessary technical debt in that process, and to put better decision-making in place around new features as they are introduced.
in short: rip a little functionality out of the existing code and refactor everything like mad to make it a sensible cut. I have found about As much effort goes into fixing up the existing code that just got damaged as writing the new.