This post is commentary on “Nerds, We Have to Talk,” in which the author muses about why computer programmers are often so mean to each other.
There are a few reasons which come to mind.
First, I have a computer programmer friend who has commented that programming seems particularly suited for neuroatypicality. To be a good programmer, you have to enjoy long periods of time in isolation, just you and your computer. You have to be able to focus on a single task to a point of deep obsession, as the code becomes increasingly complex and you need to be able to tie what’s on line 4235 to what’s on line 71235 and work the result into line 121231 (not that line numbers have been used for most programming languages in decades…). Being full-blown autistic isn’t useful, but being vaguely Aspie could definitely help with those skills.
Of course, in a team setting (particularly a corporate one), neuroatypicality can start to get in the way. What makes such people good programmers make them worse team players. They all want to do things their own way.
I currently work as an Access programmer in a team setting, and while we all have our own projects, it’s not unusual for us to inherit other people’s projects. I can tell, with a reasonable estimate, who’s touched a database based on the techniques being used. It’s maddening to see some queries called “qryDataFromTable” and others “qry Data Table Trial Run” and yet others “Step 1 Data Pull.” As for the code itself? It’s a playground for “do it my way!”: There are macros that call subroutines, subroutines that build queries, subroutines that call macros that call queries that call subroutines. Some of this is due to the nature of Access programming, which invites these sorts of inconsistencies, but the point is, without a strict overlord dictating corporate naming and other policies, programmers have a hard time coming together to agree on these things.
In short, the social skills (or lack thereof) that make someone a good programmer make them a lousy team player. This is true in an enterprise setting, and this is true in a hobbyist setting.
Another point that comes to mind is that computer programmers tend to have been bullied as youth more than other youth. I’ve noticed that when nerds and geeks of all stripes get together as adults, particularly twenty- and thirty-somethings, they’re among the most publicly obnoxious groups of people. I’ve been there myself. I’ve been at the Denny’s at 2am with my “alternative group” friends being noisy, disturbing the other diners, and so on. I and my friends thought we were avenging the years of oppression we’d had from the Beautiful People; we failed to care about was that acting like the boors we claimed to hate in others, we were also “paying it forward” in a bad way.
The sad reality is, people who have been bullied and who have diminished self-awareness tend to bully others when given the opportunity. And people who are neuroatypical tend to have diminished self-awareness (at least in the typical sense).
As a final point, the author compares programming to an experience he had while skateboarding. There are two differences: First, there’s a different potential result from competition, and second, there’s a different level of publicness of act.
Skateboarding can be competitive, or it can be a hobby. Programming can be competitive, or it can be a hobby. However, the commercial possibilities for skateboarding are far more limited. Even with sports like baseball, where there are numerous national and international teams, the pro/am ratio is very low. I don’t know what it is in skateboarding, but I imagine it’s probably lower. Overwhelmingly, skateboarders are in it for the fun, not for the money.
Programming is different. The pro/am ratio is high enough that other programmers are a potential threat. Add to this that Imposter Syndrome seems to run higher in intelligent people than in less intelligent people (which it logically would, since it runs higher in the competent by very definition), and you have a dangerous mix of skill, competition, and low self-esteem.
One way for me to bolster my own self-esteem, to try to turn off the Imposter Syndrome voice and at the same time to increase my own job security or opportunity, is to reduce the playing field by shaming others. Sure, my understanding of multithreading in a VS environment may be extremely weak, but for God’s sake, look at THIS GUY! He doesn’t know the difference between a List and an Array!
Related to this, it’s easy for their to be a community assessment of skateboarding. I can get on a board and go to a skatepark. People can watch me and tell me what I’m doing right and what I’m doing wrong. If one person is being a jerk, others can tell him to pack sand. While I’m developing my skills I can receive feedback.
Also, as long as I have some promise as a decent skateboarder, the group has a stronger interest in encouraging my growth than in encouraging my departure. Sports are generally more fun as a group than alone; as much as they might claim otherwise, skateboarders care about what passersby see, and they’re more likely to be impressed if everyone in the group skates well; and so on. So if I truly and roundly suck, it’s time for me to go, but if I’m decent enough as a boarder and as a person, the group has reason to keep me around.
(Nota bene: I’m also cognizant that the author is using a sample size of 1. I’ve heard from a work colleague who also played recreational softball that there are teams that have that sort of “everyone should just try their best” attitude, and others that think they’re the freakin’ Yankees. I know there are tons of groups of skateboarders that would make a standard computer programmer hazing ritual look like a cakewalk.)
Programming is a much more isolating activity. Like writing, it’s something that’s generally done alone. Unlike writing, though, the output isn’t as interesting to read, and the time spent reflecting on the code is generally inversely related to its quality. If you’re in a writing group and one of your cohort brings in an absolutely exquisite piece of writing, you’ll want to savor every word. If you’re a computer advice website and someone posts a piece of code that’s flawless, you’ll likely wonder why they posted it.
If on the other hand, someone brings in a truly atrocious piece of writing, you can skim it and offer a few concrete examples of how to improve it. Unless you’re their English teacher, you don’t have to mark every single error or problem. But the entire point of computer advice websites is to slog through code to try to find the one or two errors, which might actually be in a section of code that wasn’t posted. Plus you might have to have an understanding of the context and project specifications. An error which might take a “competent” (in your definition) programmer a few minutes to find and fix has been buried by this “incompetent” (in your definition) programmer in a spaghetti of code and thus will take hours to ferret out.
Finally, another difference between skateboarding and computer programming is that, to my knowledge, never in the history of skateboarding has somebody left their board halfway through a run and in so doing required someone else to finish the run and be judged on the whole thing. I’m sure the first part has happened many many times, but not the latter. Sure, assuming there are team competitions involving skateboarding, as there are for most sports, one member’s weakness can damage the whole team. But it’s not nearly as common as it is on a programming team, where not only can a weak programmer mess up their own performance, they can damage the performance of everyone on the team (even if the code is so completely siloed that they can only touch their wedge, ever).
Fine, that explains why programmers would be rude to their teammates and rude to job prospects, but why be rude to utter strangers? It’s the same as the rudeness about language usage.
I used to be a Grammar Nazi. I used to call myself a Grammar Nazi. I sometimes slip on both counts still, but I try hard to do neither. I can’t say why everyone who is rude to strangers is rude to strangers, but I can give some of my own perspective about why I was rude.
First off, language is important to me. I have an MA in Linguistics, which actually took much of my Grammar Nazihood away. Communication is a two-way contract: By writing or speaking, I commit to trying my darnedest to make my communication effective, and by reading or listening, you commit to trying your darnedest to understand it. When either one of us falls down (if I fall down by filling my writing with misspellings and grammar problems, or if you fall down by jumping to conclusions or being obtuse about semantics), then that increases the load for the other person.
For this reason, a Grammar Nazi is ever diligent, defending the weak by entering into conversations they’re not even interested in just to correct an error. Errors are seen as affronts to communication, society, the entire process. Offenders must be spurned!
I’ve also heard others complain that they spent a long time carefully honing their own communication skills, and feel that hard work is undermined and even ridiculed by people who don’t seem to care. That’s not one of my issues, because language has always come really easily to me and honing my communication skills is a joy, not a burden, but I can see how others would have this frustration.
I think there are motivations similar to these for computer programmers. When I work on projects started by others, their programming lapses affect me, and so perhaps I might think it would be a service to others by trying to shame the truly incompetent into other career choices. I might also feel that it’s important that society as a whole see programmers as generally competent, and this is undermined by the truly incompetent.
Related to this, the level of incompetence is magnified by the nature of computer advice websites. People post on such cites because they’re having problems. People tend to be excited about sharing writing that goes well; people tend to be excited about sharing skateboarding tricks that work well. There’s much less of an audience for sharing any but the most interesting of code.
I’m sure there are other factors involved in why some programmers are so rude. An additional aspect is related to the anonymity of the web which magnifies and invites rudeness in general.
Let me conclude by saying I agree with the point of the original post: All these reasons and motivations aside, rudeness rarely serves any productive purpose, and almost always does more harm than good. If someone truly is entirely incompetent, maybe they should be gently advised to find something else to do, but ridiculing someone for using last year’s language or last decade’s naming convention is a waste of everyone’s time.