6 months programming remotely

April 27th, 2013 - Göttingen

We had been working remotely in several occasions over the last two years, but it wasn’t until the last six months that we became full time remote workers. Overall, it’s been a great experience and our productivity it’s better than ever, but there are also some inconveniences and things to watch out for.

In regard to productivity

First of all, we have more solid hours. I used to spend two hours a day commuting, now I take a look at my feeds while having breakfast and I’m ready to go. Of course you spend some time talking about not work related things when your teammate logs in (which is something good), but I find that time needed just to start is significantly shorter compared to arriving at the office.

And during these hours, I’m much more focused on what i’m doing. Our previous workplace was an opened shared space in which really nice people came and go continuously and talked to us, but even with fewer people I find it hard not to overhear what they are working on and start thinking about it.

I love that we can pair program and discuss a topic in group and then immediately focus on a task alone without distractions. It’s like having a switch in a office to teleport you between the meeting room and a private bureau.

It also helps a lot to get the most out of those hours than i’m well rested: I don’t have to struggle my way across subways, traffics jams and steep streets, I can rest my head at lunch, and I can even have a 15 minutes nap if i really need it - not being able to do this always struck me as something visibly counterproductive. Now I can fit some sport in the middle of the day to stretch out, clear my mind, have a shower and start working again with energy.

** about knowledge sharing **

Working remotely doesn’t mean working isolated, there are multiple ways to share ideas and though it’s true that you lose some of those which come through casual interactions, you have to consider how much you get out of plenty of erratic background conversations while trying to focus on a problem, compared to the fewer and intentional conversations that you have remotely while working without distractions.

Having said that, you do have to pay attention to communicate through chats, mails, phone calls, screensharing.. there’s going to be somethings that you don’t say out loud, but there’s also a good side on thinking about an issue first and then asking than saying the first thing that comes to your mind before putting some thought into it.

I find it important to keep the connection alive, It’s nice to see the green lights on the group chat even if we talk asynchronously. We check with each other early on the morning and quite often after lunch, and I tend to start working earlier and leave earlier but we share most of the work hours during the week.

We wouldn’t be able to do much without some good tools in place: we use tmux+vim and ichat screensharing for pair programming, hipchat for group chat, google talk for quick calls, google hangouts for group video calls, github for code, pivotal tracker for tasks, referema for the knowledgebase, google drive for documents that we want edit collaboratively, dropbox for the rest of them, and of course emails.

** your home as your office **

this can depend greatly on who you live with, but in any case the best thing its too have your own space in which it’s clear for everyone that you are working. You are going to find yourself taking advantage of short breaks to do the laundry, wash the dishes or talk to your family, but since of the commons problems for remote workers is not doing enough breaks and getting up of the chair, this is actually not an issue.

One of the inconveniences is that it’s harder to stop working and disconnect, some tips would be to have your office in a separate room or at least not in your bedroom, and try to have a more or less fixed schedule or at least a fixed upper limit. It’s hard to have dinner while watching the code you were working on on your laptop 3 meters away from the table, you have to make an effort to leave it for the day, even when you are so engaged in the problem you are doing that you want to cheat and do a little more when nobody is looking.

On the bright side, you can have your office setup as you want, your table will have just the right amount of free space, monitors, papers and mugs as you feel comfortable with. No more cleaning service asking you to leave your desk to clean while you are coding or fights about the dirty cups in the sink and complains about a lousy internet connection of a coworking place. Get the best connection you can find, a good router, put on some music, make your working space as optimized and comfortable as you like it to be.

This is a place in which you feel happily working on a sunday night, compare it to working almost alone on a sunday in an larger office space with your headphones knowing that you need an hour to get home afterwards.

** no fixed hours **

This may sound like saying “working anytime you want”, where it is actually much closer to mean “working all the time”. That’s one of the things to watch out for, if you enjoy what you do, if it leaves you hanging on a problem until you fix it, or if you just have a lot of time pressure, you lack the time and location restrains that help you separate work time from the rest of your life, and you can start getting burned-out without noticing it.

