Programmers and Office Space

by breeve 13. October 2010 16:06

When Bill Gates and Paul Allen were programming basic for the Altair 8800 on an emulator Allen wrote for the PDP-10, little did they realize how successful they would become. But the key to the success of Microsoft is not Windows, Office, or Visual Studio but rather the creation of the environment that allowed programmers to build those products.

Gates—who used to call employees on Sundays and ask why they weren’t at work—programmed every chance he got when he was younger. In High School he discovered the University of Washington’s privately created Computer Center Corporation. He was brought on to do bug testing and in order to get more time on the PDP-10, he snuck out of his house at night and hopped a bus. Those long hours in the middle of the night not only taught him how to sweet talk his way into the lab but also to appreciate how productive he was when no one was around to interrupt him. Those hands that filled the moonlight halls of the Computer Center Corporation with keyboard clicks would now be the same hands that shaped Microsoft’s programming environment and the programming environment Gates envisioned began to reveal itself with the construction of the Microsoft campus in Redmond.

Drive by Microsoft’s campus today and nothing from the outside would hint of anything special but take a step inside and things begin to look different. Instead of one monolithic floor with cubes packed together like many office buildings, each building has wings that extend outward with halls through the middle. Private offices with doors line the halls on either side. Each wing is designed to maximize the number of window offices in much the same way beach condos maximize window views.

And those window offices Gates designed were not to house Vice Presidents but programmers in the thousands.

Because what Gates understands—that many non technical individuals fail to understand—is programming is an intense mental exercise. Programming requires the software engineer to keep many variables and scenarios in his head at once. One interruption causes the built up mental logic to come crashing down. It takes minutes and sometimes hours to rebuild the logic to a point where progress can begin again. To Gates, having programmers rebuild mental logic in their heads over and over because of interruptions was a cost higher than a few thousand doors.

Gates is not alone in his thinking. In the book Peopleware they introduce the notion of flow. Flow is a state of deep meditative involvement where there is no consciousness of effort and time flies by. Of all the places a software engineer's mind can be throughout the day, it is this state where the most work gets done.

And it isn’t like engineers strive to avoid flow but just the opposite. Nothing brings more adrenalin to a programmer than to enter a state of such clear thought where real work and innovation can happen. Being in the flow is like being Harrison Ford in the Millennium Falcon equipped with hyperdrive. One minute you are in the battle of your life fighting TIE fighters—which like programming problems seem to always linger around—but after hitting the hyperdrive you realize all the fighters are gone.

So important is flow to the happiness of developers that if they can’t get into the flow on a daily basis they start to have withdrawals just like a drug addict. They become cranky and start to complain about not having free lunches like Google or free sodas like Microsoft because nothing is more frustrating than trying to reach this state while being interrupted. We all know interruptions happen but space them out at regular intervals and it is easy to see why a programmer might not be able to get anything done.

Worse, if the interruptions become routine, rather than complain that it is impossible to get real work done from 9-5 programmers will instead use their creative minds to figure out different ways to get work done. That might involve working from home more often, always wearing headphones that output the sweet tunes of Pink Floyd, coming in earlier, staying later, or reserving that corner conference room for extended periods of time. Nothing is more damning than to have a work place where everyone knows you can’t get real work done.

Make no mistake, if you are in the business of employing programmers maximizing flow is your goal. And the first prerequisite of entering flow is quiet working conditions. Bill Gates knows how to maximize flow. All you have to do is look at all those Microsoft offices with doors that close.



Powered by BlogEngine.NET
Theme by Mads Kristensen

About Me

I am a Principal Engineer with 16 years experience developing and releasing software products. I started developing in C/C++ then moved into .NET and C#. Currently working in Python/Flask and Docker. Have tech lead multiple projects. I have developed products in Windows Forms, ASP.NET/MVC, Silverlight, WPF, and Python. I currently reside in Austin, Texas.

Own Projects

Pickaxe - An easy to use web page scraper. If you know a little SQL and how basic CSS selectors work, no web scraping product will be easier to use.


FligthQuery - Query FlightAware FlightXml API with SQL


Created ASP.NET MVC forum originally targeting home owner associations but now in use by an investor group.

Currently Reading