Well.

That took rather longer than expected.

We have, finally, moved, into the new Fog Creek office at 535 8th Avenue, officially ten months after I started pounding the pavement looking for a replacement for my grandmother’s old brownstone where we spent our first few years, working from bedrooms and the garden.

Most software managers know what good office space would be like, and they know they don’t have it, and can’t have it. Office space seems to be the one thing that nobody can get right and nobody can do anything about. There’s a ten year lease, and whenever the company moves the last person anybody asks about how to design the space is the manager of the software team, who finds out what his new veal-fattening pens, uh, cubicle farm is going to be like for the first time on the Monday after the move-in.

Well, it’s my own damn company and I can do something about it, so I did.

Maybe I’m just an architecture queen. I probably pay more attention to my physical surroundings than the average software developer. I might take it too seriously. But there are three reasons I take it so seriously:

There’s a lot of evidence that the right kind of office space can improve programmer productivity, especially private offices.

Having drop-dead gorgeous, private, windowed offices makes it a lot easier to recruit the kinds of superstars that produce ten times as much as the merely brilliant software developers. If I have to compete at New York salaries against Bangalore salaries, I’m going to need those superstars, so when people come in for an interview, I need to see jaws on the floor. It’s about drama .

. Hey, this is my job; this is where I spend my days; it’s my time away from my friends and family. It better be nice.

Working with architect Roy Leone, a lot of space (425 r.s.f. per employee), and an enlightened CEO, I set out to create the ultimate software development environment.

Architects use the term “brief” for what we software developers call “system requirements.” Here was the brief I gave Roy.

Private offices with doors that close were absolutely required and not open to negotiation. Programmers need lots of power outlets. They should be able to plug new gizmos in at desk height without crawling on the floor. We need to be able to rewire any data lines (phone, LAN, cable TV, alarms, etc.) easily without opening any walls, ever. It should be possible to do pair programming. When you’re working with a monitor all day, you need to rest your eyes by looking at something far away, so monitors should not be up against walls. The office should be a hang out: a pleasant place to spend time. If you’re meeting your friends for dinner after work you should want to meet at the office. As Philip Greenspun bluntly puts it: “Your business success will depend on the extent to which programmers essentially live at your office. For this to be a common choice, your office had better be nicer than the average programmer’s home. There are two ways to achieve this result. One is to hire programmers who live in extremely shabby apartments. The other is to create a nice office.”

Roy did a great job. This is what you pay an architect for. I predict he will become something of a world expert on designing offices for software teams. Here’s how he translated my brief into three dimensional space.

Private Offices. Not only did we get spacious, windowed private offices, but even the common area workstations (for non-developers) are hidden in clever angular alcoves, so everyone gets their own private space without line of sight to anyone else.

The walls between the offices and the workstations are made of high tech, translucent acrylic which glows softly and provides natural light to the interior without reducing privacy.

Power. Every desk has twenty, that’s right, twenty outlets. Four of them are colored orange and have uninterruptible power coming off of a UPS in the server closet, so you don’t need a UPS in every office.

The outlets are right below desk level in a special trough which runs the entire length of the desk, about six inches deep and six inches wide. The trough is a place to hide all your cables neatly and has a handy cover which blends in with the desk.

Wiring. There is a Snake Tray system running near the ceiling from the server room and throughout the office, running through every room. It is completely accessible so if you want to run any kind of (low voltage) cable from point A to point B you can do this neatly. We only moved in Friday, and we’ve already redone the intra-office LAN wiring, in a project which took about half an hour, so the snake tray has already proven itself. Every office has its own 8-port network switch, so you can plug in your laptop and your desktop and your Macintosh and that old computer you keep around to read Joel on Software when your main computer is rebooting to install today’s Windows Update, and still have 3 ports left over (attention math geniuses: no need to email. One port is the uplink.) I sneer at silly building managers who still think that one LAN port per office is about right. For lawyers, maybe.

Pair Programming. When you make typical L-shaped desks many developers set themselves up in the corner. When they need to collaborate temporarily, or pair program, or even just show something to someone on their screen, the second person has to either lean all the way across the desk or look over the first person’s shoulder. To avoid this we designed all the desks to be long and straight so that wherever a software developer sits, there’s always room for another person to pull up a chair and sit next to them.

Resting eyes. Although the desks are up against the walls, there is an interior window in that wall, which cleverly looks across the corner of the next developer’s office and through his window. Because of the rather brilliant layout this doesn’t reduce privacy because even though you have a window onto the next office, it is angled so that from most positions you really only look across a small corner of that room and out its exterior window. The net result is that every office has windows on three sides, two of which look outside, creating the architectural pattern Light on Two Sides of Every Room. This is quite an accomplishment: you try coming up with a scheme to give everyone a corner office in a conventional building. Another reason hiring a great architect was well worth the money.

Hang out. We furnished the office with a kitchenette and a lounge area with sofas and a huge HDTV plasma screen with DVD player. We’re planning a pool table and game console. Private offices means you can listen to music at reasonable volumes without headphones and nobody will care.

Bottom Line it For Me.

The monthly rent for our offices, when fully occupied, will run about $700 per employee. The build-out was done on budget and paid for almost entirely by the landlord. I suspect that $700 per person is on the high side for software developers throughout the world, but if it means we can hire from the 99.9 percentile instead of the 99 percentile, it’ll be worth it.