Connect with us


Is software declining?

I don’t subscribe to the idea that software is in decline. (Just looking at the number of companies, ideas, money, and people involved). I think it’s striving (vs. declining).

A friend of mine sent me a link to the video. It’s long (if you want to watch it do it on 2x). However, let me summarize it for you — new software is buggy, engineers productivity plummetted, nobody is working on complex/exciting problems. We’re all gonna DIE and civilization will collapse.

In a normal case, I would probably just shrug my shoulders. Unfortunately, there are always alarmists and people for whom the glass is almost empty.

However, I stumble on this sentiment often enough lately. And feel that it would be nice to reply.

A couple of side notes:

  • I am not a spring chicken anymore, so I do complain often. Many of my complaints will sound to a younger generation as “Good old days.” And often, when I watch videos like that, I recognize the same notes. People (including me) tend to make an emotional decision first (everything was better before) and after finding an intellectual base to prove it.
  • I recognize that many people who talk about the downfall (including Jonathan Blow in the video above) are smarter, more established, and more well-read than me. (Oh… well. It still doesn’t mean that the argument is correct).

There are three of four central arguments which I hear again and again in different places:

Software became buggy

This fits perfectly well under the “Good old days” category.

Tell me when the software wasn’t buggy? Let’s rewind our clocks 25 years ago. We were young(er) back then. Some of my readers probably weren’t even born yet.

Windows 95 was just released. Do I need to remind you how well it worked?

If you go back more in time, you will continue to find bugs left and right.

Here is an article about some of the famous bugs.

There is also one more dimension to this problem. Current software (as an example web-based) provides tremendously more functionality than a lot of software back then. For instance, I remember some soft for libraries which would be a current equivalent of 3–4 web pages (index + search, create, update, delete). First of all, the current version of such software could be used (simultaneously) by hundreds of thousands of users, on computers of all kinds of forms and sizes (with different CPUs), all over the world, with automatic backups, upgrades, etc.

Yeah, maybe the original version of such software released in 1985 had fewer bugs, but it would be considered useless by the current standard.

User expectations for software crept up. The same librarian software needs to have role-based access, preview, complex search, reservation, and hundreds of other features to be market viable. This rise in user demands came so gradually that most people didn’t even notice that.

As a result, it’s strange to say something like, “Hey, in my day’s paper airplanes flew on a first try, and now it takes decades to fix all the bugs in new Boing.”

What is a complex/exciting problem?

Somehow, many people (especially the older generation) zero in on the same list of things that they believe to be complex/interesting problems: OS design, compiler design, game (rendering) engine, interaction with hardware.

Don’t take me wrong. All of these are complex and interesting problems. However, they are NOT the only challenging and exciting problems in the universe. Also, the market is quite saturated with OS’es and programming languages.

The market demands shifted, and it’s normal. There are a million games on Apple AppStore by now. So maybe it is not super exciting, but there was tons of demand for it (and BTW. This area is also saturated and demand moved to something else).

Frankly, I would rather see engineers investing time in what is in demand (even if it looks simplistic) vs. building stuff which was glorious three decades ago.

And for people saying that there are no new interesting/complex areas. Common… Machine learning, AI, Quantum computing, Robotics, Crypto. These are huge waves that have become a thing only in the last five years.

Software engineering productivity is declining

First of all, I wrote an article ‘There are a lot of silver bullets‘ about things which improved engineers productivity most of last several decades.

The biggest thing that messes up people’s minds is confusion between short-term productivity (how fast you can whip up an editor and build something) and long-term productivity (how much value/money can it bring).

Yeah. Short-term productivity on some tasks may be declined. It sounds like that “Just yesterday I could have tar’ed my app, uploaded it to the server, and boom (we are done), and now I need to write docker file, create K8S deployment configuration, configure security groups, etc. to get it up and running”.

As I pointed out. The obvious flaw is that this short-term operation’s productivity is somehow equated to overall productivity.

Yes, you will write this Dockerfile and K8S. And yeah, you will probably need to spend time learning it. However, within the project’s lifetime, it will save you time.

Reaching maximum complexity, we can handle

This is the most interesting argument. The pyramid of technologies that we use to deliver value becomes higher and higher.

Classical picture from XKCD comics:

You can easily be standing on millions of lines of code when you are writing your Hello world web app. (I am counting here OS, web server, compiler or interpreter, virtualization, etc.).

And any mid-size project pulls in a vast amount of open-source, interacts with some 3rd party services, etc.

And If you worked with big and complex software, you know that it gradually becomes an unmanageable beast (until a successor comes along to slay the old beast and become a new one).

We gradually see this process of complex things breaking down and being replaced by simpler modular things. However, I think there is some limit to this too.

On the one hand, I think we are still far enough from reaching the maximum complexity which human beings can handle. (Apparently, we are pretty decent in abstracting away things). However, I can see the industry gradually getting to one of two dead-ends.

  • we will reach maximum complexity, which we can manage (still a long way to go)
  • we will start building tools that we don’t understand (This part is happening already. People understand how to train a neural network but have no idea why it returns one thing vs. another, beyond saying “oh… because of the weights and biases”)

Kind-of summary

I don’t subscribe to the idea that software is in decline. (Just looking at the number of companies, ideas, money, and people involved). I think it’s striving (vs. declining).

I know the industry didn’t go where people 30-years ago thought it would end up. However, that’s life.

And finally, I can see some cracks in the walls (specifically around complexity and open-source management). It would be interesting to see where it will go.

Full Article: Victor Ronin @ Medium
👋: 234
Jan 11, 2022