Making Remote Work Work
Christopher Groskopf’s Tricks for Going to the Office without Going to the Office
For the last two-and-a-half years I’ve been a 100% remote worker, first on PANDA Project and now with NPR visuals. Recently, several people have asked me how I make this work. At the same time, I’ve taken on new responsibilities at NPR as a project manager. This change has brought into sharp relief the things I’ve learned about how to work effectively from far away. Whereas I used to only have to figure out how to coordinate with my own small team, I now routinely connect remotely with our stakeholders, sponsorship and marketing departments, member stations, and more.
In this piece, I’ll codify some of the lessons I’ve learned. If you’re already a remote developer, you may pick up some new tricks and a more rigorous way of thinking about how you work. If you are planning to go remote, oh boy, you should clear your calendar because I have so many things to tell you. Effective remote work comes down to maintaining those things which are necessary no matter where you work—organization, communication and motivation.
It goes without saying that if you’re going to be apart from your team, you need to take responsibility for your own organization. What may be less obvious is that you’re going to need to take that organization to much greater lengths than would probably otherwise be necessary. Why? The lack of tangible reminders. It’s amazing how much we rely on subtle environmental and social cues for how and when things get done. If you never lock eyes with a homepage producer, you might forget to tell them about an impending launch.
In lieu of these contextual, human reminders, you’re going to need to rely on systems to help you remember. Whenever possible, you should use systems that allow you to collaborate directly with your coworkers. The most basic example of this is your office calendaring software. Going remote has taught me the value of having a schedule. Your calendar software does lots of smart things for you, like compensating for time zones and preventing conflicts. The most important thing it does for you is prevent other people from creating conflicts for you. (You can’t just "not be around" when you work remotely.)
Pro tip: if you’ve got school-age kids, schedule yourself for the half-hour they get out of school for the next ten years. In practice nobody will even notice you’ve done this and it will save you the hassle of having to reschedule a meeting because you have to pick your kids up.
The flip-side of this is that you’ll often be scheduling meetings for a group of folks who aren’t remote. When you do this you need to keep their needs in mind. Don’t schedule meetings for ten people and just send them a Google Hangout URL. Make sure a room is available (preferably one on their floor), reserve it and then annotate the calendar event with the location. Do yourself a favor and appoint someone to make sure the A/V setup in the room works well a few minutes before the meeting starts. Taking up a dozen people’s time with your telepresence issues is even more annoying than just being late. Everyone can relate to being late, but not everyone can relate to being unintelligibly garbled or echoing like the Grand Canyon.
Pro tip: If your office has a phone system that uses short extensions internally, have your IT department set one up to redirect to your cell phone. That way you can tell your coworkers to dial “5555”, instead of your whole number.
Beyond calendaring and meeting coordination, it’s important to extend your organized persona into other interactions with your team. The best example I can offer of this is being rigorous in your usage of tickets/issues. If you’re a programmer this should already be second nature, but even if you aren’t, you should be using some way of tracking who is working on what. Making sure everyone is being prompt and thorough in their ticketing can massively reduce the friction of remote collaboration. It simply minimizes how often you actually need to talk by making that information readily available to everyone on the team.
Staying in communication
No ticketing system will allow you to completely avoid conversation, and the synchronous part of remote collaboration is really where the bytes hit the information super highway. It goes without saying that modern tools like real-time video chat have made this style of work possible, but they aren’t a cure-all and they can be used ineffectively. I recommend a two-pronged approach to synchronous communication: one-part text chat and one-part video chat. Using each to its maximum potential requires some consideration.
For text chat our team uses Hipchat, a wonderful piece of software that has Android, iOS, Windows, Mac, Linux and web clients. Among its charms are its image sharing integration and its capacity to quickly spin up ad-hoc chat rooms. This is our "always-on backchannel," which is to say that during working hours our entire team is in this chat. This serves a number of purposes:
- It reduces the number of unnecessary phone or video calls that get made, because, "Hey, did you get that thing I sent you?" is much faster in text.
- It serves as a status indicator of who is at work (available = green light), who is at lunch (away = yellow light) and who is out (not online).
- It can be ignored. Sometimes you just need to focus. Text chat is asynchronous when you need it to be.
- It’s perfect for quickly bringing the entire team up to date on the latest funny GIFs of football players crying or cats dancing. (Or if the production servers are down.)
When the backchannel isn’t good enough, then you switch into video chat mode. Never use a phone if you can video chat. Body language matters, even when you’re talking about database normalization. It’s the difference between "I don’t want to do it this way" and "I will hate my job for the next week if we do it this way." You should get comfortable jumping into a Hangout even if it’s only for a five minute conversation. In fact, you should get comfortable telling people to do it. Don’t be afraid. It may annoy somebody once, but they’ll quickly get used to it and it’s much better than the alternative miscommunications.
Among the best things you can do for yourself as a remote employee is to get comfortable asking for help. You’re going to need somebody to make sure the A/V in the conference room works. You’re going to need somebody to wander the halls looking for that stakeholder who can’t find the conference room in the first place. You’re going to need somebody to assure less technically savvy people that your presence in the room is not magic. Don’t be afraid to ask for help. You’re all on the same team and it’s in everyone’s interest to make things work.
Remote-work gear worth having
Your work is going to depend on video chat, so invest in a good quality webcam. Expense it if you can, but if you can’t, buy one anyway. I recommend the Logitech C525. It’s simple, inexpensive, and a huge upgrade over even the current generation MacBook’s embedded webcam. Your own meaningful body language will suddenly be visible to the rest of the team.
While you’re shopping, buy a pair of document cameras too. This is one of those wonderful bits of technology you don’t know you need. They are especially helpful for UX wire-framing and UI sketching, but I bet you’ll find other uses for them too. I recommend the Ipevo Ziggi-HD. They also make a nice travel case for it if you, like me, work from more than one location.
If you switch back and forth between headphones and speakers a lot you can build yourself a little stereo A/B switch like one pictured above for just a few bucks. If you’re not handy with a soldering iron you can buy a really overpriced one on Amazon. It will save you constantly plugging and unplugging your headphones and, as side-benefit, it also serves as an inline mute switch when you have telepresence echo issues. I can just leave my speakers off and flip over to them when I’m talking to mute the echo.
You can master organization and communication, but those things won’t keep you from sometimes feeling horribly disconnected from your team and your mission. Do not despair. This is normal. There are several things you can do to combat the disconnected feeling of working apart from your teammates.
The single best advice I got when I went remote was from Matt Waite, who said, "Put on pants," by which I’m pretty sure he meant, "Act like you’re going to work." Get up, put on clothes you’d leave the house in, take a look in the mirror, and go to your work space. It is essential that you have a room (or nook) in your house that you use only for work. You need a place to go to at the start of the day and leave at the end. I even put an office nameplate over mine. Do the same things you would if you were going to the office. This might sound silly, but it will help keep you sane. Think of your home workspace like an exclave of your company’s offices. Act like you might run into your editor or the CEO at any moment! It’ll make you feel normal.
That being said, you also own your office, so you don’t have to deck it out with cubicle swag. Make yourself a very comfortable space to work in. My recommendations: big speakers, high-quality headphones, a comfortable desk (and an Aeron or Leap chair if you don’t stand), some nice pictures, and maybe even windows. Embrace the fact that you get to work at home. Sometimes my stereo competes with the helicopters that land at the hospital down the street. My coworkers don’t know the difference.
Force yourself to work reasonable hours. This is an easy one to screw up. If you’re comfortable and you like your job it’s pretty easy to just keep working until it’s time for bed. Don’t do it—unless you’re on deadline and then only if you can’t cut features instead of working into the night. Take breaks, walk outside, drink coffee, etc. You wouldn’t spend four solid hours at your desk if you worked in the office. You would talk to your coworkers or go for a walk once in a while. Try to maintain that normalcy and it will help the rest to feel normal.
It’s my earnest belief that some people will have higher expectations for you because you work remotely. It’s very easy for them to believe you’re in your underwear playing Final Fantasy instead of slogging through the documentation for Django. Not all work has obvious output and when they can’t see you at your desk, it’s tempting to log those blank hours as time wasted. There is absolutely nothing you can do about this, so I suggest you embrace their high standards. Aim to excel. You already have a tremendous productivity advantage because no one can interrupt you at your own house unless you let them. Eventually you will win people over and it won’t matter so much anyway, but it may take you a while.
And a final word: visit the office. If you’re in the same foxhole, but you’re never celebrating together, then it just isn’t the same. Visit your team as often as is realistic. At NPR I plan to visit at least once every three months. When you’re there get outside the office together. It pays to remind one other that nobody is just a face on a screen.
A few words for programmers
I’ve attempted to construct my advice in a way that would be useful to programmers and non-programmers alike. In general the same challenges crop up, but there are a few specific nuggets of advice I can offer to programmers:
- Consistency is even more important when you’re not in constant contact. If you don’t have a style guide, write one. It’s crucial towards alleviating the frustration that arises from inconsistent programming practices.
- Documentation: just do it. You really have to. Absolutely nobody is going to remember how to load that database dump you created (or even where it is). Document your processes, preferably by making them dead simple to repeat. Have READMEs. Have a spreadsheet index of your servers. Every minute you spend writing documentation is five minutes saved talking on the phone.
- You should be pair programming. Doing this remotely can be very tricky. It will never be as good as passing a keyboard around can be, but you should do it anyway. If a screen share in a Hangout is all you can manage then do that, especially if you have junior programmers who will benefit from the collaboration. tmux sessions can also be used to enable pairing in the command line, which is especially useful for vim users. For something more integrated, we’ve recently had very good experiences with Floobits, though it’s still relatively new, so our opinions are subject to change.
This is everything I’ve learned in two-and-a-half years of remote development. It’s a process I’m constantly iterating, especially now that I’m working more with folks outside our team. However, I think at the end of the day any future improvements I make will fall into these problem categories of organization, communication, and motivation. These are the dragons you’ve got to slay if you’re going to work far from your team. It is possible. It can be good. It’s not a choice you should make lightly, but if you decide to make the leap, you deserve to do it well.