Where are you? The question was urgent.
I was sitting in the office of a peer manager, who was on the other end of a cell phone conversation that I thought was absolutely ridiculous. Earlier in the morning she had left a message for an AWOL developer requesting he call her immediately.
Now it was just after lunch and I was in her office to find out where things stood on her teams side of an inventory management module. My team needed to start integration testing with her teams code.
The problem was that her developer was nowhere to be found. She was not a happy camper.
It turns out he decided to work from home that morning because he was working late to meet the deadline. He didnt inform her directly, but had told a coworker as they walked out the prior night.
But that same teammate called in sick the next day and forgot to inform his boss about his buddy working from home.
So what did I find ridiculous about their exchange? I still cant believe these miscommunications still happen with all the means we have for communicating especially among the technically savvy but they happen every day.
However, that isnt what most irked me. I believe that every developer is a unique human being who works best in different environments. Did it really matter where he was?
No, what really mattered was that he didnt communicate effectively regarding the status of his code.
Whether he was working from the office or Timbuktu didnt make much difference. The code was either ready or it wasnt.
And it was ready. And it worked just fine. Who cares where it was developed?
I personally know back in my code writing days I worked more effectively from home -- sometimes. Yet there were other times I worked better in the office. And there were some circumstances that required some not-so-obvious places for software development.
In my most humble opinion, here are the ten best places to write code:
1) Office Cubes:Whether it is in cubes or open bullpens, sometimes its best to be in direct, constant contact with your fellow developers. This is great for working on tightly integrated modules that require constant interaction. Its just easier to yell over the cube walls and call for impromptu meetings.
The downside is that it can be annoying to have another developer constantly asking questions or just making conversation when you are trying to concentrate. And these days it isnt always easy to verbally communicate when almost everyone is jacked into an iPod or Pandora on the web.
2) Office (with door):You have the benefit of being physically close to the team with the added bonus of being able to close your door. Lets face it, though, in todays age of reducing costs not many developers share an office, let alone their own.
If you are lucky enough to have this option, it can be nice because you can control the environment. Dim the lights, plug in your headphones and enter your own world of object orientation. A major benefit of most office environments is that the setup is more ergonomically suited for keyboard typing with a decent desk/chair combination.
3) The Great Outdoors:Just the sound of Im working by the pool today has a nice ring to it. Whether youre coding by the pool, the beach, the park or on your patio, there is something awfully appealing to working outside.
Is this a fantasy or can it actually work? Well, it cant hurt to try! If you have a long lasting battery and an anti-glare screen, then working in the sun can have a relaxing effect, resulting in more productivity. Or it could result in a nice long nap and sunburn. Oh, and dont forget to check the weather so it doesnt rain on your parade.
4) Coffee shop:Whether it is Starbucks or a local hole in the wall, there is something about coffee and coding that go together.
Someone should open a chain called Coffee and Coding. (Actually found a site dedicated to Coffee and Code events!) Maybe its the aroma of freshly ground beans that inspire innovative JavaBeans.
5) Restaurant:This is really different than a coffee shop. Im referring to eating food and coding.
This can be really difficult if youre eating something sticky or messy, like Buffalo wings, in which case you will click-stick-wipe over and over. Better to eat a salad something where the fingers dont touch the food.
So why code and eat? If you skip meals to make an impending deadline, you risk impaired judgment due to lightheadedness. Therefore, if you can get out of the office for a meal it allows you to clear your head and provide sustenance for cranking out coherent code.