On March 30th CIO magazine published an article titled Do’s and Don’ts of Outsourcing Benchmarks. The article spurred us to write about outsourcing models for product development – it is otherwise unrelated, but interesting. [2015 Edit: The CIO article has been removed, check out these lessons from successes and failures instead]
Explaining Four Application Development Outsourcing Models
Outsourcing software development is different than outsourcing services like call-center operations. There are people who interact in several different roles in software development.
There are two distinct types of outsourcing. Bringing experts into our company, or sending work out of our company. Experts who join our team are “temporary team members” not “outsiders.” Sending work outside requires that we address several issues in communication, expectations, and accountability.
We will focus on the models for sending some of the work outside our company, to a team that operates in a very distant location and timezone.
Process overview
We’ve described the software development process (from market opportunities to delivered software) in several posts in detail including Software development process example and Where bugs come from. We’ll provide a brief overview of the flow only in this post, with some simplified versions of roles in the process. This post is focused on the communication elements of handing off responsibility.
In the following diagrams, each area (dashed-line border) is the responsibility of the person within the area (developer, QA, etc). All of the maroon arrows represent transfers of information or responsibility within the organization. Any blue arrows represent communication with outsourcers, who are accountable for the next step in the process. Outsourcing rectangles have a light blue shading. Note that feedback loops are not drawn, but are important to success. Details on feedback can be found in the previously linked posts.
In each model, we list a key to success which targets the largest additional challenge of each model. Each model still otherwise faces all of the challenges of developing great software. As such, we don’t list a key to success for model 1 – that’s our baseline.
Model 1: Insourcing
Keeping all of the work in house, and in nearby timezones (geographic split of the team is ok, as long as they have >75% overlap in working hours). Communication between members of the team is important, and clear lines of responsibility are drawn.
Model 2: Low-level outsourcing
The first step most companies take to outsourcing is to send the “boring” or “unchallenging” or “low risk” work to an outside company. This model is shown in the following diagram, with QA and development outsourcing of the implementation and testing steps.
The key to success with this model is in execution management. Code reads and validation that everything designed has been implemented.
Model 3: High level outsourcing
Additional responsibility (design) and more abstract tasks are transitioned to the outsourcing firm – usually after they have demonstrated the ability to execute on lower-level tasks.
The key to success with this model is the technical communication and interaction between the architect-level developers and testers who are responsible for interpreting the PRD, and their outsourced counterparts with design responsibility. These in-house technical people will approve the code-design and test-designs proposed by the outsourcing team.
Model 4: Complete technical outsourcing
Companies sometimes establish a mantra like ‘All technical work will be done in India’. Their process model looks like the following, where documented requirements are delivered to the outsourcing team, who interpret them, design and implement.
The key to success with this model is having a trusted partner, a great PRD, and extremely good communication in the validation of the interpretation of the specifications.
Conclusion
The best process will vary depending on the makeup of the organization, the goals of the business, and the nature of the project. There is no single right answer.
[Update] Follow-Up Articles
We’ve written some additional, in-depth articles specifically about how to make these different models work. These articles focus on actionable strategies for making the models from this article work for your team.
i have read your article Really Nice one.because Now a days not only big companies like Adobe, Microsoft are doing software and product development in India at their development center. But now many other small to medium scale companies have started software and product development and started entering into outsourcing software product development. It is considered that, increase in business will be around 100% in offshore outsourcing product development.
Thanks, iDI!
I continue to see the same thing with companies in the US. Are you seeing any trending towards moving “earlier” parts of the process (design, test design, requirements, user experience) to outsourced teams too, or just greater penetration of testing / implementation outsourcing?
Great flowchart!
Outsourcing industry has experienced a huge growth in the recent years. It is spreading wings throughout the world. More businesses are accepting this practice especially in the time of recession. Outsourcing enables many companies to focus on various areas of expertise. Outsourcing really a big help to companies.
Phil
Excellent post with Excellent Example!
Thanks, Paul!
Any experiences with any of these models that you want to share with the folks here?
High level outsourcing is more widely used from all those and mostly safe for your business as it is safe to take part in the process apart from hand over everything from your end.
Thanks, Gerald, and welcome to Tyner Blain!
How do you define “safe?” Is it safer to minimize poorly-written tests/code, or poorly-designed tests/code, or poorly-written requirements, or poorly-chosen requirements?
I don’t think you can apply a broad brush and say that “everyone should do X” – there are trade-offs in every outsourcing model, and depending on your market, your business, and your (in-sourced) team, the “best” model will be different, in my experience.
which of these model is better to implement when you have to reduce your cost of development :?
Hey Tina,
It really depends – you can reduce the cost of developing a product using any of them. Take a look at http://tynerblain.com/blog/2008/05/05/offshore-development/ and at http://tynerblain.com/blog/2008/05/14/offshore-design/ and see if your team’s characteristics, and your company’s culture make either of them seem more likely to succeed for you.
Its quite really amazing information that you have shared. I think India and China is one of the best place to outsource all project. Its all they do in great way and never need to worried about the quality.
What you say Scott?
I think outsourcing makes the most sense when the team is good, and the time zones are not shifted too far (the mismatch can reduce effectiveness of collaboration and slow down “chatty” cycles). I also think it makes sense when the skills that the “outsourced” teams bring to the table are (a) not a core competency of the company doing the outsourcing and (b) are more cost-effective than not-outsourcing. In a nutshell, the overall costs and benefits of outsourcing need to be considered, it is not a no-brainer. There are smart, hard working people all over the planet. Not just where you happen to live, and not only employees of the company where you happen to work.
Working with great people is valuable, and the costs of relocating, distributing, and outsourcing should all be considered in that context. Outsourcing is a (not-always-viable) means to an end. It is not a goal in and of itself.
Assuming the “(how) should we outsource?” question has already been answered, the next step is to say “how best to work, given these constraints?”
Great article! Thanks for sharing!
I think, Developing software and deploying them in your business is not a simple task. There is the price factor to consider, the returns it will bring in the immediate future, how fast it will go obsolete and the cost of maintaining it and making changes from time to time. Offshore software development process has big advantages – it is possible to develop them at low prices, quality can be ensured, specialized skills can be availed, and still more benefits too are available. For many software companies in the high cost economies, the offshore software development process route is the best way to make big profits.
It’s really good to read your blog Scott. You have nicely describe all 4 outsourcing models. Being a owner of growing mobile app and software development company I just wanted to know which is the most effective and cost saving outsourcing model that I can easily use?
Waiting for your reply asap. :)
Hey Keval,
Thanks for the kind words! What’s your definition of effective? Is it finding the right problem to solve, or solving a given problem (right or otherwise) with minimum cost?