Outsourcing Models for Software developmentOutsourcing is an increasingly popular trend in the IT industry. However, from an architectural prespective, there are many nuances about outsourcing that I have been focussing on lately to understand.

Let me discuss different models of outsourcing I have seen from a software development perspective. I suspect these models are applicable for any systems development. But, software is my game and I am sticking to it. Let us categorize the project activities broadly into 5 areas: Requirements/Analysis, Design, Development, Deployment and Management/Maintenance. The Owner is an entity (team, department, division, company) that owns the project and the Outsourcer is an entity (mostly in another company) that executes various tasks assigned by the Owner. The Owner is always in charge of the requirements so outsourcing that activity may not make much sense in most cases. Anyway, I have seen several different models of outsourcing when it comes to IT organizations working with an Outsourcer. I have categorized them as follows:

Model 1: All In (AI)
This is the traditional model of development where everything is done inhouse, i.e. no outsourcing.

Model 2: Development Out (DO)
Outsource only the development activity. The Owner is still responsible for design and is trying to leverage lower development costs by outsourcing the development activity. Once the Outsourcer completes development, the code is brought inhouse for deployment, management and maintenance.

Model 3: Design Out, Develop Out (DODO)
[No, not that Dodo, although there might be some similarities] This model extends Model 2, but in this case the design also becomes a responsibility of the Outsourcer. This is more suitable if the Owner has limited IT development capabilities (e.g. skills & resources).

Model 4: Design In, Rest Out (DIRO)
In this model, the Owner designs the system and delegates the development, deployment and management of the system to the Outsourcer. I don't see a value in this model for most scenarios. If you are going to hand off the management of the system to the Outsourcer, let them design as they see fit.

Model 5: All Out (AO)
This is the inverse of Model 1 where the Owner delegates all activities (except for Requirements) to the Outsourcer. This is similar to the ASP model. This is the model that most Outsourcers might prefer. If executed properly, this can be a win-win scenario for both parties.

Some of the customers I have talked to have been experimenting with Model 2 and Model 3. And this model exhibits the pain points of architecture and design. When you are designing a system and having someone else implement it, it becomes a tedious and sometimes impossible task to govern the architecture and design of the system on a continuous basis. A lot of architects in this model spend their cycles on the phone talking to the developers in a different world trying to communicate the design intentions and the confirm and validate the developer implementations to ensure those intentions are addressed and implemented.

What do you think? Do these models make sense? Have you seen other models? What are the (architectural/design/development related) pain points for architects when dealing with outsourcing?

May 26 2005: Also see this followup.

YouRIt
Comments:

All in except post development management (support) seems to be a fairly common outsourcing configuration.

Posted by bnitz on May 18, 2005 at 09:03 AM PDT #

Model (1) : If you know what you are doing and have funds and other resources, model (1) has been the tradionally successful model. 

Model (2) : Used to be the chosen model in the .com era. The project lead/manager used to be a senior architect and used to hire contractors to develop the codes. Its not different from Model (1) other than utilizing the IT resources from outside. If followed eXtreme programming to ensure a decent quality and pairing with someone internal  gave a good control on the project. 

Model (3) : This looks pretty similar to Model (2) but is more expensive as now the companies hire consultants to design the system. If done in a controlled way is good but risk is higher if there is a communication or anyother disconnects between the customer and the consultants.

Model (4) : This what is happening these days in big corporations. The model shifts a reasonable amount of responsibility to the outsourcer. A golden rule.. If you are managing the code you wrote, you will design it well. 

Model (5) : I am not a proponent of this model. Who leaves the control to an outsourcer? This is a recipe of getting bounded to outsourcer' technology. Very difficult to get out.

Posted by Ashish on May 18, 2005 at 09:11 AM PDT #

Pain Point 1: Intellectual Property (IP) IP (Intellectual property) is a big concern (IMHO) when you outsource Design and Development (Model 3). One way of protecting this could be by keeping the architectural concerns in house. The outsourcer may be required to participate in the exercise (maybe by having an outsourcer architect/lead involved during the inception phase of the project). I work for a large enterprise entrenched in outsourcing and IP retention is a massive pain point that is constantly brought up. You know that IP is compromised when the outsourcer is viewed as the SME for a particular business-critical application. Pain Point 2: Communication Other pain points include communication of models assuming the Owner has requirements and solution architecture responsibilities. Outsourcing processes often fail to address this, leading to lengthy phone conversations which offset any percieved benefits from outsourcing. Questions that come up are: How refined should my models be, how detailed should my use cases be? Having gone through the pains of being both an outsourcer and an owner, I believe the happy medium is the involvement of an outsourcer resource (senior architect/analyst) during the inception phases of the project to participate in the activities. Other pain points: Governance. This can be a bit sticky. I've often prescribed architecture standards to an outsourcer in a niche domain only to find out that he does not have skills in that particular area. Knowing very well that this particular outsourcer is the only one (amongst the others in the bidding process) who can deliver the business solution due to domain expertise, would you compromise on the standards? Am I interested in how the car looks or do I also need to care about how it is built? Yes, if I have to maintain it. Pain point: Maintenance Solution maintenance should include a warranty period by the outsourcer to make sure that the delivered solution meets business expectations (functional and non-functional requirements).

Posted by VP on May 18, 2005 at 01:44 PM PDT #

HI, May i reproduce this post at my tech blog at http://www.big2all.com/wordpress/ -Thanks -Ravi.G

Posted by Ravi kumar on May 20, 2005 at 11:49 AM PDT #

[Trackback] While interacting with my colleagues and customers, I have seen the terms Offshoring and Outsourcing used interchangably. Sometimes they say Outsourcing whereas they really are talking about Offshroing and vice versa. Sometimes they are ta...

Posted by Whatever... [Deepak Alur's Blog] on May 26, 2005 at 03:13 PM PDT #

Great info on outsourcing trends. Thanks! outsource architectural renderings

Posted by Harjeet Singh on November 20, 2005 at 05:15 AM PST #

A good analysis. Would love to hear your perspectives from real-world expereinces at Sun

Posted by Mohan Babu on June 25, 2006 at 06:23 PM PDT #

Post a Comment:
Comments are closed for this entry.

This blog copyright 2007 by alur