Is the madness ever going to end?

Published on 2022-01-11. Modified on 2022-01-23.

There is something seriously wrong with the IT industry. It's so bad that I haven't managed to find a single industry with the same massive amount of stupidity, with the exception of perhaps the fashion industry.

Why is it that people keep inventing so-called "revolutionary new ways" of doing the same old thing? And they do that by adding more and more unnecessary complexity on top of existing technologies.

Electron and React Native Desktop are supposed to be a revolutionary new way of making desktop applications. Except they are not, and they eat up all the memory you have and still ask for more. They constantly crash and have no value over a native desktop application what so ever - well, perhaps with the only exception that now a 2 year old baby can make something shiny that you can click on with your mouse.

No, you're a dinosaur! It's the future! It's the modern way of doing things! Native desktop apps are dead!

PHP is a programming language mainly for web development. It is made in C, a pure procedural language. PHP was originally a templating language and it still is a templating language at the core, yet that is apparently not good enough. Rather you have to put a completely different template system on top of PHP, also written in PHP, which now makes the application load many times slower.

It's the modern way of doing things! We don't do old fashion web development any more!

All web servers have a built-in router. Whether it's NGINX, Apache, lighttpd, Caddy or something else. But no. Let's not use that. Let's add yet another router on top of that with a single entry point and then basically re-write every single request before it gets served.

It's the modern way of doing things! Anyone who doesn't use a single entry point in their web app don't know what they are doing!

The browser's native language is HTML. HTML is a markup language and if you feed HTML to the browser it will quickly render the page with what you give it. But no. Let's not do that. Let's instead feed the browser with JSON and then have the built-in JavaScript engine translate that into a pre-formatted output which then gets translated into HTML before it's served to the user. Oh, and while we're at it, let's do the same thing with CSS. So, now your simple blog post takes ages to load even on a 1 gigabit network connection and requires about 3 times as much electrical power even though you're only serving text and perhaps a few images.

Why in the world has this idiotic trend of abstracting everything away by layers upon layers of unimpressive complexity gained such a strong foothold in the industry? Has everyone except the "UNIX greybeards" gone mad!?

It is a real shame and a serious worry that the young generations grow up thinking that this so-called "modern ways of doing things" is correct and the best way.

Programming is engineering; it's not something where you throw stuff at the wall and see what sticks and just assume that programming languages, browsers, and operating systems are made of magical dust.

Update: 2022-01-12

Someone wrote me an email pointing out the famous saying by Brian Kernighan, who has stated that:

Programmer time is expensive; conserve it in preference to machine time

But that does not apply here at all.

Firstly, we live in a time in which the environmental concerns needs to be considered too. It is irresponsible to keep throwing more hardware at a problem that doesn't need to exist in the first place.

Secondly, Brian Kernighan is being general. The situation I am talking about in the above is something far beyond being justified by any means. The added layers of complexity results in products that are horrible. Everyone is experiencing the pain of using the web daily. Simple websites that contain nothing more that text and images takes forever to load, they only work in a few major browsers, and they are suffering from a flood of almost daily security issues. Turn off JavaScript and nothing gets displayed even though no is JavaScript is needed for anything.

Someone else wrote me another email. The person assumed that I have no experience in web development, or that I don't have any experience in larger projects, and that is the reason why I write the above.

I have been doing web development since about 1997 and I have worked at a large ISP and at Google (as a contractor) and I have been involved in many different projects with many different companies and many differently sized teams.

A company may save both time and money in the beginning because, yes you can get something running quickly, but they always pay a heavy price in the long run.

I write (rant) about this, not only because I, as a daily consumer of the web, am faced with all these horrible websites, or because friends and family complain about how bad this or that website has become, but mainly because I, as an independent contractor, am faced with clients who, as a result of this mess, have suffered greatly at the hands of so-called modern web developers. See JavaScript malware infested nightmare

Update 2022-01-14:

Someone on Hacker News commented on this article with the following comment, which sums it up pretty good:

I have been in professional web development since 2004 and I mostly agree with the author that there are massive amounts of groupthink going on. "Modern" web development has standardized in tool stacks which are insanely complicated, far beyond anything that is warranted in most cases. We have forgotten how to make simple things in simple ways.

At a minimum you need node, npm, webpack, babel, an spa framework, a frontend router, a css transpiler, a css framework, a test runner, a testing functions library, and a bunch of smaller things, and that's just what is "needed" to build a static website with a bit of interaction. We're not even talking about the dockerized insanity that happens as soon as you want to slide an API under that beast.

Bingo!

Other relevant reading