Swatinem Blog Resume

Overcoming Bad Standards

— 4 min

Interestingly, in recent times I have read and watched a few articles/videos about first principles thinking. It might be a bit related to confirmation bias, since recently I have been thinking about this topic myself, in the context of bad standards. Or rather, standards that we now adhere to merely for the reason that it is a standard, and we have always done it that way.

Anyhow, my train of thought started a few weeks ago when I saw a snippet of Jim Keller talking about all kinds of topics ranging from microprocessor design to, well, talking about first principle thinking, also mentioning Elon Musk who is famous for his way of first principle thinking. BTW, I am a bit of an Elon fanboy, and I do have a framed picture of him smoking weed on my desk, lol.

I have this talent to think outside of the box, to see flaws and improvements where others don’t even think about them. It’s a blessing because it makes me really good at what I do. It’s also a giant curse because, well, it is quite depressing to see flaws everywhere. Especially when you realize that there already exist perfectly good solutions, or at least improvements. Which will never gain mass adoption because of societies resistance to change.

I mean, there are valid reasons for resisting change. Lack of a compelling incentive is a good one. Or maybe the possible improvement is not worth the effort re-learning everything. I resist change myself in certain situations. I would rather drive a 20 year old car with fewer digital components than modern cars. I don’t want to exchange my physical light switches for home automation. Because why should I? Things work fine the way they do now. And the “more modern” solutions are complex, have more moving parts that can potentially break, and are harder or even impossible for me to repair.

What people way too seldom do is think about the constraints that influenced existing solutions. When doing so, you may realize that often times, some fundamental design decisions are just not valid anymore, since the constraints have changed.

Take as an example the most widely used keyboard layout QWERTZ/QWERTY. About ten years ago, I invested some time learning the Neo2 Layout, which has quite some more logic and intuition to it and is easier to learn. It is also said to allow faster touch typing with less typos. So what is wrong with QWERTZ? Well, it was developed a long time ago, and it is widely believed that it was specifically engineered to work around the limitations of mechanical typewriters of those times. Essentially slowing you down to avoid mechanical parts from getting stuck to each other. That is a technical limitation that simply does not exist anymore. We should be free to use better solutions, so why don’t we?

There is a simple reason. Every device that we can buy has QWERTZ. Every operating system has it, and might not have easy ways to use alternative layouts. Touch based operating systems have it as onscreen keyboard. I mus admit that I still use QWERTZ on Android, even though Neo2 support was added a while back. Because of muscle memory. And yes, a lot of people learn that layout in school or dedicated training courses. Even though Neo2 would be a lot easier to learn as it has a much better learning curve.

So while the original technical limitations do not exist any more, we are in a state of we have always done it this way. And I kind of agree. Having a bad standard is better than having no standard at all.

In terms of software, we have the same resistance to change. We still have companies or projects that actively aim to support Windows XP, which is 20 years old by now. Also from my own experience, I have nightmares about how bad C as a language is, and also how bad all the tools and formats around it are. How bad POSIX is. And its not just me. I read an increasing number of articles talking about this.

I must admit, I haven’t spent much time researching the reasons for why things are the way they are. But I would guess that a lot of that has to do with technical limitations that existed half a century ago, but are not valid anymore. See, most of the technology we use today stems from the 70s. And either keeping backward compatibility, or adopting existing tools with minimal effort, are among the guiding principles of new projects being done today.

I regularly daydream about how our world would look like today without these limitations.

Enough ranting for now.