Did you really need a computer to solve that?

Why do all solutions start with creating an app or a software or a computer in any way? Are we living in the era of the overkill?

Did you really need a computer to solve that?

I am prone to busts of rage when I realise something exasperatingly stupid about the world.

Such burst happened recently at my driving lesson when I learned that I needed to turn on the battery of the car to adjust the position of the mirrors.  Which is insanely stupid! It's a mechanical action based on a mechanical need! Why not a mechanical leaver or just let me roll down the windows and stretch my arms to manually adjust it???!!! Oh yeah I also need battery to roll down the windows. I need to harvest electrical energy from some source of energy, solar, wind, hydro, etc, store it in a battery, which is composed by some very special and usually toxic materials, with all of the large engineering effort and networks of energy supply and battery manufacturing just to replace something as simple as stretching an arm and slightly push on an object within our reach. It's insane!!! Why??? Who thought of this? Who decided "you know what, this silly action that we've been doing manually with no problem or complaint from anyone, that constitutes under no circumstance a problem of any kind? We should totally make it depend on an electrical engine. You know, just because we can, like why not? I know nobody ever asked for it but I don't know, let's hook it up to the engine, sure.".

Anyway, this long rant is meant to illustrate the point of this article, which is: not all problems need to be solved with the latest technological tools available to us.

There's a tendency of human kind to obsess with invention, to look at the latest tools available to us and try to apply it to any problem, regardless if it's appropriate, useful or if it even was a problem to begin with at all. It's like those over-excited investors that look to solve a medical diagnosis with AI or remote meetings with VR (making an acronym of the tool doesn't help dilute its hype). Just like the saying: "when you have a hammer in your hand, everything starts to look like a nail".

But this effect goes beyond just the latest hyped technologies, it applies also (and in most cases almost invisibly) to well known established tools like computers and the software that can run in them.

I'm a software engineer. But actually, my university degree says I am an "information systems engineer". Curiously, there is no mention of software in the title. It mentions systems. It mentions information systems. But information can be handled in a lot of ways that don't involve computers. Most commonly: talking. Am I a speech engineer? Am I an actress? 👀

Anyways even though I did learn to program and how computers work and everything and I do work as a programmer day after day, what I originally was interested in and still am is in how to solve a problem. It's a cliché in my profession, I know. But the truth is that that is why computers were invented and that is what we do all day: try to solve a problem by programming a solution in our computers.

However as much as I love to program, there is one thing that gives me even greater joy and pleasure than programming, and that is deleting code. Yes. The backspace key. The remove command. The right click-delete on a file. I have a command in my text editor to delete an entire line: command+shift+k. I love it.

Why do I love it though? I'm not sure. There is something about getting rid of the clutter that is fascinating at a human level. And code is more than just text clutter, it's logical clutter. Within a single line of code there can be numerous logical paths and actions with unknown consequences triggering.

const userId = isNotSuspiciousLogin ? logIn(userName) : sendWarningEmail();

This is a nightmare statement by the way, this is bad code. This is a single line of code doing widely different things, there is a negative boolean variable ruling a ternary operator, and all to assign a value to a variable which I suspect wont have the expected value if one of the paths is taken.

But why is it bad though? is the computer going to be harmed by this statement? No. It's bad for humans. It's bad for the humans that are going to have to read this and understand it. And try to build code around it. And try to catch any security issues that might arise from some condition not fulfilling correctly. Or try to catch bugs from unintended errors from executing this.

This code is meant to solve a problem. But in doing so it may be inadvertently causing more problems, either now or in the future.

The logical clutter of that statement is ugly, it's dirty, it's convoluted, it's problematic. This is all subjective I know. But this is not what one would call an "elegant solution". And there is seldom something more elegant than simplicity.

And that is were I'm getting at. There is immense beauty in watching a clear simple solution working to fix a large problem. That is why I find myself fascinated when a traffic problem is solved by removing traffic lights, or large-scale pollution is solved by a small respiratory virus pandemic (ups, ok, maybe not that one). That's why we're amazed whenever in the movies the doctor makes an emergency tracheotomy by using a common beverage straw (what are they going to do when they finally ban them?).

But going back to the traffic lights example, reading the linked article (you read it, right?) it mentions how basically traffic lights were replaced by mostly non-verbal communication between people and how we were able to find a more efficient solution to that of complex computer controlled traffic signals with good old fashion human communication.

And that is how an information system works to solve a problem. Beautiful.