Modern Software is a disaster

Posted on Jan 15, 2022

“Designing simple and elegant software is far more difficult than letting ad-hoc or over-ambitious features obscure the code over time.” – suckless.org

We live in a really agitated world where information flows much faster than anyone could ever grasp. Due to the agile technological advancements and the appearance of new technologies every day, the demand for people on the Information Technology sector is extremely high.

However, because there is still so much software to write, there is no market pressure in the software space to ship high quality code. The trend is fast, agile software development that is buggy, bloated, insecure and fails to even do its own thing.

There seems to be a lot wrong with software development, in the majority of the time there is just too much code, even simple programs have now hundreds of thousands of lines of code. Modern software is often times so complicated that it ends up having to be run inside of docker containers just so that it can keep running with so many dependencies, and there is no guarantee that those same dependencies will be working in the future.

Most developers do not actually care about code quality, they are proud if they achieve large amounts of code because they believe that the more lines of code they write the more skilled they are. This is a delusion. If they get something to work, they will stick with it. This leads to totally inconsistent software, complex code and problems solved in suboptimal ways. All this added complexity will eventually add up until performance slows down to a halt and vulnerabilities become commonplace.

It seems that all the bloat in modern programs does not even bring reliability, software is still extremely buggy, it still has all the same problems, if not more problems than it had before hardware got so high-performing.

Almost nobody knows what is happening on a CPU. If you think about how much power computers have today, it is crazy to think about how much time things take to build, load and communicate. Things that are tremendously easy to do now take huge amounts of storage and memory.

Prior to the 80’s, every computer engineer was trying to solve real problems and getting computers to solve them. When computers started to get faster, people saw that they had more freedom around how to solve problems, this led to people making theories about “How to solve a problem in the best way”. Object-Oriented Programming was one of those theories. So people came up with all these ideas on how to solve problems that do not actually solve anything. OOP is just a structure, after creating it you still have nothing, a program that does not solve anything, you still have to write a program in that framework.

As we get further and further away from real problems, what is taught to people as “Programming” is actually nothing but designing structures and not solving anything.