This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

3

Wow what company is that, treat there employees so well! :) Wish I am able to join such a company too!
–
Jiew MengOct 13 '10 at 8:04

Something that may not have been mentioned - good temperature/humidity/air quality control and nice bathrooms. I, for instance, get more hungry while working during hot summers than cold winters, because the temperature inside is negatively correlated to that of outside. Ideally the correlation should be slightly positive, but still be close to zero.
–
JobDec 12 '10 at 15:49

90 Answers
90

A sound-proof office.

Like it or not, we're not all Pablo Picasos or Walt Whitmans who can code only if and when the muse strikes us.

Most programmers have likely already discovered they're asked to code things they're not personally enthused about all the time. You also need to find a way to reach inside yourself and pull out good code even when the mood is wrong.

While I think your motives are good, I would recommend not deciding on an ergonomic keyboard and mouse, dual monitors, etc. One of the things that motivates good people is autonomy. I would look at getting them "the best" as much defined by the individuals as possible. This can easily be accomplished by giving people a budget and allowing them to spend it as they see fit.

While the team needs to agree on some things, common source control, open concept or private offices, there are plenty of things where there no advantage to everyone having the same thing. If someone want's a different chair and they're comparable in price, why not?

Many large companies have policies that allow employees to spend some of their time working on their own projects. These programs are often used to entice high-caliber job applicants, as well as encourage innovation. For example, Google has what it calls “20-Percent Time”, where its employees spend one day each workweek on project they’re passionate about.

High resolution and/or wide screen monitor having resolution at least 1680x1050, diagonally at least 19". Technology: LCD or higher, having response time < 10 ms. Good color reproduction and wide viewing angle are also important (thanks to Billy).

I don't think response time should matter for programming -- you're not playing games on a programming system, and that's about all response time buys you. Color reproduction and viewing angle are much more important...
–
Billy ONealOct 12 '10 at 21:20

Depending on what you're developing you might also want some virtual machine software like VMWare or Parallels. For instance if you develop websites and do so on a Mac there is no way to run Internet Explorer on a Mac anymore. You either have to reboot into Bootcamp, which is a huge waste of time, or you can have a tiny VM running with Windows in it that you can use to test IE. Some people claim to use WineBottler, an API wrapper, to run IE but it never worked for me and the moment IE gets an update the wine bottle breaks. It's easier just to have a TinyXP distro in a VM.

Of course you could spend a couple grand on a second computer or have a test machine set up with Windows but that's a huge pain in the rump. When we did that someone was always breaking it and then you couldn't test. Using a VM made testing instantaneous and put the power back in the programmers' hands.

The best thing you could probably do, however I am unclear of your budget is get everyone maximum space and privacy (However these don't go well together). With this in place, programmers can create their own comfortable work environment

Not the software kind. The wood/metal frames with glass you look through to see the outside world.

I hate being completely enclosed in a sterile office. I've been a dual-monitors guy since the 1990's, and I live in Seattle, but I'd give up free coffee and half of my display area to have fresh air in the summer.

What I like is:
A super fast computer.
A large enough monitor. (Debugging in a 17' is horrible).
Super ergonomic chair.
A private room.
Talks via chat or emails only for most of the part.
Quality headphone
Water bottle with fresh lukewarm water.
Calm atmosphere.
A sofa to lie down.
A locker to keep personal things
A book (to scribble some thoughts).
Use which OS, IDE etc (left to the programmer).
Fast internet connection with no restriction (ok adult contents can be restricted. Nothing else.)
I need good friends and fellow programmers of preferably same age.
A girl to flirt with may be ideal since life is so boring. And programmers hardly have got any girl friends. (hah! just kidding)
A free time where we can pursue any hobby that we like.
Food available locally. Needn't go out of the building to have one.

Other beverages (hot water for tea, fridge for cold drinks). Believe it or not, we're not all coffee nuts.

Customizable workspace: coders have, if nothing else, strong opinions about how we code. I often walk off with a fountain pen and notebook to start coding (often outside, on the floor, or in other strange places). The more control coders have over our process, the more productive we can be.

Business processes, etc. that allow us to customize our soft tools as we do our workspace: i.e. don't use proprietary protocols or formats that force us to all use the same client apps.

Work/life balance: despite popular opinion, programmers may have lives. Some of us have significant others and/or children. Not only is it hard to attract and keep great coders if you work them 60h/week, but the ones you do keep will often be too burnt out to be productive.

Work/learning/community balance: I think someone already covered this, but coders need chances to grow their skills and network with coders outside their office bubble in order to stay at the top of their game. This is especially true of coders working primarily on open-source products. A few hours/week of community coding, and a conference or two a year can make a dramatic difference in your coder's ability and productivity, as well as your company's clout with other programmers, some of whom you might want to hire.

Easy access to refreshments, for example a coffee pot in the room (if that's your preference).

There's nothing worse than grabbing a quick coffee before embarking on the next section of code, and being ambushed by users with support issues or managers who want "a quick chat" (or worse, vica versa).

A steady and never-ending supply of soda, or other caffeinated beverage of choice, never more than an arms-length away.

A computer fast enough that you don't leave the zone while waiting for a compiler or debugger to finish. Obviously for larger projects this becomes difficult, but ideally I never ever wait on the computer.