Some people advocate: 1) private offices for each programmer, 2) free, nicely catered lunch every day (everyone eats together and bonds), 3) usual internet stuff - comfortable office, dogs, flexible schedules etc.
On one hand, a little voice inside of me cries, “Yes! This is what it takes to produce great software: a programmer-appreciative environment.”
On the other hand, another little voice claims, “This stuff is all well and good, but nothing more. It’s cosmetic, not functional, like putting perfume on a pig.”
I have been in many situations with Class A office space, private offices, catered team-building breakfasts and lunches, etc., etc., etc. and was ready to jump out the window. Why? Because the work sucked and all the window dressing in the world wasn’t going to change that.
Then I think back to some of my most favorite projects and remember the great work that we did. Sometimes in squalor-like conditions, sharing cubicles or tables, sitting in the server room with too much air conditioning or in the warehouse without enough, eating vending machine garbage and drinking old coffee because that was all there was.
Bottom line? The “work itself” is 100 times more important than the working conditions. Sure, everything being equal, I’d rather have nicer digs. But everything not being equal, I’ll choose the better project every time, no matter what the environment is like.