My team is a part of a ten-person group responsible for maintaining several services that are part of a large system. Various teams around the world maintain other components. Most of the business and technical decisions are taken by the stakeholders themselves.
Initially, it is not obvious what practices work best in this situation. Here are our lessons learned.
Start by building relationships
You cannot succeed without a strong relationship with the people you are working with. This includes people from the customer’s organisation as well as other 3rd parties involved. Knowing each other makes it easier.
Say hi on a general communication channel, leave a note about yourself and which team you are joining. Set up profile pictures, turn the camera on, join coffee meetings, be active on communication channels. You can even share some of your hobby or family details if that is something you are comfortable with. All of that will make an impression you are a human, not a robot.
Always respect the other person. Recognize other people’s good work and say thanks. Avoid criticism and sarcasm because you may not be understood because of language barriers.
The most challenging thing at the beginning can be to know the right person who can answer your question or redirect you. Your team leader can help you organize an introduction call with teams you will collaborate with the most often. Is it possible to visit them in person? It is even better!
Confront geographical and cultural differences
Working in a geographically distributed organization comes with some challenges. This includes not only different time zones but also cultural diversity. You need to be aware of these aspects and consider how you can work more effectively with your team.
Yes, some meetings will be held very early or late and being in sync requires more effort. But, there are many tools to help you work across time zones. You can use Google Calendar to see other people’s working hours in your own time zone. Slack allows you to include your local time in your profile information. These are simple things but it is worth making sure you have this all set up properly.
It is also a good idea to clearly communicate what hours you are available when you have a deep work period or walking the dog. If you work with someone closely, prioritise your overlap time. You should also get rid of the expectation that you will get an answer immediately. It is usually better to make an appointment that will clear up most of your doubts than to ask about minor things all day long.
Cultural differences are more difficult to solve without meeting face to face. What is essential here is clear and straightforward communication and awareness that we are all different. You have to think about the language you use and how you are perceived. Is your message clear and understood by everyone, do you communicate often enough and finally, does your message reach the audience? You may meet people who are too compliant or too dominant. It is a good idea to discuss these issues, get to know each other better and understand each other’s expectations.
Do not expect to be trusted from the very beginning
Working remotely requires a particular level of trust. The remote contractor may be like an alien – we don’t trust the people we do not know. There are a few things that can be hampered by this.
You may be left out of important design decisions. It can result in both dissatisfactions with decisions made and more serious things like architectural errors. It can also severely disrupt the flow of information, which is crucial in remote work.
Another concern might be a lack of access to project resources, including information, infrastructure, and communication channels. In this case, a lot of effort has to be put into getting the information you need, which might result in a longer delivery time. If you cannot obtain the desired access, ensure that you have a reliable way to get the information needed using any means of communication.
At the same time, you should understand that while it is useful to have access, its lack also has some reasons. Mostly due to the company’s regulations and security policies. Incompetent use of available resources also increases maintenance costs. Or sometimes it is to prevent you from unknowingly messing up someone else’s work.
Build the trust successively
First of all, show that the project matters for you. Take responsibility for it. When needed, stretch your working hours to get the job done. Just be careful not to make it a habit! Software projects we do are more often marathons, rarely sprints. The best recipe for good long term performance is to avoid exceeding an average 40 hours work week.
Be transparent in what you do. Make sure the customer knows what you are doing at any given time. If you have faced a problem and see that it will cause a delay, be clear about it.
Show initiative. If you see room for improvement, do not hesitate to present and implement your ideas. Do not limit yourself to the objectives requested by the client, but be sure to check with them.
Deepen your knowledge of the product and the domain you are working on. Understand the expectations. Do not hesitate to ask questions. However, do not try to prove that you know everything if you do not.
Constantly expand your competence in new areas. If you can, prove that you know something. For example, show evidence that you have explored the field, such as a certificate or a blog post.
Make sure your work is visible
When working remotely, it is easy to give the impression that you are not performing well. If proper communication is lacking, you may only be judged by the results of your work. In cases where everything is going as expected, it may even be desirable. But what if unexpected problems torpedo your work and there are no visible results? That is why it is crucial to communicate frequently and accurately what you are doing and about problems you face. Try to avoid the classic waterfall methodology, which will make your work ineffective in most cases.
In addition to talking to the customer on a daily basis, you can regularly present your progress and the challenges. The time-frequency depends on the specific case. On the one hand, it should be frequent enough to rectify the direction that potentially goes astray. On the other hand, not frequent enough to cause significant project overhead.
To make sure everyone knows what is going on, share meeting notes in a place that interested parties can access. Do not hesitate to prepare a presentation or demo of your project. This will certainly help to verify that you are heading in the right direction but it will also demonstrate that your work is producing results. If you make arrangements at the meeting, leave a summary note, e.g. state what you have decided or what are the next steps.
Create communication channels with each team you cooperate with. Keep in mind that on busy channels, information might get lost. On the other hand, too many channels may give you an overhead, so do not go too far. Share important information in the email (and stored on a private Wiki if you have one – this will create a searchable resource visible for newcomers as well).
Do not take this advice as an encouragement to make a lot of noise. This may indicate that you are working on something intensely, but it is counterproductive. Some conversations are better to take on private chats. Use your messaging channels appropriately. Involve only the people you really need.
Remember, the key to success is to take care of the relationship with the people you are working with. For this, you need a clear and informed form of communication. Only then you can cope with geographical and cultural obstacles, build the trust that is so much needed and show that you are a valuable member of the organization. A relationship built in this way will result in tangible benefits for everyone.
I do express special thanks to Izabela Śmietana, who co-authored this article.