When I landed my first remote job, I had no idea what I was doing. I just knew that I wanted to mix work with travel.
Why work in my apartment in Chicago when I could work from a co-working space in Barcelona, or Bucharest? As long as I had access to wifi and coffee, how hard could it be?
From a technical standpoint, I knew I needed to figure out how was I going to log in to work every day and be successful. The company I had just accepted an offer from had a pair programming policy: they did it a lot.
Would I be as productive as I was working in an office? And what tools would I use to ensure my success as the newbie on the team?
To get answers to my tech questions, and some travel ones too, I decided to start a podcast. I got to pick the brains of people who were used to working remotely. They shared which tools and tricks worked for them so I could make them work for me.
Since then I’ve gained my own experiences working with remote friendly tools, I wanted to share what has worked for me. If you want me to write a post about what hasn’t worked for me (I have made some MISTAKES), msg me on Twitter or Instagram.
So what do I mean by ‘pair programming’? I’m talking about two developers solving a set of problems on one machine.
Plot twist: both developers do not need to be in the same location, working on the same physical computer to pair program. They simply have to have access to the same machine.
So if I’m working from Prague and my pair is working from New York, how can we have access to the same machine?
Sometimes it’s better to pair. Sometimes it’s better to work solo. Either way, having two cursors, being able to share screens, and have mouse access while you’re working with someone else is helpful.
Screenhero is a screen sharing and voice chat application that I’ve used in the past for remote pairing. You and your pair won’t be able to both focus different windows at the same time, but this isn’t a deal breaker.
When it comes to remote pairing, I think the power of Slack lies in real-time communication. Sure you can ask a question when you need to, but you can also configure Slack to start Hangouts, or Skype calls without ever leaving the single page app.
I can’t tell you how many times I get stuck on a problem that I solved months ago. And do I remember the solution? Of course not. Luckily Slack allows you to search for keywords and phrases, which can help reduce debugging time.
Dotfiles are something you should be using even if you aren’t a remote worker. They are a set of configurations that allow you to automate your development process with a set of shortcuts. They are hidden files on your system that you can push up to GitHub, and pull down on any machine you’re working on.
This makes setting up a new dev environment less painful. It also means that the more you pair on a machine with a set of dotfiles on it, the quicker your pairing sessions get. You slowly get to know the machine your pair has created, and it doesn’t change.
For example, instead of always typing `git status`, if you and I paired together you could just type `gs` as a shortcut, or `up` to go up a directory. Here are some examples of the GitHub shortcuts that live in my dot files. If you want to see my full dotfile repo, take a look here.
Tmux is a terminal multiplexer. I absolutely love that TMux allows you to split your screen both horizontally and vertically, which can be useful when you want to see production code, logs, and tests all at once.
More importantly, you can use TMUX to SSH into your pairs computer. Two people, one machine. You don’t have to worry about hogging the keyboard because both keyboards can access a single terminal or window.
Tmate is a fork of Tmux. With TMate you can use the key bindings you use every day with your pair. Tmate also allows you to share read or write sessions with your pair, keep track of previous sections, and send an ssh command to your pair, so they can ssh into your machine.