Software Development Done Remotely
How to Make Working Remotely Work as a Software Developer
Do you live somewhere seriously lacking a large tech industry presence? Do you want to travel and be somewhere else longer than your 2-3 week yearly vacation allows? Has your spouse just received the job offer of a lifetime... on the other side of the country (or world)? Are you spending 2+ hours a day commuting, arriving to work already stressed from the drive in?
There are many reasons to work remotely, and I'll try to share about my experiences with it, and also some tools and tricks (or habits) I've used to make it work.
I've worked remotely on two different occasions and currently work for a company with a policy allowing you to work at home unless there is a reason for being in the office. On any given day half of the team may be in the office, the other half working from home. It gives great flexibility, even though I generally try to be in the office, as it allows me to separate parts of my life, get a better pulse of what is happening in the office and, communicate face to face with the non-tech team.
I was commuting an hour each way to work, was young and hadn't yet had a great travel experience. I was tired of the routine and wanted to experience life in a different culture, language, and setting. Did I have to quit my job to get that? The answer was no, and with the blessing of my boss I set out to Quito, Ecuador for 6 months (the length of a tourist visa). It was an awesome time... I worked during the week (I cut my time down to 3 days a week), and travelled on the weekends; going all over Ecuador, Peru, and Colombia.
During this time I learned what tools work, how it differs from working in person with the rest of the team, and even things I didn't enjoy about it. All in all, it was a success.
The second time I worked remotely for 3 months in Medellin, Colombia, which happens to be where my wife is from (not a coincidence). This was another great experience, getting to travel, learn (I am a certified coffee grower!), and I even got engaged!
Keys to Success
The keys to success are actually pretty simple in my mind, and are really only two things. You must communicate well and be trustworthy and reliable. Your employer needs to know what you are working on, able to get ahold of you when they expect to be able to (expectations are important), and they need to be able to rely on you to get things done when you say you will. It really isn't any different from working in an office, except that they can't simply walk by your desk and see what you are working on... you need to use tools that convey this, and go out of your way to communicate with both your co-workers and your boss.
Tools of the Trade
Google Hangouts - is not only free, it is amazing. It's like Skype, only better. You can share your screen, chat, and have a video call all at the same time.
HipChat (or Slack, Campfire, etc...) - is a great chatroom tool (for lack of a better term) we use on our development team to stay in contact and share files. We've also integrated it with our deployments so we know when they are happening.
GitHub - We heavily rely on pull-requests, which must be reviewed and merged by another member of the team, no matter what the size of the commit. It not only keeps us in the loop of what others are working on, but is a great teaching tool for both parties involved.
Pivotal Tracker - All of our assigned work comes from this tool. We've used other ones--Trello, Redmine, Google Docs--but this is the one that has worked best for us. It notifies the requester when you complete work, and allows for back and forth communication.
Reliable Internet - This seems to go without saying, but if you can't rely on your connection, it creates difficulties for everyone you work with.
Is it for Everyone?
It sounds too good to be true... you can live where you want, there is no commute, and you can work in your pyjamas. The truth is that it doesn't work for everyone. You may find that there are too many distractions at home (kids? laundry?), that it can be lonely, that you have difficulty separating your work life from your home life, that you communicate better in person. All of these are legitimate, and really it is up to the individual and also their employer to know what works for them.
It's also harder to connect with others in your office, especially those you don't work directly with (other departments). Constantly asking "has the meeting started yet?", and missing out on the Thursday afternoon social event.
Finding Remote Work
You can use your favourite job posting website, such as GitHub or Stack Overflow, but you should also take a look at these 2 websites which are dedicated to remote work. The first is Nomad Jobs which also has a section showing the cost of living in each city. Another one is We Work Remotely which has a fair amount of remote job postings.
Working remotely takes an extra effort, but can offer great advantages for the right individual. Let me know what your experience has been and what works or doesn't work for you!