Thursday, July 6, 2023

Amnesia

The single greatest problem in the software industry is amnesia.

It is people running around, pretending like a whole lot of stuff that happened, didn’t happen.

There is a persistent, but really mistaken belief that writing software is brand new, just started yesterday, and that because of that you can justify doing things incorrectly.

That is wrong. And you can’t really use “new” as an excuse anymore for sloppy work.

We’ve been writing software for over fifty years. It’s not new. Sure, about every five years, some “new” technology comes along and tries to disrupt everything, again, but those waves certainly don’t invalidate whatever else came before them.

Most “new” technologies aren’t even new. They are just retrograde recycles of earlier, but forgotten ideas. A slight twist on something a couple of generations back.

Somewhere around thirty years ago, true greenfield software development efforts started to vanish. Most things that can be handled by software, have been handled by software for a while. We’re just rewriting old stuff.

Most of the spins on any “new” idea in software are actually just small, rather routine, derivations on existing stuff. We’re rediscovering the same things, over and over.

At least 80% of the code written out there is routine. Most programmers will spend most of their time writing the same code that hundreds, if not thousands of other people before them have written.

And while we keep doing the same things over and over again, we reset ourselves to first principles every time. Forgetting all sorts of important stuff.

We did learn how to build things reliably. We forgot that. We did learn how to keep projects smooth and stable, but we forgot that too. We argued about how to express architecture, but all that was forgotten. We figured out ways to minimize our efforts, time and time again, and forgot each one shortly after we discovered it.

We could assemble reasonable methodologies, but we don’t. We could enforce better interface standards, but we won’t. We could build tools that would make our lives really easy, but they too got lost in the past.

It’s sad, but we constantly refuse to grow up. Instead, about every five years a new group of people comes along, ignores everything, and we just go right back to where we were before. Round and round we go. An endless cycle of relearning, and then forgetting, then relearning the same old things again.

I think we cultivate amnesia because newbies incorrectly think it would make their jobs more fun. The problem is that building stuff isn’t fun, it is just work. And continually going back to first principles, each time, with each new generation really isn’t fun either, it is just frustrating.

It is hard and painful to get out a new release. That is just the way it is. But foolishly trying to pretend like it should be a game instead has been just making it even harder and far more painful than necessary.

Building stuff will never be fun, but if you do it properly it can be satisfying. If you don’t want it to be a disaster, then learn from all of the people that came before you and figured out how to make it better. Ignore them at your own peril.

No comments:

Post a Comment

Thanks for the Feedback!