Over the years, I’ve seen quite a few different development environments, and I’ve come to the conclusion that there’s one perfectly simple way to keep software development running smoothly: keep your developers happy. Read on for the how and why of cheerful developers.
It seems every organization I visit falls down in one of the areas I’m outlining below. Yet, if you want maximum happiness and productivity from your developers, there’s not much choice. Happier developers can also think clearer and avoid costly mistakes.
This is sort of a general set of suggestions for anyone managing or employing developers. I’m writing this in the context of corporate development shops, but it’s also important for developers working remotely. So, here are some basic tips for keeping your developers happy.
1. Start with the tech
This might seem a little obvious, but I’ve seen an entire floor of developers working on some cheap Dell desktops struggling to cope with their development tasks. Now that you’ve found good developers, don’t throttle their potential with terrible hardware. I’ve seen a small development shop with top of the line $4000+ beasts, three monitors attached to each machine and more memory and CPU cycles than you can shake a stick it: hardware that just worked. Productivity was fantastic.
Of course, one often forgotten area here is the internet connection. If you can avoid it, don’t plug your developers into the same 2mb pipe servicing the entire office; let them run their own servers if they want to, as opposed to relying on the information systems department (unless your developers are the information systems department). Internet filtering is a definite no-no: think about it, web developers having their internet filtered? There’s nothing wrong with filtering as such, but I’ve heard of one workplace blocking php.net. Goodbye, absolutely essential manual.
2. Let them take decisions
They’re your IT guys. Make sure sales don’t start promising unreasonable production deadlines, feature offerings and the like. Find good developers and give them the freedom and power they need to do their job well. If that means having the lead developer sit in on a client meeting and insist on an extra week on top of the sales-guy’s deadline, so be it. Involve them in the decision making that directly affects them.
3. Encourage experimentation
Face it: they’re geeks, and they do their own thing. If they want, let them spend an entire day wandering off and trying out new things. It’ll cost you a day of development, but it’ll repay itself easily when they’re back at it, and their new knowledge might prove useful in your project. Encourage experimentation.
4. Create culture
This is IT: it’s got a culture of it’s own. From internet memes, to geek terminology, to the consumer tech, it’s all there. Don’t block it out and force them into the same boring desk jobs of your other employees. I typically order a box of various geek toys from thinkgeek.com, encourage them to decorate their workplace as they like and so on.
For the finer touches, try making the office itself a little more suitable. For example, developers work well in wide open offices (no cubicles!) with lots of desk space. Take regular breaks from development to discuss amusing stories only a geek would understand. Maybe even run a mini hack day event, although that’s probably pushing the bounds of time spent at company expense.