In this instance, I wanted to make sure I had plenty of desk space to get two chairs in - to facilitate pair programming, to have enough space to access all the hardware devices I'd be working on, and to have good access to my keyboards and guitar - for when I get bored. (That happens fairly frequently).
A cute extra I got in the desk move was a pair of Samsung 214T 21" widescreen LCD monitors to replace my 17" ones. For any engineering manager reading this: it's really important to buy your developers decent screens. And it's also really important to ensure that they can have a dual head setup. Until you try working with two monitors, it's hard to appreciate just how useful it is. The amount of code, and associated control malarkey, that you can get on the screen at once is great. It is a real productivity aid.
These Samsung screens had a useful trick up their sleve - they can rotate. So I've set them up portrait (rather than landscape). Suddenly the amount of code I can view at once from a single file has almost doubled. It's awesome! Just don't ask me how much pain it was to persuade Linux to let me rotate the screens (when the net connection's down so you can't Google for the answer).
X is great. When it works.
For reference, here's my hit list for essential working environment features for productive code development:
- A large desk space that you can get at least two chairs to easily for pair programming and working together.
- High quality seating, so your back doesn't hurt after a day's work.
- Decent specification computer(s) with at least two monitors.
- Good monitors. Developers spend all day staring at these things. Make them good. And big.
- Light: plenty of it. Natural light, desk lights, fairy lights.
- A whiteboard to scribble ideas on. At every desk.
- Ventilation. Seriously... Give me aircon, so I don't become drowsy though heat exhaustion, and give me oxygen so my brain can function.
- The chance to personalise the space to make it feel "homely". I have several keyboards (of the musical variety), a guitar, and load blaring music (luckily I have a personal office space and understanding workmates).
- Storage space to store books, possessions, and other kit.
- Good coffee.
- Toys. Seriously, developers are like kids - they like toys. Each developer should have plenty of cool toys (nice machines to work on, plus gadgets like Skype phones and the like to stroke their pleasure glands). And there should be nice R&R toys, too. Our kitchen area comes equipped with a pinball machine (this one) and air hockey.