The Grumpy Programmer's Guide To Remote Working, Part 1 post
Well, I couldn't very well call this post MOAR OFFICE PORN as MWOP suggested.
I have talked before on this blog about stuff related to what goes into being a successful remote worker. I've been telecommuting for 4-1/2 years now and it's the best thing that ever happened to my career. It allowed me to grow into the programmer I am today by teaching me the importance of being disciplined, learning how to communicate effectively in a remote environment, and how to not take shit from anyone just because I wasn't in the same office as them. This will be the first article in a series about what I think are some successful strategies for being a good remote worker. Today's lesson is about creating an effective workspace.
When I used to do my killer commute to work every day (1-1/2 hours in, 2 hours out) I had the misfortune of working for employers who did not believe that creative people (yes, that means you mister programmer) needed quiet and private (or at least semi-private) working space in order to get things done. Instead I usually ended up either in the cubicle farm or in that phrase that inspires the most fear for me: the open concept office. Except for the managers of course. They always had offices with doors that could be closed.
So now that you work at home, guess what? You can finally create the environment that will allow you to easily get into that state of focussed work that some refer to as The Zone. No working at coffee shops for this grumpy guy. Small tables, crappy chairs, and people staring at you while you're trying to work. I'm not doing top-secret work for the government, I'm just trying to build some rock-solid web applications. Eyes on your own crappy life, please.
For me, I started off working in the unfinished basement of my house on a make-shift desk that consisted of an old desktop from a broken desk (well, not really broken but I couldn't find a bunch of lock nuts to put it back together after I moved) on top of two filing cabinets. I bought a decent chair (more on that later) and was okay to work. Until it was winter in my part of Canada. The basement was pretty much unheated so by 2 PM my hands were numb.
So at my wife's insistence I moved into the dining room. Almost the same problem as working from the coffee shop, except I had a better chair and no people starting at me. Just the cats, but they never debugged my code properly anyway. Plus she complained about the reproducing paper up the table: bills I paid that hadn't moved down to the filing cabinet in the basement, printouts of instructions and scoresheets for my simulation baseball league. The time came for us to consider trying to use the space in our basement for something productive. So we sank $25K into renovating the basement: laundry room, wreck room for the kids (get the joke?), two storage areas, and a home office for me.
So, what is the configuration that allows me to get into the proper frame of mind to program? Well, the first one is a door that I can close. Call me a princess but sometimes I need to block out the noise from the rest of the house in order to get things done. Especially when the kids are home from school during the last two hours of my normal working day. They argue and make lots of noise when watching TV, so the door gets closed. If I get especially grouchy I lock the door too and make them call me via our phone's intercom system.
I've never liked the idea of putting on headphones to block out the outside world. I find long-term headphone wearing to be hot and uncomfortable. Yes, I used to wear earbuds during my long commute but I wasn't trying to solve any problem other than mentally cooling down from a long day at work. So an office with a door I can close means I can crank up the tunes if required but also give myself a nice quiet zone when I really need it.
Next essential item? Another piece of furniture other than a chair that you can sit on. Until recently all I had was my awesome "fat man chair" (big comfy leather chair that can handle up to 350 pounds of weight). Sometimes I wanted to move away from my desk to work out a problem with paper and pen, or even just to lay down for a minute while talking in a meeting. Hey, don't blame me because I work from home. Make it happen for yourself before picking on me!
Anyway, we recently pulled up the grotty carpet in our house and had laminate flooring installed. I got the people who did the floor to help me move on part of our three-piece sectional down into my office. Now I have a fainting couch to sit on. Most useful piece of furniture in my office. Do not underestimate the importance of having something else to sit on.
Now, more about the desk. I still have my terrible desk, but with my awesome adjustable chair I have comfort while sitting my large frame down. I'm 6'5", 285 lbs of grumpy programmer. The world is not made for people my size. It was worth the money ($300 at the local office supply place, they had only one in stock) for my chair, so I always recommend people try out several chairs and get the one that the think they could sit in for the longest. Yes, I know that standing desks are all the rage right now, but I think you are trading one set of problems for another. Maybe standings desks work for you.
My next home office purchase will be an adjustable desk from Ikea to get the perfect height for working, as I find my current setup to be just a tad too low. Again, having the ability to adjust the height of your desk to an optimal height based on your chair is critical too. I'd love to fork out the $1500 to get one of those awesome adjustable Geek Desks but that will have to wait for me to set aside enough money for purchase and delivery.
So, now my actual working setup. I have a 15" MBP generously purchased for me by my employer. Connected to that I have an Apple keyboard and mouse, and view things via a really nice 23" LCD monitor. What I really want is one of those Apple Studio Displays, but again that will have to wait until I can set aside enough money for such a purchase. Right now, I'd say that is my optimal configuration. I very rarely refer to the laptop screen, and like the amount of real estate I have now. Perhaps I could move to a two-monitor setup but I need more physical space on my desk to make it happen. Hrm, I will have to measure the new desk to see what will fit...
Anyway, in part two I will talk about how my programming style and support tools have changed since I've been working remotely.