How To Manage Your Relationship With An Outsourced Development Team
Choosing the right outsourced development team is the first step to a successful collaboration. But once you’ve chosen the right team, you have to make sure you’re aligned with them — and that the relationship goes smoothly throughout the whole project.
We’ve worked with many clients as their outsourced development partner, and these are the 10 key things we recommend to successfully manage your relationship with an external development team.
1. Communication is essential.
Right at the start of the engagement, it’s important to understand the culture around communication for the external team, and how it differs from yours. You may be used to having monthly or weekly meetings to discuss projects, but we recommend the opposite when dealing with an outsourced team.
More frequent, but shorter conversations or asynchronous exchanges, are better than less frequent and longer meetings. You’ll become aware of updates, problems, and progress as it happens, making communication more collaborative. Frequent and short communication is more natural and flexible; it also opens the door for a real relationship by encouraging open communication and building trust.
2. Get on the same tools.
It’s important to agree on a shared toolset for communication, project management, development, and more from the beginning, and then get set up in the appropriate channels, boards, or groups. You don’t necessarily have to adapt to your outsourced team’s toolset, but whatever toolset you’ll use should be established right away. Some popular options could be Slack, Asana, Trello, Jira, or Github.
While there are many options and specific tools for specific types of work, we encourage having a single “point of truth” (usually the task management app). This tool will always be in sync with all the discussions, decisions, changes, etc., ensuring that anyone on the team, be they the developer, project manager, designer, or product owner) can easily reference it at any point.
3. Details are everything.
In creating a software product, the details are key, so share and develop them with your outsourced team. Work together to flesh out the product requirements in extreme detail, thinking through edge cases, and mapping a technology solution accordingly. This helps you avoid miscommunications, set expectations, and have a shared vision of the project.
With an outsourced team, especially a remote one, you can’t assume anything is agreed upon until it’s discussed. The more is discussed, the better the results.
4. Run an agile process.
Agile software development is a set of processes and practices that focuses on collaboration and self-organization. There are a few frameworks that can be used, such as Scrum. An Agile process is the best process when working with an outsourced development team. This kind of development breaks down the process into small parts, each with its own planning and design stage.
The entire development process is broken down into sprints, certain periods of time in which a specific part of the project is completed. Sprints allow developers to get feedback more quickly, focus better, and be more productive.
As part of your Agile process, you should also maintain a common backlog. Your backlog is a prioritized list of items that the development team and the client have agreed to work on. Make sure your backlog is mutually agreed on, shared, and updated, so you’re always aligned.
5. Ask for transparency — but it works both ways.
We discussed transparency in our blog about choosing the right team, and it’s something you should be on the lookout for once the project starts as well. Do you have direct access to the underlying contributors, or are all discussions intermediated by an engineering manager and a Project Manager? Are you comfortable with that type of communication?
It’s also important to see how they’re tracking and reporting hours. At Amplified, we track hours to the second using a third-party app and then prepare a Statement of Hours to deliver to the client weekly. This helps the client know what our team is doing constantly and keeping up that accountability.
It’s also important for you as the client to be transparent with your team as well. Keep them up-to-date on your needs, your constraints, your timeline, your budget, and your hiring goals. If something changes and they don’t know, they won’t act. Giving them the necessary information allows them to adjust accordingly and continue delivering as a reliable partner.
6. Maintain a technical advisor.
You’re not expected to know everything about the development process, especially the nuances of software and coding — that’s what the team is for. However, for your own benefit, you can hire a technical advisor on your end. For non-technical teams, it’s helpful to have someone outside of the software partner who can validate what they are saying, do occasional code reviews, etc.
7. Understand the roles.
In this relationship, each side has a part to play, and when roles get mixed up, the relationship suffers. You are the product owner, so you have to establish the vision and make the big decisions.
Consequently, your team’s role is to bring their knowledge and skills to the project. Trust the team as a technical partner: trust in their technical decision-making and allow them to feel empowered by hearing them out and allowing them to bring solutions.
Hiring a team you trust and feel confident in helps you let go of the technical aspect enough to let them work, giving you the space to focus on other decisions.
8. Define “emergency.”
What you see as an emergency versus what your team considers one may be different. At Amplified, we try to avoid changing priorities once a sprint starts, because it’s disruptive to the productive flow of the engineering team, so it’s important to understand that your team may do the same.
In many cases, you’ll want to revisit priorities, and that’s fine. But, if it’s not a truly urgent matter, then it’s best to put the task on the backlog and work on it during the next sprint.
That said, sometimes real emergencies do happen (something critical breaks in production and you are getting customer complaints, for example). In this case, our team at Amplified would cancel the sprint, fix the issue, do a retrospective on what went wrong, and restart a new sprint.
9. Define “done.”
Speaking of definitions, it’s also important to define when a project is considered finished. You and your external team may have different ideas of when their work is completed, so agree on a checklist before the project begins. This may range from code being deployed to testing, to a feature being approved by stakeholders. Having a checklist not only gets everyone on the same page, but also makes the progress and status of the project more transparent.
10. Mutually manage expectations.
Setting expectations at the beginning of the work relationship helps avoid issues later on. Though you as the client may want to set ambitious goals, it’s important to listen to the technical team to understand what is realistically feasible during a period of time, and to plan accordingly.
Oftentimes, the solution to an unrealistic due date is to think about things from a phased release perspective. For example, “we need something in two weeks: what’s the simplest version of that feature that delivers business value, and how can we iterate and build upon it over time?” This mindset gets you the results you need while not burdening the team with unrealistic timelines.
Similarly, if you have expectations about other aspects of working together, express them from the start. If you expect something like a weekly update, ask for it. If the team won’t be available during certain hours because of time zones, they should communicate that as well.
Communicate and Collaborate
Ultimately, managing a relationship with an outsourced team boils down to open communication and a commitment to honesty and collaboration. If you see your team as a partner you trust and not just a group of people you’ve hired, you’ll get a better product from them, and feel at peace with the project while you’re doing it.