I find it useful to have a routine even if its a flexible one, which includes shared team hours, an upper limit to disconnect on a regular basis and doing intentionally less on weekends. The extra hours you get everyday and the flexibility let’s you go fit other activities like learning languages or doing sports while getting enough sleep.

** too few distractions and too much time on the chair **

I went from having a lot of distractions to almost none, and I realized that when someone talked to me via chat or phone call for something not related to work it felt like a horrible diversion. I changed my mind about this but I still see that I don’t check on how other friends are doing as often as i should.

In regard to team work, there’s a tendency to communicate more asynchronously through chat and emails, if someone asks you to take a look at something and you need a minute to finish what you were doing, you say ‘i’ll be there in a minute’ more often than you would do in person, which makes sense to me.

What it’s more problematic is the fact that you can be hours motionless in your chair, not even moving your eyes off the screen. This is already bad in an office but it can get worse when there isn’t anyone around who makes you get up and take a break. I’m paying every time more attention to working in a healthy way, since spending the whole day with a laptop it’s proving to be pretty unhealthy for my neck and back.

I’m using BreakTime to schedule breaks and remind me to stretch out, go grab something to drink and move my legs around the house, and I go running on alternate days. Doing sport regularly seems to be in my case the most important thing to avoid position related pains, and i love that i can fit it easily on my daily schedule.

** on motivation and teamwork **

these have been some of our experiences:

  • You have to avoid working continously the whole week because this will slowly exhaust you.

  • You have to pay attention to your social life, and do other things that you love. This will make you more motivated in general, work included.

  • The goal of your daily work is to show something good and useful and get things done, nobody is going to watch over your shoulder and check the hours you were sitting on a chair looking busy. This doesn’t mean that you only share completed tasks, you also need to share frustrations - the fact that something it’s taking you a hard time - and explain and get feedback on what you are doing. Working too many hours without checking with someone can make you feel lost or lead you to be too perfectionist on a task that might not be that important. Walking someone through your documents and code commits, and discussing what you are doing is a good way to avoid this.

  • It’s good to notice the presence of the team throughout the day. Small things like the green lights and jokes on the group chat helps you to feel connected, hangouts and voice calls are really useful, and pair programming is the best thing that we do in terms of being engaged, sharing ideas and having fun.

** working in person **

Sometimes you miss the personal contact, at least once a week i’d like to be able to teleport to a shared workplace for some hours. If you combine working remotely with working abroad, then you also miss meeting your close friends after work, but that’s another story.

Working in person helps you analyse a problem by sketching quickly a few things on a paper or whiteboard, but recently we’ve been using LucidChart on google drive to draw some diagrams collaboratively, and though it’s slower than pen and paper we end up with more detailed documents that are much easier to share and update.

It’s clear than seeing other people faces gives a you a better insight into how they are feeling. Voice calls and hangouts are a decent substitute but it’s good to meet in person time to time (beers as emoticons are not the same).

People working in the same place share good moments but also some annoyances and friction. In an office sometimes you wish to have lunch alone watching an episode and disconnecting for a while, or just being able to focus without distractions. And at home you miss some days that were like small hackathons, with several persons around a table full of laptops working, swearing and laughing.

** to sum it up **

Remote working it’s not for every person or situation but in my case it gives me more hours of productive work while at the same time making it easier to be well rested and practice some sports.

I could say that there is a 20% of the time in which sharing a physical place would be more effective (sketching a problem on a whiteboard, asking and watching what they others do more often…), but the other 80% of the time in which you just need be productive tips the scale.

You need a technique and habits to communicate properly while in an office it would be just a natural thing, and you do miss meeting in people in person time to time. The ideal for me would be to have a shared space 15-30 min away to work there occasionally while working remotely the rest of week.

I have to get better at keeping in contact with the all the people who I can’t meet as often, but I have wasted a huge amount of time commuting and being constantly distracted, and I’m glad that i’m not doing that anymore.