Opinions & Insights
Remote Work Tips from a VP of Engineering
I've been working and leading remotely for years: both as a VP of Engineering or similar leadership as well as an individual contributor (IC). In a time when most of the world is moving to distributed work, this post captures some of what I've learned from my experience. Over this time, I've refined my practice and discovered new methods to improve productivity and team happiness, hopefully it can help you transition or strengthen your practice.
Communication is extremely important for working on a distributed team: you don't get to "see" one another throughout the day, so it’s essential to be intentional with your tools and modes of communication. If done well, everyone feels engaged and connected.
To get you started, I've found that having a dedicated spot at home for work is helpful. Even if it’s a small space, try to have a "work spot" so you can disconnect when it’s time to take a break. If possible, set a schedule for yourself, take frequent breaks throughout the day and a longer one for lunch. Get up and walk around when possible.
When it comes to tools, we're fortunate to have a wide variety to choose from. I'll highlight the essentials here; my recommendation is to try as best to keep it simple — more tools do not always translate to higher engagement. In fact, sometimes additional software creates more distraction and a lack of consistency will impact your teams output.
At Netlify, our key tools are Zoom for video calling, Slack for messaging, GitHub for code and project management, our own internal docs tooling and Gmail. I highly recommend you document how you expect your team to use each tool. This is essential so everyone is aligned on how to best reach out and communicate with others on the team.
Here’s a snippet from our internal documentation with some helpful tips:
Zoom Calls
-
Calls should start on time, please do not wait beyond the first minute of the meeting.
-
Calls end at :25 mins after to leave a break between meetings. Please use Google's ‘speedy meeting’ settings.
This gives everyone at least 5 mins to take a short break and be ready on time for their next call.
-
Every call should have an agenda
-
Please take notes in the agenda doc. This is extremely important. Documentation is key to remote work.
Tip: It’s hard for people to type and speak on a call. A good practice is one where everyone helps in the notes taking process. Consider taking notes for others who are talking so everyone can participate equally.
-
-
Please turn on your camera so others can see you.
Tip for leaders: Your team members may not feel that it’s ok to have their pets, children, and/or other family members visible in the background. Please assure them that this is perfectly fine. I personally love to see this from my team and my little ones usually make an appearance on a call if they are home with me. It puts a smile on everyone’s face and it connects us in a very human way.
-
Consider recording some key team calls for those who could not attend. You can record calls with Zoom and share them with the team afterwards.
Tip: A common error message that most people run into is that they are not able to record even as the host. This is likely because they are not logged in. Try logging in to zoom if you are the host and you should be able to record your call.
Slack
Our team is distributed across multiple US and EU time zones. Please keep the following guidelines in mind when using Slack.
Slack is a great method of communication and is a great way to connect with the team on different topics. This said a few things to keep in mind:
-
Avoid direct DMs as much as possible so everyone can participate and learn.
-
Consider using threads especially in rooms with a large number of participants.
-
No decision on slack. This is extremely important to ensure we are as inclusive as possible to everyone who may not be available during the time the topic is being discussed.
Tip: Create an issue for the topic to discuss, announce it in slack or team call to draw attention to the conversation.
-
Slack is very chatty. If you need to get someone's attention make sure you '@' them in the channel.
-
Please make sure to set your notification and ‘do not disturb’ so your personal time is not interrupted when you are not working.
- For escalations and on-call please follow your team process for how you will be notified should an issue arise.
-
Slack is for short term topics. Think of it this way, if you go on vacation for a week or leave for multiple weeks, the expectation can not be that you need to catch up on all slack conversations.
-
There is no expectation for immediate response in slack. If there is a need for immediate response please make sure that is handled in the proper way (i.e. Incident on-call process).
We are not an email heavy company and it's good to keep it this way. We use this medium for large team communication and announcements.
Social Time
This is extremely important for distributed teams. Please invest the time and effort to make sure your team is not only connected when it comes to work but have a personal connection to others on the team.
At Netlify, our Engineering team gets together for a 25 mins call on Tuesdays and Thursdays. We start with announcements that are quick general updates to the team followed by introductions from new team members and then we move on to topics.
The agenda is open to everyone and we encourage the team to add topics they would like to surface. For work related topics, the discussion will have a GitHub issue where we add notes so everyone can participate in the conversation.
Breakout Rooms
Zoom has a really nice feature we started using called "Breakout Rooms". A moderator gets the option to split the participants into smaller groups. Our team loves to get together in groups of 4-5 and we encourage the team to chat about topics that are not work related.
We have kept the room participants random so we get the opportunity to chat with a different set of folks each time.
Slack Channels
We have been consistently adding new Slack channels based on hobbies and interests from the team, it’s a great way for team members to build a community with others who have similar interests.
Communication, documentation and iteration are the best ways to keep the team connected and demonstrate progress in a distributed team model. There is no shame in small deliverables, no iteration is too small. I encourage this practice as a leader across everything we do, from writing code to writing this very blog post. Start with the smallest first step then iterate from there. One of the key reasons this is essential comes back to communication: best to work in a way where people can have visibility into what you're doing so they we can collaborate and give feedback.
To other remote leaders
More than ever, your team is looking to get clarity and alignment from you. Here are some things I found to be extremely valuable in addition to what I have outlined above.
Set clear goals
For every initiative you would like your team to focus on, set clear goals as a measure of success. Document what you expect from your engineers and managers. A career framework is a great way to set clear expectations with your team.
Please focus on measuring results. Give your team flexibility to manage their schedule and take control of their work and personal life goals. This is a stressful time for everyone and even though our team has been working remotely the current settings are not what everyone is used to.
Prioritize your backlog
Regardless of which project management tool you use, the most important thing for your team is to get clarity on priority. What do you expect them to focus on and what are the most important things they need to deliver.
Document your definition of done
For Netlify, these are the guidelines we expect from every pull request/code that is being delivered.
- Tests, documentation and telemetry are a must have.
- A Service template can help your team standardize their development. We created a service boilerplate project and documented our production readiness expectation.
Set expectation for code review and turn around time
If your team is distributed across multiple time zones like we have at Netlify, it’s helpful to set some guidelines and expectations around how long code review is expected to take.
- We aim for a 24 hours turnaround and we automatically assign PRs for reviews to the code owners.
- Document your best practices and development workflow, as standardizing your practice helps the team be more efficient.
Tip: Encourage your team to document answers for questions they get from their teammates, instead of responding to the question immediately. This might seem counter-intuitive, but if they document it first and send a link in response, it scales better: they can use the same documentation link again in the future.
Develop an engineering metrics practice
I go through an introduction of this in a presentation I gave a few months back. The main takeaway is that establishing a metrics driven practice, even a very simple one, where you measure results instead of hours spent will give you great insight into the operation of your team and where they may need help and focus.
Takeaways
It's a challenging time, both for teams who are just learning how to work in a distributed manner, and even many who have worked remotely for years. Communication and team connectedness is paramount during difficult situations. I hope that this gives you some insight to how we do things at Netlify, and that there are useful takeaways for your own teams.
Please feel free to reach out with any questions or comments to me on LinkedIn or Twitter @dalia_havens, I’m happy to share more details.