Remote work productivity tools for software development
A collection of tools that I found useful for effective remote work as a software engineer, grouped by topic.
Me, demonstrating effective remote work. Just kidding.
A key part to making remote work successful is communication. Because you don’t share the same office you can’t just head over to a co-worker’s desk and tap them on the shoulder. Instead any form of communication takes a little more planning ahead when you’re remote. The key concept here is enabling asynchronous communication. Having great tools for asynchronous communication lets engineers focus on getting more work done faster.
- Slack - Async team communication/email replacement. A fancy and more user-friendly version of IRC. HipChat is similar but feels less polished.
- Skype – In my experience Skype still delivers the best audio/video quality. Plus pretty much everyone has it installed these days so it’s easy to get people to use it. It has a voicemail feature, too, which can be helpful for asynchronous communication. Google Hangouts is a great alternative.
- Email – Email is still the premier tool for asynchronous communication, especially for more “formal” use cases. My productivity-tool-geek friends probably want to stone me, but I still like my Gmail + Mail.app combo very much.
- QuickTime Player – Video communication also works asynchronously. I found that putting together little ad-hoc demo videos helps a lot with gathering feedback on new features. QuickTime Player comes included with OS X so creating a quick screen recording is just a few clicks away. This also works with iOS devices connected to your computer, by the way. If you want to spend more money ScreenFlow and Camtasia are good alternatives.
- Clarify – A screenshotting app that lets you quickly build how-tos and tutorial articles. This is a huge timesaver if you ever need to explain a workflow to someone and can’t jump on the phone or on a screen sharing session.
- Confluence Questions – Think “your own, private version of StackOverflow”. This is a really cool way to build up a knowledge base over time. Questions is not really a great fit for a short-term project, but I’ve seen it used to great effect company-wide at Mobify. We asked new hires to submit a question at the end of every day in their first week. Within a month we had a great list of frequently asked questions (and answers).
Working together on a deliverable, whether it’s code, documentation, or art assets, is sometimes absolutely necessary to achieve a great result. Luckily, there are many tools out there that support synchronous or asynchronous collaboration on all kinds of documents.
- Screenhero - Screen sharing and high-quality/low-bandwidth voice calls for collaboration in teams. It has a cool “pair programming” mode where each person on the call gets a separate mouse cursor and can send clicks or keyboard input. Screenhero was recently acquired by Slack and the tech powering it will be integrated into Slack. Sounds exciting.
- Moqups – Build mockups and wireframes in the browser, with real-time collaboration. This is to Balsamiq what Google Docs was to Microsoft Word. I prefer Balsamiq’s UI but the real-time collaboration in Moqups is a killer feature.
- Google Docs – Still the best real-time collaboration tool for text editing. It sucks for editing code, though. And I wish it supported Markdown.
- Draft – Async text-editing collaboration in the browser. Supports Markdown, has version control. I just started using it and it seems like a really neat tool.
- GitHub – I like having pull-requests for everything. GitHub’s diff viewer and commenting features make it really easy to collaborate on any kind of project asset, whether it’s code, images, or text. I’m not a huge fan of GitHub’s bug tracker but it gets the job done in a pinch.
- Dropbox – The “upload screenshot” feature is great. Just hit CMD+Shift+4 and Dropbox’s client app automatically uploads your screenshot and puts a link to it in your pasteboard. Super helpful for hassle-free screenshot sharing via email or your-chat-app-of-choice.
It’s important to keep the people you work with in the loop on what’s happening on your end. A typical way to do this in an office would be through a daily standup meeting. For teams that collaborate asynchronously it’s nice to collect this info in a tool somewhere.
There are some established heavy-hitters like Jira, Asana, and Basecamp in this space but I found it useful to have something more lightweight in a small team.
- Trello – Online Kanban boards for managing projects. Slick, fast UI, and supports realtime collaboration. It’s a great way to see who’s doing what on a small team. They have a nice mobile app, too. I love Trello. My wife and I even use it to organize our cooking recipes…
- iDoneThis – Daily status reports done right. Just reply to an evening email reminder with what you did that day. The next day you get a digest with what everyone else got done. You could achieve the same by asking everyone to post their status to Slack, but I like that iDoneThis lends some structure and accountability to the process.
Not getting confused by timezone differences is important for distributed teams. If you ever got a non-urgent call from work in the middle of the night you know what I’m talking about.
- World Clock Meeting Planner - A super useful web app that shows you viable meeting times (who’s awake when) across multiple timezones. I have this site bookmarked.
- Every Time Zone - Utility web app that shows you all of the world’s timezones. Finding a time to schedule a call becomes as simple as moving a slider around. Timezone math no more!
- Teleport Sundial — Neat dashboard for seeing all of your team’s locations and timezones at a glance. Helpful when there are many timezones involved and you need to schedule a virtual meeting.
- World Clock (Mac) - Integrates into OS X’s Notification Center and shows your favorite timezones at a glance.
- World Time Widget (iOS) - World clock for iOS’s Notification Center so you can check the time in your favorite timezones quickly, even when your phone is locked.