Choosing to outsource some or all of your software development is a complex decision that involves deciding what should be outsourced and then choosing the right software development partner.
The work doesn’t stop there. After you select your partner, you’ll want to invest in the partnership.
To get the most from your outsourced software development partnership, follow the nine steps below.
Establish Guidelines for Team Management and Communication
Bilateral communication is key, but it’s not enough to have a conversation. It’s important to understand how information will flow between the teams. Here are some initial questions to answer:
- Will each team have a single point of contact or will there be multiple points of contact? If multiple, who is accountable for what?
- Will your team be accountable for managing any team members or will the third party own this?
- How much time per week do you estimate you’ll dedicate to interacting with the team? Will you be working with them 40 hours a week, being called into weekly planning sessions? Etc.
- What systems and tools will be used to communicate (e.g., Will you have a ticket/bug tracker, a sprint backlog, slack, email, etc.?)
- What are your meeting rhythms? Will you have daily standups or weekly sprint planning meetings?
Create escalation paths
Align on escalation processes and get to know multiple people along any escalation paths. Let’s say you have an engagement lead–you’ll also want to have an intro call with that person’s boss, and even with that person’s boss’s boss (if possible), to learn how they like to communicate the escalation of any issues or opportunities.
Too often, individuals skip this step and wait to meet the ‘higher ups’ until they are in the thick of a critical conversation. Instead, open the lines of communication early and keep them open with regular checkpoints. This way, should you have anything to escalate down the road, you are speaking with someone you’ve already met.
Agree on change management
How do both parties request and agree to change? This is a big question and it’s often undervalued in terms of how important it can be to your relationship with the outsourced firm.
Let’s say you need more people, different skill sets, or want to ramp down. Or what happens if the team makes a mistake? How does this work? Learning the processes ahead of time will cut way down on the time you need to manage the team effectively.
Involve partner in company ceremonies
Another thing sometimes overlooked is the question of which company ceremonies the outsourced software team attends. Do you want the external team to attend things like your all-hands, holiday parties, or sprint planning? It’s best to discuss this at the start of the engagement, with the understanding that you’ll want to iterate and change along the way as you learn more. I’ve seen many situations where this wasn’t planned and resulted in the tension when behaviors of well-intended people mismatched management expectations.
Create space for intentional social time
Just like with your employees, the more you can get to know the human beings you work with through the outsourced firm, the better. With most teams being hybrid or remote-first these days, this is harder now due to remote work, yet still invaluable. Planned, intentional social time makes external team collaboration a lot more efficient.
Create expectations via working agreements
It’s important to know what you expect of the team and what they expect of you. To do this, craft working agreements, which will become your team norms, including guidelines, rules, and behaviors the team members agree to follow.
Working agreements should be created by the team, not by management, and should be a collaborative effort between both teams. The working agreement should be an actual document/Google doc that the entire team has access to. Here are some examples of questions to answer that can get you started with your working agreements:
- How many hours/week do you estimate they will work on your projects?
- Are they fully dedicated to you or do they also have other client projects to work on in parallel?
- Do you expect them to proactively bring opportunities and issues to your attention?
- Can they expect you to be highly available on Slack or email?
Align on how to handle failures
Failures big and small happen all the time, so it’s best to get ahead of it and try and create a high level communication plan in case of things like - missed deliverables, scope creep, low quality work, etc.
Ideally, you are creating space to discuss failures by holding regular retrospectives, and also leaving time for learning from failure in 1:1s.
In addition, take time to create a clear plan of action for identifying, learning from and then rectifying failures so that folks feel comfortable raising issues sooner rather than later and embracing learning from failure becomes part of your norms.
Determine what goes into the contract
When you partner with an outsourced software development firm, you’ll sign contracts that govern your relationship. My opinion on how the contract plays into how you manage the external team is:
- Less is more. We all know that change is inevitable. Six months from now, your priorities will shift. Don’t lock yourself into terms that you may want to change down the road.
- Contracts rarely are the thing that drive behavior. For anyone who has had to actually face legal action resulting from a contract term, you’ll know that duking out contract terms with lawyers is very costly and takes tons of time. It’s more important to partner with good people who are honest than to have minute details on a contract.
Check in and iterate
Once you’ve got your initial set of best practices in place, remember to schedule high-level quarterly check-ins to iterate on these best practices so that they evolve to meet the needs of your team and the project over time.
As always, feel free to reach out via email if you are looking for more information on developing a communication plan.