I’ve barely had time to really put the time into really quality blogging lately, but here’s a topic I think I can whip out pretty quickly. A bit of a rant on work space environments. If nothing else, I hope it will be somewhat entertaining.
A friend sent me a link to an essay by Paul Graham (author of ANSI Common Lisp, sitting either on my bookshelf or buried in a stack papers on my desk. I’m not going to go looking for it at the moment.). The essay was dated 2004 but is still relevant today.
First, I don’t agree when he implies that are probably no good Java hackers. I’ve known quite a few as I’ve been coding in Java (though I do not claim to be a great hacker myself). I’ve also written perl, python, and lisp and have seen really good code written in those languages as well. I’ve also seen really crappy code written in all those languages. We can get into whole lengthy discussion on what languages or means of expression are good in which type of circumstances, but that’s a completely different post with no clear cut answers. So, that aside, let’s move on to work space environments.
If you are a company whose main product is software, the software you create is only as good as your developers. Their thoughts and creativity are your product. One way to maximize the likelihood of crappy product is pollute those thoughts by putting them in a totally distracting environment where they are constantly interrupted and distracted by people walking around, random conversations taking place here and there surrounding them, etc. In a word, cubicles. Whoever designed the cubicle work environment was not a hacker. In Graham’s words,
The cartoon strip Dilbert has a lot to say about cubicles, and with good reason. All the hackers I know despise them. The mere prospect of being interrupted is enough to prevent hackers from working on hard problems. If you want to get real work done in an office with cubicles, you have two options: work at home, or come in early or late or on a weekend, when no one else is there. Don’t companies realize this is a sign that something is broken? An office environment is supposed to be something that helps you work, not something you work despite.
He is absolutely right. In spite of cubicles being exactly the wrong environment to put hackers in, practically every company I know of does it. Every since I started working in software, every company I’ve been in, with one exception, has been a cubicle farm. When was I the most productive? At home, or after hours, or in the one company I was at where I had an office. Good hackers like getting quality work done, and getting it done well and quickly. An environment that runs contrary to this goal is, I find, generally despised. If you are a hacker reading this who actually likes working in a fabric covered box, please let me know in the comments. Allow me to be the first to congratulate you as you’ll be the first I’ve ever met.
The rest of the essay continues on to make really valid points. I highly recommend a read.
As an addition to that, I would have to add one thing. If you are a manager who is determined to damage productivity while possibly decreasing morale in the process, here’s a sure fire method. Introduce heavy handed processes that run completely orthogonal to how software developers actually work. But I’ll cover that in another post sometime.