If you - as someone who works with code - were asked what qualities make someone a great programmer, you'd probably describe qualities you yourself possess. (There's nothing wrong with that, it's just how people work.) Interestingly, though, there's a chance that if asked to describe a great programmer as a person, you'd end up describing someone else. You might say something like this:
A great programmer likes a lot of time alone and freedom from distractions, so they prefer to work at night. They're extremely rational and brilliant, but on the other hand lack social skills and are likely to be poor at basic personal care such as getting enough exercise, nutrition, or sleep. They become frustrated easily. Programming is their only true interest, but they enjoy related hobbies like science fiction, video games, and internet memes.
Bacon is one such meme. Based on how often large quantities of bacon are billed as perks of our conferences, it might be even more applicable to programmers than other traits we merely inherit from general geekdom. As for its meme status, the internet certainly helped fuel the current fascination with cured pork. If you think back to the time before you saw your first photo of woven bacon, you may remember it being merely something you put on a sandwich. The BLT wasn't devised as a delicacy; it was something to eat when you didn't have meat in the icebox. Bacon's rebranding as less mundane is fairly recent.
What does bacon have to do with computer programmers? Nothing at all. Yet we can safely add bacon to our description of the ideal programmer. Programmers trade in the currency of internet memes and bacon-as-base-of-food-pyramid is one of the internet's most successful memetic progeny. QED. If you don't buy that logic, you can turn to empirical evidence: pretty much every programmer you know. From the best programmer in your field to the junior dev your company just hired to work out of a different office who you haven't met yet, we can assume they love bacon. We can assume that of you. We can assume that of me.
Something else programmers all have in common is that our minds work scientifically. Thus, all programmers are aware that correlation is not causation, and therefore all programmers are aware that if one programmer or even a group of programmers have a trait, if the trait is unrelated to the act of programming it's a coincidence.
If, instead of thinking of Star Wars and Star Trek and energy drinks and bacon, you'd describe the ideal programmer as "a person who programs computers", that's a better answer, despite containing less information. To be fair, it's probably what most people would open with, and would only expand into memes and Vulcans once pressed. You need only look at depictions of developers in media, though, to see how quickly we resort to pocket protectors as a shorthand. It's more recognisable to a layperson than an Emacs buffer full of C.
You will be assimilated
What's odd is that we didn't create these stereotypes of geekiness, but for some reason we embraced and even enforce them. I was part of a conversation between developers on Twitter once, and one person said they stopped taking the other's project seriously when fashion was mentioned. It was a joke, but only nominally. It was also a subtle reminder of the rules of our people: redshirts are a serious and interesting topic, little black dresses are not.
Yet, while we keep each other in line when it comes to our interests, we're happy to take belligerence in our colleagues as evidence of their intelligence, and will continue to excuse terrible behaviour as long as a developer remains productive. To guard the efforts of these colicky geniuses, we demand a thick skin of would-be programmers, lest their desire for respect and decency create distractions. It's worst in open source, ironically the segment of our industry where collaboration and productive communication are most necessary. Unsurprisingly, this causes people to leave the field, sometimes before they even make it out of school.
It's almost like we've collectively decided that if our colleagues and the outside world will put up with us being awful, it proves we're that much smarter. We're so smart people have to take us however they can get us. Not only are we brilliant, there's a shortage of us. As long as we're able to get away with nearly whatever we want, we'll know we're valuable members of society in spite of the conventional virtues we lack.
So it's not surprising to see developer communities freak out when the right to do whatever we want is threatened (for example, telling dick jokes at PyCon). If we start agreeing to hold ourselves to other people's or industries' standards of professionalism, what will they take from us next? Our flexible hours? Our five monitors? Our cathartic three hours a day berating people on Hacker News? Our bacon?
What's funny about our Donglegate-style tantrums is that these episodes end up attracting us more attention of the sort we ostensibly don't want: attention from a 'they' whose standards differ from our own. Bad public behaviour requires the businesses we work with and for to monitor what we're doing more closely. Sponsors can't give us money for events without worrying their name will appear on the stage next to a speaker's porn slide. Our industry already has its own watchdog organisations, and if we continue resorting to doxing (or, as the rest of the world knows it, stalking) and threats of rape and murder to express disagreement, public safety officials will have to step in and babysit us, too.
Programmers are people
It doesn't make a lot of sense, because most of the 'culture' we're protecting is things like pocket protectors and bacon. We've allowed the way the rest of the world identifies us to become the way we identify ourselves. Although it's less obvious, the pressure to be antisocial and immature falls into that same category. And it is a pressure, just as strong as the pressure to disavow unserious interests like fashion. We can see the corollary in the way our industry regards so-called empathy work.
I doubt many people have ever met a perfect programmer, as described above. Programmers are real people, with feelings and interests as simultaneously varied and familiar as those of humans in general. We're not comedy tropes who can't laugh without snorting, and we're not evil geniuses or bastard operators from hell. We're mostly just ordinary people with a shared background of training and opportunity.
These stereotypes make our communities uglier and smaller. They cause aggravating drama and pit us all, individually, against an imaginary ideal developer we can't hope to measure up to while simultaneously making us culpable for that ideal's failings as a human being. They gain us nothing, so why do we hold onto them?
Words: Garann Means