Thanks to the internet, the whole world has changed a lot during the last 20 years. New professions have appeared and the earth has become more international. There’s much more cooperation between people from different points of the world nowadays than ever before.
These changes have influenced the life of software developers as well. Can you imagine developing without an internet connection? No? Me neither.
There’s another big change: Earlier developers worked either alone or with people sitting in the same office, but today, it’s different. You can have team members from all around the world.
More and more companies have offices in multiple countries, and they are building international teams. It is totally normal to work with colleagues from India or from Russia, even if you are sitting in Germany or in the U.S.
I have also worked with remote teams on several projects, so I already have some experience with it. During the previous day, I was working with developers from India and Ukraine. I met a lot of nice people and learned a lot about their culture, which made this cooperation very nice and colorful. However, such cooperation is never easy.
It always takes a long time to set up an effective team structure, and both sides need a lot of patience due to the different work habits of the remote team members. All things considered, I really enjoy working in such a mode, and I hope I will have more chances for that in the future.
I see two big advantages of this working model from the company’s point of view.
The first advantage is that it is really difficult to find good developers in places like Silicon Valley or Germany and at all places where there’s a lot of tech companies around. The big tech companies are usually located near each other to be able to set up good connections between them. On the other hand, there are several countries around the world that do not have their own big tech companies, but they have plenty of software developers, so it’s better for the big tech companies to build up parts of their teams in these countries.
The second advantage is all about money: There are the so-called best-cost countries, where there are developers who work for less than half the price as workers from other countries, and with such a salary, they still make far over the average in their country.
I don’t know how long this working model will stay so popular, but it is just becoming more and more popular every day. If you are a programmer or you are leading a programmer team, there’s a good chance that one day you will contribute on such a team.
When I was a child, I always wanted to have friends from several different countries. I was curious about how they were living and what their habits were. Later, as a student, I had a chance to meet some people who came from other countries, but still not many. As I started to work at an international company, where we worked with remote teams, I achieved what I wished I could as a child. Thanks to this working model, I gained several colleagues from all around the world. They usually visited us, and I also had a few chances to visit them to travel to such countries where I had never been before. I learned a lot about their culture and habits. I also learned different ways of thinking, which helped me a lot.
So, working in such a structure gives you a chance to get to know people who are living far from you to taste their food, to get familiar with their culture, and sometimes also to visit their place. Traveling around the world on the company’s dollar sounds good, right? Furthermore, it is also a good chance to learn languages, especially to learn English, since that is the language used at most of the companies.
As usual, along with the advantages of this working model, there are also several disadvantages. But let’s think in a positive way and call them challenges instead, and see what solutions are possible.
One of the biggest challenges I experienced is the limitations of online communication. If you are working in the same office with your colleagues, you can just ask them anytime if something is not clear—you can show them your monitor, get quick support, and it is really convenient. You can also hear what your other team members are talking to each other about, even if you are not directly involved in the discussion, so later, if you are facing the same issue, you know who can support you.
Furthermore, a lot of really informative discussions are happening out of the office: in the canteen during lunch, in the kitchen next to the coffee, or at an after-work program in the evening. These are all ways of communication that cannot really be done with a remote team.
Also, quite often, the remote team members are not native English speakers, which can also cause some misunderstandings.
Another issue with communication is the time difference.There could easily be several hours’ time difference between the two parts of the team, so the working hours do not really match.
Last but not least, I need to mention cultural differences. If your team members come from a different culture, they can have a different religion, and different habits.For example, it was really surprising to me when all my team members disappeared for a while after lunch. Later on, they told me that they were praying. It was a normal daily routine for them, and something totally new for me.
There are also differences in the working culture. For example, I’m working in Germany, where I have to give three months’ notice of when I’m resigning my contract—more than enough time to find someone new to the position and transfer all the knowledge. As I was working with people from the Ukraine, they had a notice period of two weeks. From the two weeks, it was quite normal that they took some holidays. So they had maybe six or seven more days in the office. You simply had no chance to keep the project stable if a key member had just left.
How is it possible to work effectively and solve so many challenges? Try these tips that have proven successful for me throughout my experience.
At first, it is really useful if the members of the team are visiting each other sometimes. It is good to meet personally with your team members so that you can also get familiar with the culture of your colleagues. The communication is much better between people who know each other.
It is a good idea to organize business trips for the ramp-up period of the project and for bigger workshops. On the other hand, such business trips cost a lot, so most companies are really limited.
Based on my experience, the most important tool needed for cooperation is trust: You need to trust in the knowledge of your colleagues, and you need to trust that they will achieve their tasks before the due date. If you are checking the status every day, that will just demotivate the remote team.
As you start to work with a remote team, first try to understand their working style and let them understand your working style. After that, try to set up your cooperation in a way that fits all working styles.
Always handle your remote colleagues as equal partners. Try to set up a core working time when all parts of the team are in the office. Figure out the time frames when the remote team is normally not available (due to lunch, praying, etc.) and don’t call them during that period. Also, synchronize your national holidays.
In most cases, one part of the team has more information about the tasks because they have more experience with the topic or they are at the same place with the product owner, who can answer all questions regarding the tasks. This part of the team is responsible for transferring all necessary information for the remote team.
To avoid misinterpretations of the tasks, the best practice is to use written communication forms that are visible to the whole team, such as ticketing systems, chat groups, and e-mails. Provide all the information to the remote team, let them read through it, and then let them ask questions. If you are not sure about something, check the points with the product owner before answering them. Always document all questions and answers in written form.
If you are in the remote part of the team, always try to get a clear understanding of your tasks. If you don’t understand, collect your questions and send them to the so-called “local” team. Do not start to work on your tasks until you are 100 percent confident as to what you really should do. It is also good advice to create a short implementation plan and discuss it with the team before the implementation, especially if you need to change multiple components in the code.
If any questions come up while working, feel free to write to your team members. To clarify such questions, a short call with screen sharing is one of the most effective ways.
To integrate all the changes on the codebase, it is a good practice to have one dedicated software integrator who reviews all the changes, integrates them into one code, and tests it.
Working with a remote developer team has become much more common in the last couple of decades. Communicating with coworkers from around the globe is quite challenging, but it is doable if all parts of the team are handled as equal partners.
If there is respect and trust within the team, and the communication is done in a clear, well-documented way, there is no distance too large to work effectively and productively with your team members.