I completely agree. As another example, I believe that building the wrong thing is the most frequent and expensive mistake in software development. This also means that building the good thing, and only the good thing, is one of the greatest velocity improvement opportunities !
Why should anyone, let alone a CEO, tip the scales if it’s already been determined that the benefit of fixing the bug outweighs the cost of keeping it?
Unless they allocated more resources to fix the problem, then this CEO clearly doesn’t understand software and it sounds like the developers gave in to fear.
I came here to your post from another post. I know that Google and Facebook have many smart engineers who are toiling to build a lot of tools and infrastructure which suits them. I mean, Google has its own file system (I had read it somewhere) and many other things. Maybe they need these things at their scale.
Good article, thank you for sharing. We all know Technical Debt is, at least to some degree, inescapable; however I like to choose the 3rd option and write really high quality flexible code that can easily and quickly be modified. It might take a little more time to start with, but I can’t tell you how many times it has benefitted myself, my team, or…
Thanks a lot for this post. I’ll reuse your mottos which I found really powerful to share best practices.
Don’t know if you did, but you might have a look at Kent Beck’s 3X for the eXplore phase where to take debt and the eXtract phase where to pay back.
good article, you describe a central problem in professional programming.
I first came across this idea as “egoless programming”, lots about it online.
Jerry Weinberg , “The Psychology of Computer Programming”, 1971.
Keep up the good work.
I find the analogy between real-world debt and technical debt both inspiring and dangerous. It’s dangerous because of the continuous, iterative nature of software engineering. Incurring technical debt is not quite like incurring debt for a car. It’s more like incurring a daily, accumulating debt for expensive fast food. It’s easy and makes your life…
I suppose if you have one server and one client, then it doesn’t make sense to go through the hoops and overhead of creating an API. But as soon as you add one more client, APIs make sense. They are just a ton of work.
Thanks for the detailed write up! It was a bit over-explained from my vantage, but maybe the extra detail…
Fully agree that incremental delivery is the proper approach to software development.
The challenge I see across many teams and companies is that oftentimes it is hard to find that awesome “increment”. Which can show business value to the stakeholders.