As I went through my to-do list earlier today, I came across a video that discussed the many technical shortcomings of CyberPunk 2077, a game that had been hyped to high heavens but dropped off the radar within weeks after its release in 2020 as it did not live up to its promises at all. This post is not about CyberPunk 2077 but a much bigger issue. Still, feel free to watch at least parts of the video below for an illustration of what poorly produced software looks like:
Your knee-jerk response may be that this does not really matter as it is just a game. Yet, the issues that surfaced after the release of CyberPunk 2077 also plague software in general. Modern civilization essentially runs on software. Yet, we only notice it when there are disasters like several Boeing airplanes falling out of the sky due to software errors.
It is not easy to write good software, and this has nothing to do with inane methodologies like “Scrum”. Instead, you need to collaborate well and also do the actual work flawlessly. By “flawless” I mean that the underlying logic of a computer program cannot have any defects, such as missing cases, unreachable code, or race conditions. Once the code has been written, it needs to be run on reliable hardware, and if your hardware fails, there need to be processes that enable automatic recovery. This is just a high-level overview but you probably get the idea that such work needs to be done thoroughly and carefully.
Some people had the smart idea to lower barriers of entry to software engineering. This was heavily pushed by McKinsey, by the way and once the big tech companies had bought in, companies further down the food chain thought they had to follow suit, and then the age of “cancelling” began. This may very well have led to a more “diverse” workforce, and you may not even mind having pink-haired Mindy around. Yet, this leads to people writing code who just are not cut out for it. You can live with that if there is only a small number of such people as the rest can make up for it. It will lower productivity but at least you are still getting things done. Yet, if you get to the point where even the supervisors are not able to understand if there are issues with the software the team produces, you have a real problem, and this is the reality in plenty of companies nowadays.
In order to counter the issue of the gradually decreasing ability of people working in this field, there is now a trend towards some kind of “code-by-numbers” school of thought where complex tasks get broken down into smaller and smaller parts, and those should be completed by the software developer who follows “patterns”. Even if this works, chances are that you end up with a needlessly complicated system as this approach makes it quite difficult to find global improvements. Such systems are also a complete pain in the neck to maintain and oftentimes you are better off rewriting them from scratch, but business and product people in the company will most likely not allow you to go ahead with such plans. Only if teams managed to really code themselves into a corner is there a chance for improvements.
Today, we have airplanes falling from the sky, and big computer games like CyberPunk 2077 that are full of bugs. It is still big news when a bridge collapses suddenly and unexpectedly, such as that bridge in Pennsylvania recently that collapsed a few hours before the visit of Joe Brandon but this may be a commonplace phenomenon eventually. All over the Western world, our infrastructure is falling apart, which applies to the physical as well as the digital one. We will have a rude awakening and what we are seeing now is just the beginning. I think the future is going to look a lot worse.