I recently had the opportunity to work remotely while traveling for six weeks with Hacker Paradise (I took the opportunity to hide from the Toronto winter like a coward and fled to beautiful sunny Montevideo, Uruguay). This was a huge step for Vena, because until this point, our idea of "working remote" was "working from home today because I need to let the maintenance people in" or whatever. It was on a day-to-day basis and extremely informal.
Our development process at Vena is intentionally very collaborative— we encourage pair programming and debugging, and when someone needs to brainstorm a solution, they'll pull in others to bounce ideas off of. I knew my role in those ad hoc discussions would be limited— it's hard to come up with ideas on a whiteboard with someone when you're in a different country —but I didn't want to lose that connection entirely.
Here's how my team and I prepared for my departure, and the lessons we learned along the way.
Can you hear me now?
Working remotely is no excuse to miss out on the meetings we all know and love. We needed to figure out how I was going to participate in recurring Scrum meetings so I could continue to contribute to my team.
We found Slack calls were reliable and full-featured enough to allow this— our Scrum Master simply shared her screen so I could see what everyone was talking about. However, the built-in laptop microphone left a lot to be desired, especially in a large meeting room setting. I was able to hear her clearly, but the voices of the people farther away faded into static.
We purchased an external microphone designed for room use, and from then on I was able to hear everyone in the room clearly.
On top of that, while my laptop microphone was sufficient, the max volume of her laptop speakers was not. Again, the solution was to purchase a set of external speakers so that everyone in the room could hear my voice.
Out of Sight, Out of Mind
If you're the only one who's remote, it's really easy for people to forget you even exist. It was extremely key for me to take ownership and stay on top of all of communications we use— Slack, Jira, even e-mail. I hoped as long as people could see that I was posting on Slack, they would remember I was actively working and not 'slacking' off (pun intended).
Additionally, the phrase "out of sight, out of mind" becomes rather literal when having meetings from across the globe! I did a fair bit of remote pair programming (more on this in a bit), and we had our usual Scrum meetings, and I found a lot of success turning on my webcam so the people I was talking to could actually see me.
Additionally, for stand-up, my team printed out my slack avatar and taped it to our mic, so while I called in over slack, they could pretend I was standing next to them! After a couple of weeks, I ended up turning on my webcam for standups as well, which helped even more.
Me, attending our daily stand up
When you're in the office, there's a lot of socializing and impromptu discussion taking place, and you're going to miss out on most of it. So, I had to be more active on Slack/Jira/email/etc. to make up for my physical absence
And that brings me to my next lesson:
Leave a Message at the Tone
It is a truth universally acknowledged in the dev world that timezones suck. If you're working remotely from a different time zone, you're probably not going to be working the exact same hours as everyone else on your team. For me, since Montevideo was 2 hours ahead of Toronto, and since I was one of the more "morning" people on my team, I could have been wrapping up my day when some of my coworkers were wrapping up lunch.
However, when I was in Montevideo, if I started working at 9am, that was actually 7am Toronto time. And then if I logged off at 5pm, that was actually 3pm Toronto time— far earlier than we're used to people leaving normally.
I wanted to overlap with my colleagues more, to enable more collaboration, so I intentionally skewed my schedule forward a little, starting at 10am Uruguay time and going until 6pm Uruguay time. This worked out to 8am-4pm Toronto time.
(This had the benefit of making me seem far more productive in the morning, because people would forget that I was 2 hours ahead and see me messaging in Slack around 8am in the morning!)
More important than lining up my schedule is actually telling my team when I was online. I used the "status" feature on Slack— I'd consistently set myself online and offline.
This would have worked better if I actually told people what I was doing; when I returned to the office, I mentioned to a coworker that I used the ✅ and 🔴 emojis in my Slack status to signify if I was online or offline, respectively, and his reaction was "oh THAT'S what those meant, I thought you were just in a ✅ or 🔴 mood that day” .
Turns out communication is important! 🙃
Backseat Driving From Around the Globe
As I mentioned above, we try to foster an extremely collaborative work environment here at Vena. If I find myself stuck on a problem, it's easy for me to go to a coworker's desk and get their help and anyone else can come ask me for help in the same way. (Balancing this with minimizing disruptions to someone who is hard at work is hard, and worthy of its own blog post!)
I didn't want to lose this collaborative nature, even though I was on a different continent, so I took every chance I could to volunteer to pair program with someone.
Pair programming remotely was...interesting. Slack calls helped here, since we could talk about the code on the screen and the "driver" could highlight lines with their mouse, and the other person could draw on the screen to point at things.
We quickly learned that Slack calls have two major limitations:
if the presenter is using multiple monitors and attempts to share their screen, Slack will display all of the screens! Trying to cram 3 screens in a row on my 13" laptop screen meant...I couldn't read a thing. Sadly, as a result, any time one of my coworkers wanted to share their screen with me, they had to unplug their external monitors. Sorry fam 😂
Drawing on the presenter's screen only works if the presenter is on Windows or Mac; Slack for Linux doesn't support this feature. We maintain a platform-agnostic development environment at Vena, so we've got devs using all 3 major desktop OSes. When pairing with devs on Windows or macOS, I could use the magic drawing feature like it was 2018, but when pairing with devs on Linux machines, I had to resort to referring to line numbers like a barbarian 🙃
Despite these limitations, Slack calls worked really well, and we were able to be productive and collaborative without being in the same room.
Amusingly, Slack allows viewers to draw on the presenter's screen, so in estimating meetings, where other members of my team would use planning poker cards to size their stories, I would simply draw on the screen!
And, as I mentioned earlier, I called in and had my webcam turned on for our daily Stand-up and for our recurring Retro meeting.
Me calling in for our Retro as my team members do a Start/Stop/Continue activity
If your work and/or team naturally lends itself to spinning off and running solo, then you'll be fine. You can continue, business as usual, grinding away on your solo work. Your location won't really make much a big difference.
However, very very very few software jobs in 2019 are purely solo efforts, and so for the 99.9% of us who have to actually talk to other people (oh the horror! 🙃), working remotely, successfully, boils down to putting in the extra effort to be included in the team and working with your other teammates to come up with creative solutions.