When a company decides to outsource their software development work, even when this is not for the first time, there are always a good number of lessons to be learned. After all, we are talking about a new partner, a new team, and a mountain of trust that needs to be built despite the distance. And, like with many things in life, the results will depend considerably on how you start this exciting adventure.
Assuming you have selected the right outsourcing partner – which is the first key step and a whole other article – these are some of the most important aspects you should consider at the beginning of the relationship in order to accomplish a successful ramp up.
Planning the Team
In order to put together a kick-ass team, you first have to define exactly what you need. If you don’t have detailed role descriptions, the advice here is to work with your new partner to produce them. Have a meeting to talk about your platform, technologies, even specific focus and activities that you have in mind for each of the team members. The result should be a clear profile of each of the individuals you ideally want in your team.
Make sure you don’t restrict you thoughts to the most immediate project – think long term – and try to anticipate what skills they need to have in order to be productive in other activities related to your platform. At the same time, resist the temptation of defining super-profiles with all the imaginable skills “just in case” you want them to do this or that in the future. Those resources will be hard to find, expensive, and will probably grow bored pretty soon.
Remember that your team members will continue learning about the technologies included in your software platform and will also acquire new skills along the way. So a good training plan can do the trick of getting them ready for their future assignments.
Structure and Leadership
Equally important as the skills is the team configuration. Everybody’s contributions are important, however, it is good to have at least one person that others view as their technical leadership. It doesn’t have to be an official title, but making sure to include someone who is able to share knowledge, coach the less experienced team members and solve technical impediments faster, is always a good investment.
Beyond the technical aspects, it is also recommended to have someone officially supporting and overseeing the team at their location. This person, among other things, will be very useful for local logistics, performance measurement, onboarding of new team members, tracking of metrics, and maintaining focus and motivation.
And one might think that in order to succeed you need to assemble an “All-Star” team composed only of people with several years of experience. But unless your platform is wildly complex, the most common scenario is that you will have a backlog of development activities with various degrees of difficulty. Therefore, having the correct mix of junior and senior talent will keep everybody more engaged with their tasks, will reduce the risk of attrition, and will render better cost-benefit results.
When we think about software development work, we commonly focus on the requirements and the technological platform, however, the key to success relies not only in having a clear WHAT, but also in having a well defined HOW.
Spending enough time with your new outsourcing partner to outline the methodology, processes, best practices and tools that your team will be using will prove to be one of the most important factors in a productive relationship.
There is no need to reinvent the wheel, there are plenty of methodologies out there. Pick the one that makes more sense for your type of project, technical environment, preferences, etc. and start using it. You can always make adjustments along the way if you see that something is not really working.
In this part, if you don’t have a way of working very clearly established, it is also a good idea to leverage the outsourcing partner’s experience implementing best practices, so they can help you identify those that could yield better results.
Processes and Standards
When you hire a new direct employee, the more prepared you are for an effective knowledge transfer, the sooner this person will start being productive. The same applies for an outsourced team.
It is recommended that you put together a few slides to explain things like:
- High level architecture of your platform.
- Database structure and general design.
- Automated processes.
- Organization of the code, including available libraries.
- Process to move code from Dev to QA to Production instances.
- Code review and testing tollgates.
- Code repositories and check-in/out policies.
- Release schedule and overall roadmap.
- Location of documentation they can use as reference.
- Any other pieces of information or resources that can help them to do a more efficient job.
Just like in any services industry, the effectiveness of the process to create software can be subjective and difficult to measure. On the other hand, history has taught us that having our development teams capturing too many metrics is counter-productive.
The recommendation is to find a middle ground. Select a couple of metrics that make sense for you and the type of work your team will be doing and use those as part of your evaluation criteria for the services your outsourcing partner is providing.
Connect With Your Team
Perhaps the most valuable recommendation is to find a way to spend some face-to-face time with your new team at the beginning of the relationship. If you have been through this before you will know what I’m talking about: the relationship with an outsourced team can be divided into before and after you meet your team in person for the first time. Communication improves, trust (both ways) is increased and morale rises. But the most important effect is that you will start to feel that particular team energy that will motivate and inspire you to accomplish great things together.