One year ago I took the most challenging decision of my software development career. I quit my daily – 40hr/week job and joined a company as a remote freelancer. That change was even more radical because I made the switch from a hands-on developer role to a “software engineering manager” role. Although I don’t like the term “engineer” for software development, that’s my current role / job description. All this time I’m managing several development teams. What’s really awesome is that all team members are located in every possible place around the world.
In this post I will share my so far personal experience and some things I learned the hard way when it comes to manage global teams.
Let’s face the truth. Remote working is an increasing trend for several startups and ‘traditional’ companies. Personally I think that in the near future more and more companies will switch to this new model of recruiting. Hiring people globally decreases costs but it hides a lot of risks and difficulties, especially when it comes to manage all those remote workers. Here are some of the most important challenges I faced:
Everything I knew about human relationships and the way that people handle common situations in a software development team collapsed from one day to another. You don’t know how people react when they hear something that you consider normal but to their ears doesn’t look the same way. The fact that you don’t speak your mother-tongue make things even more fragile. The key to overcome the problem is politeness and clearness. Whatever you say, be polite, calm, confident about the message you want to pass and as much as clear you can. It’s very likely that even if people are somehow offended from what you said their reaction will be less hostile and they will be more willing to cooperate
Absence of face-to-face communication
One of the biggest problems I faced, especially in the beginning, was the fact there was no direct communication, no face-to-face meetings with the team members. How the heck was I supposed to manage all those guys? Fortunately, the answer was in front of my eyes and I quickly realized that you can perfectly replace real meetings with virtual meetings. All you have to do is use the proper software, have a very good internet connection – this is very important for video calls – and finally set up periodical meetings. Daily meetings to catch current activities and remove possible roadblocks, weekly meetings for planning and demoing internally the progress and one meeting every month to demonstrate the status to stakeholders, product owners or whoever has interest on the product/project the team is working on. However, I’m very clear that everyone should attend the meetings.
One of the teams I manage is composed of a developer located in Latin America, another one in China and another one in India. And me, I’m somewhere in the middle! Add also the factor that some of these developers have a second job that reduces their availability to certain hours. Like I said, I needed to setup daily and weekly meetings. No silver bullet here. When you work remotely you have to accept the fact that some meetings might not be during the typical working hours. It’s one of the prices you have to pay for getting the flexibility of a remote worker.
People, by nature, lose easily focus. It’s even worse when you work in your home instead of a typical workplace environment. To avoid such awkward situations and make sure that all team members are productive, you need to set goals. Team goals and individual goals. Weekly, monthly and quarterly goals. Goals should be clear to everyone. But the most critical part here is that goals should be quantifiable and objective. The way you measure them is shared to all team members and it cannot be disputed by anyone. Then you will be able to rank your developers and maybe replace the worst one
Well, that was only the beginning and I could write a series of blogs for each challenge I faced or even a whole book – hey that’s a good idea! Who knows. Now that I’m a flexible remote worker I might find the time to write another book!