I heard the following phrase no fewer than three times at a recent tech conference: “Bad Programmers will move heaven and earth to do the wrong thing”. The first time I heard it I thought that it was kind of catchy, maybe I even chuckled a bit with the others in the room.
The second time, a nervous smile crossed my face and I started looking around. By the third time, I was convinced that this quote was aimed directly at me: “Sten, you”, the presenter aimed his laser pointer right in my face, “will move Heaven and Earth to do the wrong thing”.
Other professions probably have their effective, less effective, and probably even negative producers, but for some reason, in software development this is a super heated topic.
In fact this very topic turns what by all other rights seem to be nice folks into vitriolic zealots. Many blogs I read, or talks that I’ve attended, will at some point digress into a commentary on their sub-par peers. Since these people seem to know the qualities of a Bad Programmer a priori, and I’m a little fuzzy on the subject, it leads me to believe that one (or both) of the following may be true:
- I have not yet had the pleasure (or misfortune) of working with a truly destitute programmer yet.
- I am actually one of the terrible programmers in question.
I don’t believe that the latter is true, however, even passing belief that it might be has led me on a never-ending crusade to determine if indeed, I suck.
It’s like Matt Damon said in Rounders: “if you can’t spot the sucker in the first half hour at the table, you’re the sucker”. If I look around and fail to see terrible programmers, does that mean I’m one of them? Am I blithely leaving a path of coding carnage that others are forced to clean up?
Whenever I stumble across yet another witch hunt for smoking out the bad seeds of programming, three way mixed metaphors notwithstanding, I break into a nervous sweat while I pour over the latest criteria of “You’re a Bad Programmer if…” with anxiety that should be reserved for waiting for thyroid test results from my doctor (re: thyroid, no worries, I’m fine).
This obsession has led me to do things like interview with Google, since they seem to have their share of smarties, so maybe some of their smarties could objectively evaluate me, even though I didn’t necessarily want to work there (retrospective note: should not have said during the interview, “I don’t necessarily want to work here”).
Joel Spolsky (and his ubuquitous book/blog “Joel on Software”) is in many ways the origin of this anxiety. Before I go any farther let me be perfectly clear: I adore Joel’s writing style, I eat it up as Software Gospel. Indeed, it was out of this adoration, that my quest for acceptance grew.
But Joel has no shortage of opinions about what makes a Great Programmer and what makes a steaming pile of programmer dung. Joel has written extensively on the subject in no fewer than three books including a guide to hiring the best programmers (which outlines exactly why you won’t be able to hire a great programmer. Answer: they are never on the market. Which, by the way, makes me wonder where consultants fit into his developer food chain since we’re on the market potentially several times a year, but that’s another topic).
In fact if you’re a Programmer Hypochondriac like me, you may be nervously scanning this post looking for assurance and validation from my own list of “Bad Seed Traits” so that you can breathe a sigh of relief when you see that “oh thank goodness, I write unit tests, I must not be One Of Them”.
I’m sorry to disappoint, but I have no insight into the Bad Programmer phenomena. Actually, at the moment, I’m more interested in looking at those who hunt them down.
Actually, it’s probably not much of a mystery. The realm of Software Engineering seems to have more than its share of Those with Strong Opinions.
If you doubt that programmers have strong opinions, be sure to check out the heated argument over at Reddit/HN over a probability problem, as scanning through a couple thousand comments may convince you otherwise.
I don’t know if it’s that those with strong opinions naturally gravitate toward programming, or if arming someone with a bit of CS knowledge makes them this way (probably the former), but suffice it to say that I’ve seen friendships end over “inheritance vs. composition”.
When you couple strong opinions with a very low barrier to entry in the field, it’s only a matter of time before the the finger pointing and name calling start to emerge. (As a profession, doctors also have a high rate of Strong Opinions, but they have a much higher entry barrier including lots of expensive schooling, and emergency appendectomies at 3am. So one might say that they’ve “earned it”. Besides, it’s dangerous to compare us to doctors anyway).
But how much of this is legitimate criticism, and how much is just plain mean?
At one of the talks I attended recently the speaker encouraged us to figure out creative ways to shame programmers who did things like break the build. Really? We’re promoting shame now as a motivation tool? As in, we should take away someone’s dignity? The speaker told us that talk was intended as a venting session, but I walked away from it feeling spiteful and sad for our profession.
Don’t get me wrong; I’m by no means blameless. I compare myself to others all of the time, and it’s usually not satisfying enough to come to the conclusion that we’re all equal in our own special way. So I judge others’ competencies, in my own mind if nothing else.
It’s just that when I do, it always leaves me feeling dirty and antagonistic. It makes me protective over my own ideas and not a very good team player. So for me anyway, dwelling on trying to separate the Programming Wheat from the Chaff is unhealthy and leads to professional sadness.
“Dude, you don’t understand”, you say, “Bad Programmers are costing us millions of dollars a year and slowing down the Good Ones”. No, I get it, fine. I’m all for higher barriers of entry and accountability.
The problem is that there is a difference between a call to improve yourself and a call to quit and find other work, you’re hopeless.