For Christmas I received a new gift which resulted in a very surprising change in my life. This experience led me to ask myself why such a seemingly small thing could have such a profound impact. I found the answer and it has parallels to what makes good and bad software developers and why the software industry is failing to improve people's quality of life.
My Coffee Grinder
My old coffee grinder worked fine and I had no thoughts of replacing it, but this new one was a "burr" grinder, and not a "blade" grinder. In the words of my son-in-law, "this was going to take my coffee making to the next level". A proper gift is one you enjoy, but which you are unlikely to buy for yourself, so this was a very good gift. Yes, it did make better coffee, hands down. However, as much as I like coffee, an incremental quality bump is not enough to be classified as a profound moment in my life.
What really mattered was what was happening during the grinding process. With the old grinder, I would fill it up, then hold down the button while the blades whirred around for 10 seconds or so. With the new grinder, it has a dial that you set to a specific amount of time, then it grinds until the timer expires. What's the big deal of saving 10 seconds you might say?
In fact, the new grinder takes considerably longer that 10 seconds to grind the same amount of coffee: closer to 25 seconds. So why is this better? The key is that I am able to do something else during that time: e.g., get the coffee beans from the freezer, fetch the cups or coffee filter, etc. With the blade grinder, I am compelled to hold the button down.
My first introspective analysis of this was that the new grinder was a more "civilized" coffee making process. I asked myself, "Why is it that I feel that this is more civilized?" The answer lies in the differences in relationship I had between the old and new grinders.
With the old blade grinder, I was its servant. The machine defined the way it needed to operate which forces me to do something for it that I'd rather not have to do. I have to hold the button down. I have to wait for it to complete. It is telling me how to spend my time and forcing me to do things it needs. With the new burr grinder, I give it a single command and it does what I want and burdens me with no other tasks or requirements. I am the master of this machine: it serves me. This difference is the key point of this article.
Good and Bad Software Developers
I've been fortunate to have worked with a fairly high caliber of people in my career, but I have run into a few people with vastly inferior skills. In these cases, these people had a very different mind set from the other developers. Computers were still mysterious to them. They depended on tools and user interfaces and were helpless without these structured environments. Worst of all though, they did not understand what happened behind the scenes of these tools. They sometimes had no idea why something was happening, nor did they seemed concerned about their lack of understanding. They sometimes had a weird mental model of what was happening which either made no sense, or which was not at all what was really happening.
They would often spend time doing things they did not understand, or which were very inefficient, because it resulted in the outcome they needed. The better software developers would not put up with this nonsense: they would want to understand what was happening and they would find out how to avoid doing unnecessary, inefficient tasks.
The inferior developers accepted these things as the requirements of the machine. They were a servant to the mysterious machine that dictated their behavior. Good software developers want to be in full control of the machine, they spend a lot of time ensuring they stay in control, and they get frustrated when the machine does not do what they want. The bad developers just accept their situation as if they are powerless to change it.
The Software Industry's Failings
People have dozens of accounts for software sites that provide them with some service: email, calendar, travel sites, shopping sites, restaurant sites, movie sites, etc. And there are dozens of software programs they need: calendars, to-do lists, password managers, file managers, etc. We spend a ridiculous amount of time creating these accounts, shuffling between them, replicating our contact information on all of them, etc.
We seem to just accept this fragmentation as a fact of life. Why is there not a single device that does all the things we need without burdening us with having to set up and manage these disparate systems? Sure, Google, Apple and Microsoft would love to sell you a "complete" solution to all these things, but even if you are willing to hand everything over to them, their own systems put a cognitive burden on you and they do not provide everything you need: nothing just "works". They either deliberately or inadvertently have their own issues that get in the way of you doing something. Worse yet are those things these companies inconvenience you with due to them wanting to lock you in or exploit your information.
We are the slaves to all this technology and these technology companies. The computer tell us to enter our name for the umm-teenth time, tells us to spend 15 minutes upgrading our system every week or so, requires us to learn the proper incantations to find our information, dictate what we can and cannot do and requires about a thousand other time-wasting, annoying tasks that should not be necessary.
The more technically savvy people can set things up so that they minimize their inconveniences, but that requires a bit of work and know-how. The technology exists to reduce all this friction and put the human back in control of the machine, but the technology companies are distracted from solving this problem since they spend most of their time thinking about how to exploit us instead of how to help us.