Managing a Remote Development Team
I’ve been leading the software development team on my last position as an architect and dev lead for the last 2 years. We all are distributed around the globe and work from different time zones. Working in a remote team is challenging sometimes but an exciting opportunity to learn to manage your time, enjoy being “free from the office” and making the most out of communications.
Usually, I’m expected to review business requirements, spec out features, choose the right technologies and tools for the job, provide estimates, review teammates code and share feedback so people can learn from me, write documentation, onboard and mentor developers, keep the project manager informed on the progress of the team, delegate dev work, help moving new specs forward from a tech perspective, attend meetings, and write code of course 😃
I can specify 3 things that build up a healthy team:
- Communication: use channels mostly and less DMs to make comm transparent; when announcing something, tag only relevant people. Sometimes I do prefer to run 1-on-1s which provide space for the little things to come out.
- Task management: keep an eye on the progress of the Sprint tasks and always keep the whole picture of the project in your head; learn to accurately plan Sprint work and have enough time to perform side tech discussions with team and have a room for thorough code reviews; decompose tasks to have smaller deliverables that are easier to test and QA and be able to share the same feature between several developers where it’s appropriate.
- Time planning: this is the trickiest aspect and is mostly up to each of individual developers, but also assumes you have coherent work-life balance and keep yourself calm and relaxed while running your main responsibilities. This is something I’m still learning myself as I find it challenging sometimes.
Each of those requires appropriate tools, so invest some of your time in choosing the best tools that will work in your situation. In my team, we use Slack and Google Meet for communication (messaging and video), JIRA to manage tasks effortlessly, and Confluence and Google Drive to document processes, flows, and meeting outcomes and keep them all organized together. And they’ve been working great so far.
As a lead, you are responsible for ensuring that the team is aligned on implementation goals and any technical constraints that need to be followed. But remember to give the developers the freedom to make decisions about implementation details themselves. Tell the team what to build, not how to build it and stay around for any concerns that might arise so you help guide developers toward the solution you want them to reach.
It’s valuable to remember that each dev team consists of experts so you can always count on them in case you’re seeking the best possible solution for any particular problem or just making some discoveries 🗒️
People work hard, they show passion for what they do, they love their job, so it’s your job as a team lead to praise them and make it transparent to others 😃
While leading a dev team that constantly changes due to the nature of the project (internal system to vet applicants applying for the company’s jobs), I’ve learned some good lessons.
- Stay around for your team, even if you don't have anything to do (which is rare in my case) and answer their random questions and help step through their obstacles. As a leader, I feel it’s crucial for the team to get an immediate reaction from me. It serves as a powerful motivational tool. Even when I’m done with the job for the day I find myself occasionally checking if I somehow can help 😛
- Make every task as detailed and as clear as possible. Keep your team focused on executing while you make all decisions and communicate with other teams and product managers.
- It’s also important to learn to deal with people showing little communication, effort, accuracy or passion. Luckily this is a rare case, but we are all humans with our own “quirks”, so it’s prudent to be a little bit psychologist to handle such situations smoothly, give timely feedback to the developer and continue to try to support him further.
I’m not perfect at leading the team, I learn each and every day, I make mistakes, I learn and recover from them, I talk to different people every day, I drive the team forward and I’m excited to see where this challenging road takes me 🚀