How to Manage a Remote Software Engineering Team
One good thing that has come out of the recent quarantine is that we’ve begun to explore what’s truly possible when all kinds of teams work from home. Though there have been growing pains for many in-person office jobs, most people have been able to make it work. Remote engineering teams are no different; they suffer from the same challenges, but they also have an advantage thanks to the great collaborative software options available.
Unlike marketing, business strategy, sales and other departments, a remote engineering team has to work with an even higher degree of precision and cooperation. An effective team needs the right people, tools and, most importantly, leadership to make the magic happen.
As the CTO of Remote-how, a virtual coworking platform powered by and for a community of professionals working remotely, I meet with hundreds of users who work in virtual teams. Not only is our community scattered across the globe and working in remote environments, but our own team is also 100 percent remote. I know firsthand what it takes to successfully work remotely and lead virtual teams.
To help out anyone who has suddenly found themselves running a software engineering team remotely, I surveyed both industry experts and members of our virtual coworking community and synthesized some of their best practices to share with you.
Limit Your Meetings
The most important tip I can give you is to limit your recurring meetings. It’s not the most exciting one or even a big secret, but it will help your team members have uninterrupted time to do the work they need to accomplish. Recurring meetings can be used as a method by some managers to try and keep tabs on what’s going on, but you really need to have trust in your team members.
“I think trust is key and the future is remote. If you don’t have the trust in your employees working efficiently from remote, you should not even hire them for onsite,” said Stephan Recknagel, the CEO of Apite and head of technology at Shopgate.
I suggest that you only have meetings when there is a real agenda prepared and a subject to talk about. Keep the meeting to the point, discuss what is needed, and move back into your regular work. Only schedule a new meeting when absolutely necessary and when everyone agrees to it. The disclaimer here is that if you work with agile methodology, you should still have your regular scrums as these all serve a real purpose.
I know for a fact that many people (including myself) can’t handle schedule “destructors” and struggle to complete any tasks in between, so you should really think hard about your meeting strategy.
Communicate Asynchronously by Default
When your engineering team is working remotely, there is a big advantage in the fact that you can all work asynchronously at times that work best for you. In theory, this can really help everyone get more done and collaborate without needing to be working at the same time. If you make asynchronous comms your default, then it’s much harder for work to be interrupted because someone didn’t reply to you instantly or pick up the phone when you called them. To make this as efficient as possible, everyone should be documenting their work and decisions and catalogue them for others to see. This way, the team can take full advantage of remote conditions and work with the least amount of interruptions.
Don’t Be Vague
Being clear in your communication is even more critical for a remote engineering team. The very nature of the work we are doing is precise, technical, and has no room for error. Your communications should be the exact same too.
If you feel like you’re over-communicating or making an obvious point, keep going. When working remotely, you should leave nothing to chance. Always provide enough detail that there’s no room for misinterpretation. When working mainly asynchronously, you don’t want to set a task only to find an email the next day saying it wasn’t started because the instructions weren’t clear enough.
When supplemented by clear explanations, visualization can be a great way to paint a more complete picture for your team. Collaborative tools such as Whimsical, Figma, Miro and Mural all exist to help you better visualize your work, processes, interfaces and interactions with one another. A picture really can be worth a thousand words, so use these tools to your advantage to help get your point across more intuitively.
If you’ve followed my first tip, your calendar should hopefully be looking a bit freer. To take advantage of this newfound time and get on with uninterrupted work, I recommend using the time-blocking method to plan your work. Simply ask your team to split their day up into blocks for different tasks, and put them in their calendar.
It’s even better if everyone makes their calendars open for all others to see, because it increases transparency and allows others to plan their schedules better too. That way, everyone has a good idea of what is going on within the team. Itai Sanders, director of engineering from Morphisec, takes the same line with his remote engineering team:
“Many managers will tell you that their biggest struggle in a distributed environment is keeping tabs on what their employees are working on. Just remember, it works the other way around too. Broadcast your work to your teammates. Make sure they know you are taking the helm in both hands and not letting the ship drift in this storm.”
Don’t Duplicate Tasks in Different Tools
When you’re working remotely, it's easy to get overwhelmed by the number of different tools available. This is even trickier when leading a remote engineering team that already has to use a lot of different software to operate when they’re in an office. To help cut through the clutter and keep everything organized, make sure every tool you have is used for a specific reason.
For example, don’t use both GitHub and Trello to track the same issues. Differences can occur when things are duplicated, and you lose the “single source of truth” that you should always strive for. You really need to be ruthless in limiting overlap and distractions; if you need to comment or give feedback on a task, do it in the tool that your team is using to track it — not in any other unrelated channel.
Set Up Automated Guidelines
This is a tip that is great for any engineering team, whether they are remote or not. Make sure your guidelines, boundaries and rules cover all of the ways you work together and interact. If it’s possible to use tools that automate the process or help standardize the work you present, then go ahead and use them! For example, Prettier is a great tool for formatting code automatically. This can save a huge amount of time on trivial bikeshedding discussions that get in way of more important topics of conversation.
However, this doesn’t mean that rules always have to stay the same, so it’s important to allow team members to change them if they collectively feel like there’s a better methodology. Nezih Tinas, a software engineering manager and Remote-how student, offers this framework for how you can better automate within your remote engineering team:
- Find ways to minimize the human touch in your software development process. That could mean using SonarSource on the code review process, implementing CI/CD pipelines before coding starts and automating manual testing as much as possible.
- Code and architect with a cloud-first mentality.
- Integrate your code with your task-management system (for example: Jira and BitBucket).
Implement Retrospective Meetings
Retrospectives are a great way to find out what has gone well, what hasn’t gone so well and what could be done better going into the future. There are a lot of different formats they can take, but usually they answer those three basic questions.
It’s an inbuilt part of agile methodology, but that doesn’t mean you can’t run retrospectives even if you aren’t operating agile. In a remote setting, a retrospective becomes even more important and useful because we don’t always find the time organically to think about and answer on what could be done better in the future — which means you often have to intentionally create the time and place to look back over your work.
Make Time for Socializing
In an office, breaks can occur naturally when we all stop for a coffee or go out for lunch. Try to incorporate this into your remote engineering team too, in a way that everyone enjoys and buys into. Perhaps you all like playing a particular game online, running a quiz or just winding down with a drink together at the end of work on Fridays.
Find out what everyone would be happy to join, and start socializing! It’s important that everyone agrees on your activity to make sure everyone is relaxed and will have a good time. Don’t neglect this. Buffer’s 2020 State of Remote Work report shows that poor collaboration, communication and loneliness are top challenges for remote employees.
Remote Leadership Is the Future
All of us will undoubtedly be working more often. Workplaces around the world are finally beginning to understand the benefits it can bring to both the employees and employers, and this space is set to grow exponentially. With software development already so reliant on technology for people to work and collaborate together, it’s a natural fit for working outside of the office.
While the strategies, tips and tricks I’ve laid out are helpful, they’ll continue to evolve as we all become more accustomed to working remotely. I hope that by taking some of my advice onboard, you’ll have an easier job of leading a remote development team. It’s not always simple, but you can bet that it’s more fun and rewarding than any work still taking place inside the office.