Remote work

Computer on the grass

I have been working remotely since May 2014, and it has been a very good experience so far. I have worked in a physical office since I began to work as a web developer, so I thought it would be difficult to adapt to it. But if you really like your work, it will be pleasant.

The main advantage over working on a traditional office is that you can choose where you work from. In my case is my home, but any other place where you can sit and use a laptop would work, be a coffee shop, a park, a shared office… whatever place.

You can also save time because you don’t need to commute anymore. So you can use that time to do your housekeeping, spend time with your family, workout… you can adapt your time much better.

There seems to be two remote working modes: remote-friendly and remote-first. Remote-friendly means that you can actually work from any place, but you have to stick to the company schedule. Remote-first means that everything is asynchronous. Even if you are in the office and you have to talk to your nearest workmate (who is also present), you have to use the chat to make the conversation available offline.

Maybe the most affordable and realistic mode is remote-friendly. When the company is office-based and wants to have an external remote team, this is the usual way they work. It allows to include people from other countries, but the working hours are limited, and everyone has to adapt to it. The remote-first approach seems like the immediate future to me. It’s 100% remote philosophy, and makes even a deeper use of the tools.

What tools do I use for remote working? I think they are pretty standard:

  • Slack for chatting/general communication. It’s great since the chats have history. So if they are talking and you get online later on, you will be able to see the conversation since it began, and Slack will place a horizontal rule to set where you missed it from. I could say Slack is both synchronous and asynchronous communication.
  • Email for asynchronous communication. This comes before Slack, where you receive your credentials. It’s also used to receive code reviews notifications from Github.
  • Github to host the code. As you may know it’s also used for code issues and pull requests. I find pull reviews especially useful. You work on a feature branch and when it’s done, open a PR. Your code will be reviewed by some team member, and if they find any flaw you can discuss it and commit some amends, until it’s finally merged into the base branch.
  • Trello and/or Jira to create the tasks. Agile software development is the way many teams work nowadays, and these tools try to adapt to that methodology. Each week is called a “sprint”, in that sprint the team puts tasks in form of cards. The card describes the task or issue to work on, and it must be estimated in form of points. Each team defines how many points correspond to actual time. All these cards are created in the “backlog”. Then, when you get one card you move it to the “in progress” column. When it’s finished you move it to the QA column to be verified. If everything is ok, it can be moved to some column like “done”, so at the end of the sprint the team know how many cards have been finished and verified to deploy all the code to production. This is the ideal case, but it is usual that some cards need more work, in that case they are moved to the “reopened” column to be picked up again and continue working on them. Thanks to Git branches we can switch to any feature easily.
  • Marvel for the mockups. There are many other options for this, like the classic Balsamiq Mockups, or Moqups. It is just a matter of personal preference, but I have used Marvel and it works great. It supports comments and collaborative to-dos.
  • Hangouts or Skype to meet up. Sometimes we need synchronous communication to discuss something more in detail, or to do the “daily catch ups”. This belongs to the agile software development methodology. It consists of talking to each other, in an ordered way, so everybody knows what each team member has been working on the previous day. That way the team has the whole picture to understand the project progression better. It can also be used to do some questions with a context so they can be answered more efficiently. These two tools are the most used, and they can even do screen sharing, very useful to do demos or to show something when it is easier and faster than describing with words.

Just like in a physical office, I think we should look for our health and do regular breaks. This is not easy to remember when we are focused on something for a long time. For that reason I recommend to use the Pomodoro technique. There are lots of apps and websites out there that you can use. All of them will do the countdown for you and notify you to do the break. Just leave what you are doing and stand up, look through the window, stretch, go for a walk, talk to someone, do some little activity or chore… whatever that makes you use your body. You will feel better and since your body and mind are connected, you will feel more fresh and productive. It is a win-win situation where you are looking after your health and the work is done faster and better.

Maybe the worst thing about remote working is the lack of contact with your workmates. Yes, you can see them through a videoconference and chat everyday, but it is not the same. You cannot invite them to go for some coffee or a drink after work. For this reason I would recommend to attend some meet ups in your city. Search for the technology you like and meet new people, that would alleviate this disadvantage.

I recommend the book Remote by 37signals. They are one of the companies that popularized this way of work, and they expressed their experiences in this book.

When you are ready to take a look into the remote market, I recommend the site We Work Remotely, by the same authors of the “Remote” book.

Did you like it? Please share it:

Get my ebook for free

10 ideas that helped me become a better developer (and may help you too)

Subscribe to my mailing list and get my ebook on 10 ideas that helped me become a better developer.

About Me

David Morales

David Morales

I'm David Morales, a computer engineer from Barcelona, working on projects using Ruby on Rails and training on web technologies.

Learn More