An Insight a Day

Improvements in Hardware vs Software

"I can't believe I have to fiddle around so much just to get this to work. It's 2021, not 2001, everything should work seamlessly by now!"

Expecting things to be perfect just because it's 2021 is a big mistake. Just because we are in "the future" relative to a decade or two ago, it doesn't necessarily mean that everything is better. Sure, a lot has improved over the years. Storage used to be slow and expensive, RAM was still measured in megabytes back in the days, and things have definitely gotten a lot better. But that's only on the hardware side, on the software side, that's not exactly the case.

Think about it this way, with hardware, everything is done by the machine. To make a better/smaller/faster processor, you just need to build a machine that can fabricate chips at an increasingly smaller size. Each generation of computers, cameras, or monitors is always better than the last. More processing power, better quality pictures, higher pixel density, and so on.

But with software, everything is done by humans. To write better software, you need a team of software developers who can write better code than the developers before them, and that's just not scalable. Sure, we might be able to use AI and machine learning to help, but ultimately, it's the developers who have to write the code and test it to ensure there are no bugs. If you consider all the ways the product might be used (or misused), it is extremely difficult to make sure everything will work perfectly.

Even something simple like transferring files from one device to another can potentially be a huge headache. Why? Because of file systems. If you're using Windows, try right-clicking on your C:\ drive and click on properties to see what file system you're using. Chances are, it's NTFS. Now try it with a USB drive, chances are, it's probably FAT32. If you're using macOS, your file system is probably APFS. If you're on Linux, it's probably ext4. What does all this mean? Ignoring the technicalities of all the different file systems, your operating system has to support reading and writing to those file systems if you want to transfer data across devices. This means if I have a USB drive, I can format it to ext4 and enjoy all the technical benefits of using ext4 over FAT32, but that would mean I can only access that USB drive on a computer running Linux since Windows doesn't support ext4[*].

It's the same concept with every piece of tech, the hardware is the easy part. Every HDD or SSD hard disk ever made is of the same mass-produced hardware. The same goes for Bluetooth, GPS, speakers, and so on[*]. But the software to utilize that hardware is very different depending on what the software developers wrote in the code. Sometimes, the code just works. Sometimes, it works but inefficiently or unreliably. There's no guarantee that version 3 is better than version 2 because changes in the code can go both ways. We're all human, after all, we make mistakes, and unlike hardware, there's just no way for the code to improve so consistently over the years.

[*] - Disclaimer: Every mistake made in this post is my responsibility. To those who are more knowledgeable, please correct me if I'm wrong.