Over the years I’ve come to believe something that I’m not sure others will agree with. I would like to hear your point of view on it.

I posit that some code can become literally unfixable. Programmers can paint themselves into a corner with the code and it becomes impossible to get out again.

The scenario arises when a specific set of conditions exists:

  • the code is difficult to work with for some reason — inherent complexity, badly written code, whatever
  • the code is not tested and is not written to be testable
  • bugs are high-stakes, so changes are extremely risky
  • the code needs to be changed for some reason (it’s buggy or doesn’t fulfill its requirements)

This situation is a deadlock. I can’t leave the code as it is, because it has bugs that are causing problems that need to be fixed. I can’t change the code, or I’ll cause bugs that may be truly serious in a variety of ways. I can’t test the code, because it’s untestable the way it’s written. I can’t refactor it to be testable for the same reasons I can’t just change it in the first place.

I have encountered such code many times in my career. I’ve also met people who say they can fix any code with enough work. I haven’t seen that happen. The only solution I’ve seen is a complete replacement, rewriting from scratch.

What do you think?

PS: I remember seeing claims that if more than a small amount (10% or so, as I recall?) of a program’s code needs to be modified, a rewrite from scratch will be a better outcome in less time. If you can find any sources for that claim, please leave them in the comments.

Done! Now Read These:

Can Anomaly Detection Solve Alert Spam?

Attend the webinar to learn more.

Can MySQL be a 12-factor service?

12-factor systems are easier to operate; can MySQL be treated this way?

Monitorama 2014: This One Weird Time-Series Math Trick

Tried the Kolmogorov; bartender was out of Smirnov.