How to Collaborate Successfully with Remote Teams
Speaking with our clients about building software products, I see that some are unhappy with their previous experience working with remote teams. Most of the problems would not happen if the parties communicated properly when working together, as communication is the key to successful collaboration.
That is why I decided to write an article with recommendations for both clients and developers, how to understand each other better, work as a team, and bring great software products to life.
Respecting others, honesty, and transparency should be parts of any collaboration process, whether you are a client or a developer. Also, trying to put yourself into another person’s shoes helps a lot if you misunderstand each other. Those are general tips, now let’s see what each of the parties can do to make the communication smoother and more effective.
Clients and Product Owners
- Have some requirement documentation, or ask the team to prepare one. Too generic and high-level specifications or reference like “make it the same as this app” is the shortest way to get the wrong estimation, and find yourself on a very different page with your developer. Spend some time to think more carefully about what you need to get done, document it, or ask the team to do it – we always start projects with Elaboration Phase, clarifying the requirements, creating wireframes, and doing all the needed investigations.
- Be realistic about Time, Cost, and Scope. The famous Iron Triangle illustrates three main forces in project management, and it is important to understand that you can not fix all three parts of it, the maximum is two.
- Be responsive. Answer the questions that the team asks, provide feedback quickly, make decisions in time. It helps to save time, focus, and do the right technical solutions when needed.
- Have regular check-ups with the team. Having weekly calls helps to know the team better, hear the updates, discuss the solutions, understand where the project is on the timeline.
- Tell them more about the business you are building, show the customers, how they use a product, it is the best motivation.
- Ask your developers to do what is written in the Development Team section :)
- Do the proper planning before the project start, not on the go. Understand your deadlines, check if you are on track at least bi-weekly.
- Document the solution, keep documentation updated, and make sure the client has access to it. It includes both technical and product documentation, as it is helpful for further development, testing, and support, easy involvement of the new team members.
- Always use a task management system and keep it up to date. It should be where anybody can see the project snapshot – all the tasks, current statuses, assignees, comments, understand the blockers and bottlenecks.
- Manage expectations. Provide status updates regularly, warn about delays, important decisions, plans changes, especially ones affecting the delivery dates or essential features.
- Have regular calls or chats with the client. It helps to bring each other to the same page, quickly discuss the open questions, and feel closer to each other despite the distance.
- Explain the decisions you make, try to make it understandable, not too technical. If there are several options, highlight all pros and cons.
- Be constructive. If there are any problems, do not blame, don’t complain, but suggest a solution.
- Keep the business goals in mind. When taking the decision or thinking about priorities, remember what problems the solution is designed to solve, what goals to reach, and focus on things that allow to reach them faster
- Test your work. Even if you don’t have a QA engineer in the team, make sure the software you show the client is of decent quality. Have simple checklists and update them regularly, notifying the client.
- Use the Earliest Usable Product approach. The best illustrated and described by Henrik Kniberg in his blog. Try always to have a usable product, starting with the simplest versions and continuously adding the functionality. In such a case, even if you won’t be able to implement all the functionality, customers will get the product. It also allows adapting to the customers’ feedback quickly.
Those are some of the main principles we apply in our work, and I hope they will help other teams to deliver great products and have excellent communication on the way!