paint-brush
Larry Wall's "Three Virtues of a Programmer" are Utter Bullshitby@austin
509 reads
509 reads

Larry Wall's "Three Virtues of a Programmer" are Utter Bullshit

by Austin PocusMay 6th, 2020
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

The Three Virtues of a Programmer: Laziness, Impatience, and Hubris. Ruben Navarrette: A lazy programmer will try to find the easiest way possible to get work done. Navarro: "I want it my way. I want it done yesterday" He says a lazy programmer is more likely to be a bad programmer than a good programmer who wants to get things done quickly. He says it's time to take care of the work, not rush it to get it done in time.
featured image - Larry Wall's "Three Virtues of a Programmer" are Utter Bullshit
Austin Pocus HackerNoon profile picture

The Three Horsemen of the Infocalypse

When I was young(er), I thought Larry Wall had it all figured out. He invented Perl. He had a wicked sense of humor. He had named the Three Virtues of a Programmer: Laziness, Impatience, and Hubris. While he may have invented a notoriously pragmatic language, and his sense of humor may be spot-on, these “virtues” are complete and utter bullshit. Here’s why.

Laziness: “Eh, I’ll do it tomorrow.”

Laziness seems like a good trait upon first examination, because a lazy programmer will try to get around hard work. They’ll try to find the easiest way possible. Instead of spending 8 hours doing something, they’ll try to find a way to do it in at least half that time. Good, right?

Except, sometimes drudgery is part of the job description. Sometimes, you have to trudge through some shit to get to greener pastures. A lazy programmer won’t make the effort -- they’ll just throw up their hands and walk away. Furthermore, a lazy programmer will tend to act first and think second. They want to get through their work so badly, they won’t think through the implications of what they just did. To paraphrase one programmer in Steven Levy’s Hackers: “[they] code like an earthworm, they start at one end and come out the other end and have no idea what happened in the middle.”

Impatience: “I want it done yesterday!”

Impatience, again, sounds like it’ll get results at first. An impatient programmer won’t wait around for a 5 second program to execute -- they’ll get it to run in less than a second. They’re also among the fastest programmers, wanting to get things done now rather than later.

Again, these can be good qualities, but let’s look at the downsides. First of all, do you really want to optimize everything for speed? Sometimes, care is necessary, and more time is necessary. It just doesn’t make sense to optimize for speed 100% of the time. More than that, sometimes you need to take time. You need to take care and design a solution that comes to you gradually, something that solves the problem well (this can be overdone, too, but that’s another story). Impatience makes you focus too much on “now” problems and not enough on “later” problems (more on this in another piece). Finally, it’s worth mentioning drudgery again. Sometimes you have to do unpleasant work, and the impatient programmer is more likely to shirk this duty.

Hubris: “I want it my way!”

Hubris is the worst of the three. At first, people think they want “rockstars”. Someone with excessive pride will also take excessive pride in their work. But rockstars come with attitude.

The attitude problem is one of my least favorite problems in the tech world right now. We have a “bro” issue. You want to know why women and minorities don’t want to work in tech? Perhaps one reason is that it’s filled with arrogant assholes.

Let’s say you’re just a regular dude who codes. How does this affect you? Well, have you ever butted heads with another dev for seemingly no reason? Have you ever had an asshole boss who insisted their way was better than your way? Have you ever had someone defend their code like it was their child, refusing to make changes or improvements? Hubris, my friends.

Larry Wall may have invented Perl, but that was only the second-worst curse he put on programmers (I kid, sort of -- I actually really enjoyed Perl, when I used it). The greatest curse he ever placed on programmer-kind was to name Laziness, Impatience, and Hubris as venerable qualities, virtues to strive toward. Bullshit! I call them the Three Horsemen of the Infocalypse. If we don’t root out these, frankly, shitty qualities in ourselves and the developers we work with, if we continue to tolerate excessive pride, assholery, and bro-ishness in particular, we are setting ourselves up for failure.

Case in point: I probably won’t be reading the comments on this story. Too many tech bros telling me to calm down, or defending Larry Wall, or “well actually”-ing me, or something. I’m good, bro. (And imagine if a woman wrote this -- her mentions would be a war zone…)

There is another way

I propose, instead of this jackassery, three actual virtues: Hard Work, Patience, and Humility. How much better would it be to work with people who embraced and embodied these qualities? How great would it be to make “no assholes” a universal policy? How great would it be, if our industry was actively welcoming instead of actively exclusionary?

This isn’t going to happen overnight. It might not happen at all. But I like to dream of a world where Hard Work, Patience, and Humility are considered the prime indicators of someone who you’d want to work with. I can dream...