Three Essential Remote Work Practices for Engineering Teams

It’s been around two and a half years since Shopify transitioned to become a fully remote-first company. A lot has changed since we became Digital by Design. Our merchants have had two record-breaking Black Friday and Cyber Monday weekends, we’ve shipped hundreds of new additions into our platform, and we have hired people around the world.

In fact, I feel like I’m living proof of how much the culture of Shopify has progressed. I’m typing this article from my home in a small rural village in Cumbria where there are more farm animals than humans. The fact that all I need is an internet connection and a computer in order to contribute to the world’s best commerce platform is quite remarkable: remote is the great equalizer.

2022 has been a year of strengthening our remote working practices. Like the software we produce, we have iteratively been refining the ways in which we work together as we learn more about how to best communicate, collaborate, and get shit done, whether that’s from an apartment in a busy city, or among the fields and sheep.

After all, we’re still mostly using the same tools that we had access to in the office. But the way in which we use those tools together has had to change in order to make sure that we’re as effective as possible. We are always learning.

As we bring the year to the close, I’d like to highlight three practices that are essential to succeeding remotely:

  • How to structure teams so that you can hire across the world but still maintain the right level of collaboration and connectivity.
  • How to establish norms within teams so that communication is clear, unambiguous and stress-free.
  • How to maintain boundaries within your work and home life so you can do great work but also be able to rest, recharge, and stay healthy.

I encourage you to discuss these topics with your teams to see if you need to update or iterate on your remote working practices.

How to Structure Your Team for Remote Success

If you hire engineers all over the world, then you can’t fight against the laws of physics: time zones exist, and there’s nothing you can do about them. Therefore, you need to learn to work with them.

Teams are how great work happens, and great work happens when there are plenty of opportunities for real-time collaboration, communication, and pair programming. This is especially true for engineers who are earlier in their career journeys that benefit the most from close mentorship and guidance.

What this means is that we try to optimize our teams so that there is a high degree of synchronous collaboration. More specifically, you should try to optimize your teams so that there is as much of an overlap as possible in their working hours. Knowing that your teammates are available if you have a question or get stuck is invaluable, and suffering in silence is often one of the biggest worries that people have about remote working.

What this means is that you can staff your teams from the broad time zone-related areas. A team may be based in Europe, where most of the continent only has a couple of hours of time zone difference. Another team may be on the east coast of the U.S. or Canada, and another on the west coast. The idea is that for most of the day, the engineers within a team are online and available to collaborate in discussions, pair programming and mentoring.

But what about outside of teams? Well, that’s where the flexibility of asynchronous communication comes into play. Most managers and senior individual contributors communicate by writing, rather than in meetings. Engineers can use asynchronous time to do deep work inside their codebases without interruptions. Additionally, we expect our teams to produce high quality documentation for their code and services, which also drives down the amount of meetings needed between teams.

So that’s our biggest learning for structuring teams: synchronous communication inside, asynchronous communication outside

Use Norms for Stress-free Communication

The second biggest learning is having teams remove all of the ambiguity from their communication by establishing norms. 

We all have access to so many different ways to communicate that without some structured discipline it can become a bit of a mess. Norms are a way of bringing order, and importantly, ensuring that individuals use the right method of communication for their situation.

Norms within a team may look something like this table below. It lists the different mediums of communication (e.g. chat, SMS, written document) and the expectations for using them.

Medium

Length

Reply expected?

Reply time?

After hours?

Phone call

Short

Yes

Immediate

Yes

SMS

Short

Typically

Hours

No

Chat

Short

Typically

Hours

No

Video call

Medium

Yes

Immediate

No

Email

Medium

Not always

Days

No

Recorded video

Medium

No

N/A

N/A

Written document

Long

No

N/A

N/A

Wiki/README

Long

N/A

N/A

N/A


You can run a session with your team to come up with your own norms. Start with a blank version of the table above, and then list all the different ways you communicate and what the expectations are. 

Don’t be surprised if there is disagreement: that’s why you’re doing the exercise!

Once you’ve agreed as a group what your norms should be, get them written up and added to your team’s documentation. 

The best part of establishing your norms is that it allows people to more easily choose not to check messages outside of working hours. For example, in the table above, it shows that if something really urgent is happening out of hours, I would receive a phone call. Therefore, I can safely ignore all of those other forms of communication and get on with my evening after work is over. This is especially important when setting up on-call schedules.

Additionally, the beauty of establishing your norms is that it gives the team the ability to do deep work that requires focus—like programming—during the day. Using the norms in the table above, we can see that it’s completely acceptable to take a few hours to respond to chat, so I can close it and go deep into the code without fear of missing out.

Establishing norms is the best way of making your communication clear, concise, and stress-free. Give the exercise a go: it’ll make your working life easier.

Manage Yourself, We Trust You

Establishing norms helps you manage your own attention and energy, but they’re only a small part of the picture. Successful remote working requires every individual to increase the intentionality and discipline of their working day in order for it to be a sustainable, long-term situation for them.

Working in offices during established working hours did bring one benefit: a forced daily routine. Commuting was a pain, but it also was a defined transition between home and life. Open-plan offices were noisy, but you did bump into colleagues that you hadn’t planned on talking to.

Thriving remotely requires every single one of us to understand what makes us feel productive, connected and able to maintain this way of working indefinitely. That requires introspection, and it requires us to also be able to force upon ourselves habits and routines that, like exercise, will strengthen us in the long run.

Everyone is encouraged to explore what works best for them and then take ownership of their routines. If we employ you, we trust you. Run your day in a way that makes you perform your best.

Some people like working earlier in the day so they can finish earlier to spend more time with their family. Others prefer a late start and late finish. For some, getting a long walk, run or bike ride at lunchtime is essential for their productivity and mental health. Some people enjoy the feeling of catching up on Slack messages while watching TV in the evening, while some prefer to keep a super clean work-life separation outside of office hours. 

We want individuals to feel empowered to define their days, their habits, routines and their boundaries and then to work out how to integrate them into their teams via their norms, as detailed in the previous section. When people have control over their time, they produce better work as it rides the peaks and troughs of their creativity and energy, rather than fights against them.

In order to champion flexibility, encourage the conversation. Celebrate the differences. Discuss within your team what each individual does every day in order to manage themselves and their time. Set up social channels within your company to put the spotlight on the full spectrum of interests, talents and hobbies that everyone has. Connect together the runners, the crafters and the parents. The stronger the community, the stronger the collaboration.

Working Differently, Not Different Work

Remote working doesn’t require us to do different work, but it does require us to work differently. As you continue to adjust to remote work, don’t just doggedly push forward through pain: step back and think about how you can structure your teams for the right balance of synchronous and asynchronous work; run an exercise to establish norms in your team to enable stress-free collaboration and communication, and then use this to offer greater flexibility for people to do their best work at the times of the day that suit them.

James Stanier is Director of Engineering at Shopify. He is also the author of Become an Effective Software Manager and Effective Remote Work. He holds a Ph.D. in computer science and runs theengineeringmanager.com.

Wherever you are, your next journey starts here! If building systems from the ground up to solve real-world problems interests you, our Engineering blog has stories about other challenges we have encountered. Intrigued? Visit our Engineering career page to find out about our open positions and learn about Digital by Design.