The Grumpy Programmer's Guide To Software Company Culture post

March 30th, 2013

My co-worker Jarvis wrote a blog post about how he doesn't care about your company culture.

I don't know what prompted this blog post, but I disagree with many fundamental parts of it. Jarvis seems like a decent guy (have only met him online and not yet in person) but I think Jarvis is making a mistake that many people (not just software developers) make: thinking that the rest of the world should think like you when it clearly doesn't.

Initially I was going to make a point-by-point takedown of his blog post, but halfway through it I realized I was being an asshole. So instead I want to discuss where I think he's wrong.

I mentioned on Twitter to Jarvis that it's just as important to work on your co-workers as all the other things you do. He said two interesting things in response:

  • "This is what I don't like about big companies"
  • "I work on computers, not people"

First, I've worked at places both big and small. There is nothing inherently better about either type. Do not kid yourself thinking only great things happen at small companies. Great things happen when groups of smart people get together and are given permission to go make it happen.

I've seen it work at large places where managers "ran interference" so their employees could make stuff happen. I've seen small places stifle creativity in their employees out of fear of change.

It's not the size of the company that matters, it's how they choose to work together that matters.

The second point is the one where I think Jarvis has made the biggest mistake in his approach.

We work FOR people USING computers. The computer is a tool to achieve a goal. Those goals are achieved by working with others, whether you wish to believe that or not.

As someone who has worked from home for a long time, I understand and sympathize with many of the things Jarvis indicates that bug him. Noise from co-workers, drive-by meetings, feeling pressure to participate in social activities.

But at the end of the day, to accomplish anything of substance requires me to interact with others in REAL TIME. I have proven that I can both get work done AND not be such an asshole that others choose to ignore the remote worker instead of working hard to integrate me into the team.

I find that socializing with my co-workers is a good way to learn about the people I work with, so that when I need something from them later they are less likely to say "why the fuck should I help that guy?" I need their help as much as they need mine.

Of course, I don't think this bit at the end helps much:

I am extremely productive in this setting. For five years I have cranked out more code in this room than many people have written in their entire careers.

I am exceedingly good at my job and I am sick of being told that my lack of cultural involvement makes me a bad employee.

mic drop

Disrespecting co-workers isn't always the smartest move. Failing to understand why others think that being aloof and distant and insisting that results matter more than how you treat people isn't always the smartest move either.

Tech is not a meritocracy, despite our wishes for it to be. Jarvis, you're not alone in wanting people to just leave you the hell alone so you can get some work done. I am that way many times, but I make sure to create those bonds with my co-workers so that the amount of time that I spend with them is enjoyable instead of resenting the time there.

Nothing creates bonds of friendship like a shitty job, but being friendly with your co-workers costs you nothing but a little time, time you're probably spending doing horrible things like reading the comments on Hacker News.