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.
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.
6) Couch:When I think of couch coding the visual always includes a TV on. The TV provides nice background noise that many developers need to concentrate.
And I believe developers are innately wired to multitask. Having the latest episode of The Simpsons on keeps them plugged into the latest pop culture. Or they may prefer the National Geographic channel to learn about the history of the universe. I just dont see most developers sitting on a couch in a dark, silent room. If you know of any, perhaps they should be on some sort of watch list.
7) Bed:This is really different from the couch. Sure you might have the TV on, but thats likely intended to keep you from falling asleep. (I personally find TV puts me to sleep as I get older.)
Perhaps the serenity of being next to your significant other results in perfect code. If any friskiness starts up, then maybe its time to go back out to the couch.
8) Public transportation:For developers with long commutes on a bus, train or subway writing code on your laptop isnt so much a choice as it is a necessity. This is especially true if your boss wont let you work from home and you are under a deadline.
You can either work at the office all night or go home and see your family, sleep (or code see #7) in your own bed, while taking advantage of the commute time to write code.
9) Airplane:I have written some of my best code on an airplane. It works because you know there are X number of hours of uninterrupted coding.
It is especially effective when you are force focused because you are trying to get some assignment completed before you arrive at your destination. However, this may be one of the worst ergonomic places to code because the cramped space often results in sore shoulders or a stiff neck.
Your Internal Happy Place?
What about number ten? Ill be honest, I ran out of places. This is where having a good editor helps. He suggested that the EXTERNAL place doesnt matter as much as the INTERNAL place. At first I thought, thats just weird. But then I realized he was absolutely right.
Its not as much where you are as it is what is your frame of mind when you write code. It may be you usually do your best work with headphones on at any coffee shop. But some days you may write your best code by the pool because you need to relax and clear your head.
But the fact is, it isnt just about the right location or type of coding assignment. Its also about your mood, attitude, and your inner confidence that helps you find coding nirvana. Maybe it's about getting enough sleep, about being around family and friends or perhaps it's about your inner belief in quality for its own sake, regardless of physical place.
Do you have a better number ten location to write code? Where is your coding happy place?
Eric Spiegel is CEO and co-founder of XTS, which provides software for planning, managing and auditing Citrix and other virtualization platforms.