What are your recommendations for improving the work environment of a software development business?
I've worked in a number of situations, from new building build out with private offices to cube farms to retail buildings in the process of being "repurposed". When I think back on the projects that were successful, and match that up against environment, a couple of things pop out:
- People. Environment can't compensate for poor people. Good people can overcome bad environments.
- Team within earshot. A colocated team has a big advantage over one that's not. Questions get asked and answered faster, and information spreads osmotically. I'm working with good people in a distributed project right now, and it's painful. The only spurts of productivity we get are when we can get together, even at a coffee shop.
- Everything else out of earshot. If interruptions aren't supportive, keep them away. That includes a manager who has to spend a lot of time on the phone. Some of the worst situations I've been in involved having to listen to Sales and Marketing people while trying to stay focused on technical work.
- War room or war wall. A team needs a space where they can post plans, charts, and lists. A meeting room works. A wall works. A meeting room that has to be sanitized to prepare for customer visits doesn't work. Think of it as walk-up context.
- No standard florescents. A 60Hz flicker interferes with reading, especially off of monitors. The faster you read, the great the interference. Headache city. Natural light is the best alternative. Special, high-frequency florescents work O.K., but they're expensive. Eyestrain can clobber productivity.
- A printer within reach. If team members have to wander outside of the team's space to get hardcopy, they risk being grabbed or otherwise distracted. Printers are inexpensive these days. There's little excuse to not have on within a 15 second walk.
- Furniture for Pairing. Even if you don't pair program as a matter of policy, having furniture that allows two people two sit down comfortably in back of one keyboard and monitor can be a great help. The people who manufacture cube-farm builtins haven't figured this out yet (or hadn't, the last time I looked.) It doesn't look as "corporate", but buying tables at Ikea or some local Danish furniture store can work out a lot better, and might even cost less.
- Desktop space. Given the cost, you're foolish to not supply programmers with at least 19" monitors. 21" is better. Dual 19" LCDs? Heaven.
- Decent chairs for those who need them. I've tweaked my back a couple of times doing foolish things. Having a chair with good lumbar support keeps me going. Crummy office chairs make me take frequent walk breaks.
I used to be a fan of private offices with doors, but thinking back, having an office doesn't really correlate with my being happy and productive, only less distracted.