08 Jul 2021
Software Development Outsourcing Cooperation Models
What do I need to care for? What roles would the software development company provide and what remains on my side? What level of my engagement would be necessary? This kind of questions often haunts first-time outsourcers, who aren’t sure what hides under terms like autonomous, dedicated, and mixed teams. Therefore, cooperation models are the next stop on our journey to explain all software development outsourcing intricacies and ensuring that all of you would be able to make the right, evidence-based decision when looking for a software development provider to truly benefit from such cooperation. Let’s cut to the chase – keep reading to learn what are the most popular models of cooperation with software outsourcing companies and which work when!
Similarly to other articles from this series, to smoothly dive into the characteristics of the three most popular software development outsourcing cooperation models we need to start with some basics – clarifying why this kind of diversification is necessary, what is defined by the “cooperation model” and what does not fit under this term.
The first thing worth mentioning is that while there is a great deal of possible cooperation models, the 3 models we’re going to describe below are the most common ones, that usually fit most situations perfectly. So, what is the cooperation model? In general, it describes what is the scope of responsibility of the provider and what remains on the clients’ side. Illustrating it with a real-life example – the agreed cooperation model would define what roles are meant to be provided by the software development company and who cares for work planning and team management. It’s also worth noticing that by “roles” we understand role types (development, management, business) rather than particular specializations and the number of people – this can be adjusted in all cooperation models, so one can hire a lot of developers in a mixed team model as well as build a really small autonomous team. What’s more, in all these models, the provider will care for finding and recruiting the right people at first, and later providing them with the workplace, equipment, work-related benefits, and so on.
As this should be more than enough to cover the basics, now we can move to the software development outsourcing cooperation models themselves, starting with the one with the most responsibility remaining on the clients’ side.
Mixed teams (staff augmentation)
To start, the simplest among all these three which at the same time requires the most involvement from the client. Making a long story short – mixed teams (which may be sometimes called “Body Leasing” or “Staff Augmentation”) is nothing more than fuelling your internal teams with people having a skill you lack and can or don’t want to hire. The outsourced specialists became a part of clients’ teams, and get under the supervision of client managers, who should simply treat them like new team members who may just work from a different location. The vendor’s only responsibility is to find the right people for the job and providing them a place to work, while the whole rest (like defining the scope of work, controlling its progress, managing the project) remain on the clients’ side. Clearly, your vendor would ensure that these people are in place, really spend their time working for a client, and care for all the work-related benefits, yet all the development and daily work aspects are arranged by clients’ internal employees.
So, when to choose mixed teams? First and foremost – for this scenario you must have internal development capabilities that you would fuel with outsourced software developers, managers ready to deal with a bigger team, and simply look for particular skills that you lack internally. Why it’s better to outsource these people, rather than hiring them internally like the rest of the team? Firstly, due to great developers’ shortage on the talent market, partnering up with software development provider from one of the top outsourcing destinations allows teaming up with sought after talents faster and with better cost-effectiveness and flexibility (in general, that’s one of the main reasons for software development outsourcing at all and will be valid for all these cooperation models).
Yet that’s not the end of the story. It is not unusual to require a specific skillset for a short period only, and in such a scenario it’s much more effective to outsource this part of the work rather than create a new opening for your company. Not only you can agree on a particular work to be done at the start, rather than having to employ someone and think about what to do once the tasks are done, but also you can forget about all the mundane elements – workspace, work tools, work benefits since that would be covered by the software development company. You would simply get access to the people you need, who would help you move your project forward without any long-term bonds.
Mixed teams are also a perfect choice to kickstart a partnership that might be later expanded to dedicated or autonomous teams. Such close cooperation is a perfect opportunity to transfer knowledge, establish the ways of working, communication schemes and lets the vendor prove their value, to ensure that once you will pass them more responsibility everything would be working like an efficient, well-oiled machine.
Going one step further we shall look at dedicated teams. In such a scenario you delegate more responsibility to the provider than in the mixed teams. This software development outsourcing cooperation model assumes that apart from gathering people with skills you require the vendor would provide team management and care for the day-to-day work, process quality, and work progress. What you’re getting is a complete team, rather than several people joining your internal team. Your main responsibility would be to effectively onboard the dedicated team, so they would get the understanding of our business domain and goal, share with them your idea and roadmap, and during the cooperation collaborate on a higher level than in the case of mixed teams. The tasks division and project monitoring would be on the provider side, the team would be complete (including PM/TL, the corresponding number of developers, even software architect if necessary) and they would do their best to help you get where you want to be. Yet, while a lot of weight is taken from your shoulder, and external PM would regularly update you with progress status your involvement would still be necessary. After all, it is your product and your vision, therefore, you would have to share all the assumptions, present the requirements and if the work is done utilizing Agile approach, direct it in the right direction in an iterative manner, just like you would do if you would decide to create additional inhouse development team. So, when to choose dedicated teams?
In general, the reasons described before are still completely valid, if you only want to get an additional team rather than additional people for your existing in-house team. But that’s not the end of it. If software development isn’t a core capability of your company, this model is a perfect choice to limit the necessary management resources on your side. Choosing dedicated teams let you focus on your core activities, and rest assured that the vendor would care about day-to-day work and project management, while your involvement would more strategic than operational. What’s more the dedicated team is a perfect choice if you want your internal teams to focus on one thing (which might be both development or maintenance), while the external team would handle the other, or work over several projects in parallel.
What’s more, access to talents and ease of scaling are still compelling arguments to go with software services providers rather than expanding your internal resources, not only looking for more affordable labour but also due to flexibility. Cooperation with a software outsourcing company would allow you to ramp up the team if you would need to accelerate the work, and ramp down if the development would be finished and comes the time for maintenance. What’s more the team composition in the dedicated team is also highly flexible. Imagine for example that while working over a product from scratch the UX/UI specialist would have a lot to do at the start of the project, but later their engagement won’t be necessary full-time – and cooperation with an external provider in such a model would allow you to always have right people contracted for the amount of time corresponding to current needs.
Last but not least, a scenario in which you delegate the most – autonomous teams. As the name suggests, in such a scenario your external team works almost completely on their own, your only responsibility would be to provide a Product Owner (in case of companies experienced with software development), or a business domain expert who would bear the business domain knowledge, end-users requirements and cooperate with vendor managers to translate these into development tasks. With autonomous teams, the vendor not only provides development roles with a dedicated manager but also business-related roles, as for example, business analytics. This way, your engagement is reduced to a minimum, as you would cooperate on the highest level, presenting the direction of work to be done, while the software development company cares for everything else. As you might notice the difference between the autonomous and dedicated team is much smaller than if we were to compare one of these with a mixed team scenario. But what you should keep in the back of your head is that for the autonomous team scenario to work effectively you should pick a mature and experienced vendor. Since their scope of responsibility would surpass development many body leasing companies might not have the resources nor experience to operate in such a scenario. Choosing an autonomous team is the best way to complete delegate the part of the development and only guide the work in the right direction resting assured that everything else is covered.
So, when to choose autonomous teams? An autonomous team fits the same scenarios as a dedicated team so there’s no reason to list them again, the only thing you need to consider before making a call is if you want to maintain the business roles in-house or outsource these as well. Additionally, if you need your internal teams to stay focused on your core activities, yet at the same time plan to explore new areas using for example bimodal approach, this model will allow you to effectively work over both in parallel without having to neither expand your internal development nor management capabilities. What’s more, such a cooperation model works extremely well not only for all the companies that want to expand their development capabilities but is also a perfect choice for those that are kickstarting software development and have zero internal resources nor experience. In such a scenario, your vendor can guide you through the whole process, help with finding the best solutions for the problems at hand, and become your whole “development department” needing only one from you – your idea, and domain expertise to tailor the solution for the end-users perfectly. If you want to learn more about such a case check PM’s Confession 2 which describes such cooperation.
Before we wind this article up, let’s quickly mention the external delivery centre. This cooperation model may be described in general as an expanded version of dedicated/autonomous teams, and often is a result of successful cooperation on a smaller scale. Once the vendor proves their value it’s not unusual for clients to extend the partnership to more and more areas of work. In such a scenario, the vendor starts providing more teams and becomes involved in multiple projects till the point where either a big share of or even the whole software development is done externally. As there’s no strict line between dedicated/autonomous teams and delivery centres, we can say that once you stop treating your external partner as support for a particular project, but consider them as a strategic partner for the whole development, the cooperation model might be called delivery centre.
The growth of the scope of work not only doesn’t change the responsibilities related to hiring and maintaining specialists and work management but also allows to obtain more benefits related to operating on a bigger scale. Most of the delivery centers are run in a BOM model (build-operate-manage), so similarly to autonomous and dedicated teams, the vendor will care for everything from recruitment, through creating work infrastructure to enabling employees to grow their skills and managing ongoing work. Yet, having multiple teams working for one client would for example ease knowledge retention and transfer, allows to rapidly transfer specialists between them in necessary, and facilitate new employees onboarding. What’s more, having an external development centre allows you to benefit from all the “classic” outsourcing advantages like the mentioned flexibility and all the others.
Like in most software development related discussions there’s no one answer that fits all needs. Yet now, knowing the differences between different cooperation models you can select the one that would suit your situation best. Simple problems need simple solutions, so if you just need to add particular skills to your team for a defined amount of time go with a mixed team. And if you want to lose some weight off your shoulder both managerial and development wise then consider how much of the business operations you want to let go of and respectively decide if an autonomous or dedicated team is the right model to select. Finally, we believe, that with help of all our previous guides (like for example secret art of software development outsourcing, types of deals comparison, or selection phase checklist) you would find the company that would prove to be so beneficial you will eventually end with external delivery centre. Lastly, as usual – it’s impossible to cover every aspect of a particular topic in one short blog post, and software development service providers are usually open to offer customization so if you want to discuss your particular situation and the best way to utilize outsourcing to accelerate your development don’t hesitate to use the contact form below!