All Hammers are Terrible

“All computers are terrible.”

On social media, this turn of phrase is almost a meme. The sentiment is reasonable at some level—computers are complicated, buggy, and insecure. But the general public is largely indifferent, or least, they accept the situation for what it is: Computer freezes? turn it on then off again. Smart phone insecure? Well, the convenience of digital wallets outweighs the risk. My parents, who are not computer scientists, never say that all computers are terrible.

Rather, this is a complaint from within, by computer scientists themselves.  What drives this thinking? (While not specifically addressing the cause of the sentiment, this blog post provides a nice counterpoint.) No immediately obvious hypotheses seem particularly explanatory:

  • Ludditism: perhaps despite (or because of) our work in technology, computer scientists abhor it. But I find this explanation wanting, particularly because the focus of contempt is specifically about computers, and not about technological advancement generally.
  • Pessimism: perhaps there is a correlation between computer scientists and pessimists. Faced with the challenge of building good systems, they focus on the flaws rather than the progress. But it does not adequately explain the focus of the pessimism on computers rather than life in general—I don’t see posts stating that “all relationships are terrible”.
  • Realism: perhaps computers are terrible. Computer science history is measured in decades, and the approach to building systems is immature compared to other engineering disciplines. I tore down my old garage this summer. The city required a blueprint, erosion plan, a drainage plan, and a few hundred dollars for me to do so. They inspected the work afterwards. Contrast this with software: how much oversight does writing security-critical code get? Just about anyone can throw code up that purports to solve a problem. Still, given that programs are among the most complex artifacts built by humans, we’re doing pretty well.
  • Narcissism: finally, perhaps a tinge of narcissism drives these comments, something along the lines of, “where others have failed, I will succeed.” It is given as a tongue-in-cheek put-down regarding the work of fellow professionals. The motivation is there: if we thought that the tools of computer science were “good enough”, then the world wouldn’t need new programming languages, tools, or libraries. On the other hand, these kind of complaints are not just about directly competing work, and there will always be new inventions to make.

I tend not to hear the same kind of complaints from members of other professions. Yes, we all complain about our jobs, but not necessarily about our tools. Carpenters don’t say, “All hammers are terrible,” even if they complain about their company, their coworkers, the architect, the inspectors. Doctors don’t complain about X-ray machines, MRIs, or scalpels (but they might complain about their patients, insurance, and administration). Farmers don’t complain about the design of combines and tractors. Now, they might complain about a specific instance—“My tractor is terrible; it breaks down all the time.” But not about tractors, in general.

Other professions largely take their tools as a given. Indeed, most practitioners know so little about how the tools they use are built, it is difficult to critique them. A carpenter does not know how a skill saw is built and a doctor does not know how an X-rays are taken. Just whether they work or not and if they are useful or not.

Computer science is unique insofar as the tool makers are so closely connected with the tool users. There’s another glib quip in computer science: “patches welcome” meaning that if you (the user) thinks a tool should be improved, then it is your responsibility to make those improvements yourself. In other fields, the saying does not exist; it would be laughable! A taxi driver can’t be expected to invent a more fuel-efficient automobile; an architect can’t be expected to build better modeling software.

Computer science is unique in this respect, and it has philosophical, psychological, and sociological implications. Imagine, if you will, you are a carpenter, and you have some understanding of how the tools that you have are designed and built. Your skill saw is right-handed, but you are left-handed; with a few modifications, you realize its design can be abstracted, to accommodate either handedness. When your drill dies, instead of simply replacing it, you open it up, find the faulty circuit, and realize there’s a weakness in the wiring that allows it to overheat. When each of your tools fails you in some way, you uncover some flaw and realize they could be improved. Finally, you come to expect failure from every tool you might ever use: “All hammers are terrible.”

We all know that technology—whether we understand how it is built or not—has flaws. We know tradeoffs are made between cost, generality, performance, and reliability. There are more and less reliable, performant, and costly cars, saws, X-ray machines.

The general public certainly has opinions and a sense of the tradeoffs between the tools they use, e.g., Windows vs. Mac OS, Android vs. iOS. But the sentiment is that these are tools, with flaws and lifespans, just like a cars, appliances, and power tools.

I don’t have a strong opinion about whether computer scientists should complain or not about their tools, except, obviously, that general complaints don’t effect much change. My point is more philosophical: we find ourselves in an interesting profession, where we can open our very tools up, peer inside, and change them.

It’s a fascinating prospect.

One Response to “All Hammers are Terrible”

  1. Guillaume Ponce Says:

    Well, this is an interesting topic.

    But there are a couple assersions you made that don’t really match with what I see around me (in France).


    > There’s another glib quip in computer science: “patches welcome”

    This is really specific to Free / Open Source software. I never witnessed this from Microsoft or Apple. It would rather be “patches unwelcome, you can’t even see the sources”.

    More generaly, it is a defense mechanism for volunteers facing undue pression from users who dare complaining for stuff they got for free. Similar behavior could be expected in other fields where volunteering is common.

    But maybe no other field has such a vast contribution from volunteers.


    > The general public certainly has opinions […]

    In this paragraph you suggest that only (or mostly) computer scientists / engineers complain about computers, casual users not so much.

    I have wagons of examples around me of people from other professions who really really hate the computers they **have to** use at work after some top down process that make them mandatory.
    You can hear them about how crappy this system is and how their job was better before they had to use this f***ing computer that “never works properly”.

    I know several nurses, physicians and mechanics in this case.

    I also know secretaries that would be happy users of their word processing software (the only one they really care about) if it weren’t for “that computer that is too slow” (they don’t know it, but they are really plagued by their antivirus software) or this “network drive that is always down”.

    I think the top down aspect is really important. It’s easier to blame the tool when you didn’t chose it in the first place. In fact, you’re blaming the guy who chose the tool and it’s easier when it’s not yourself.

    So I think that you are spot on when you write that other professions are not as inclined as us to complain about their (traditionnal tools). But it seems that every profession complains about computers (becoming their unwanted new tools). Computer scientists / engineers are just a particular case, in that computers are also their traditional tools.

    Well, maybe there’s actually also something else. Maybe programming, being such an abstract skill set, attract perfectionist people more than other fields. And those people tend to be inclined toward disatisfaction. We are the kind of people who seek some kind of (may I say) “purity”.

    That certainly is the case for me.
    I got to know about this blog post of yours via Planet Haskell.
    I got to seek about Haskell because how disenchanted a Java coder I am.

    But not all my colleagues have as strong feelings as I have about this. Some don’t even care and will happily write loads and loads of cut-and-paste-crappy-code as long as they are paid for it.

    Whatever, thanks for sharing this interesting post.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: