Outsourcing SW - A Model

...for your consideration


What are the considerations when the business wants to reduce the cost of the IT department and they want to outsource some or all of the costly software development group? Here is a model to help you think through this decision and some additional resources.




Introduction


What decisions must be made to implement an IT Outsourcing program? Are these decisions similar to the decisions that leaders must make for an Agile program? How do they differ, how are they similar? What are the expected outcomes, and the possible outcomes? Which decisions have high stakes with no-return points along the transition map? Which decisions are safe-to-fail and possible to repeat and iterate toward success?


Comparing and contrasting basic road maps for the implementation of major process change is fraught with generalizations that may easily be questioned. The intent of this paper is to objectively represent the set of high level decisions and expected outcomes that lead to a success regardless of which path is chosen. Choosing the path is your decision.


A general model


If we model the decision path as a journey with an expected destination, but unknown terrain this metaphor may serve us well. Journeys are made of many decision, some made before the terrain is known, some made with little information, many decision must be adjusted as the journey progresses.


…. to do…


Decisions to be made along the path:


Can innovation be separated from execution without extreme risk?

Does outsourcing add value -or- just decrease cost?

How does the outsourcing approach transition to a value-add mind-set?

What need are we addressing with an outsource model: from innovation <-> maintenance?

What does an optimized cost reduction model look like?

a headless remote team; recruiting agency; software R&D provider; other?

What is the right service model for our organization?

outstaffing; <-> custom app dev

How does one mitigate the risk of vendor lock-in to the outsourcing provider?

What does the *right time* to outsource look like?

Where is the point of no-return in the decision path?

What does outsourcing require that IT is already great at delivering?

What does outsourcing require that IT is poor at delivering? Can this capability be outsourced?


Along the journey - where is the point of no-return?


Investigation of Options


“Intelligence should be viewed as a physical process that tries to maximize future freedom of action and avoid constraints in its own future.” — Alex Wissner


A model of intelligence at an abstract level is an organism that preserves options until a specific time horizon at which point it decides while seeking a goal (TED Talk: Alex Wissner-Gross: A new equation for intelligence).



What is the goal of the Information Technology organization?


Is it to reduce the cost of IT to the organizations - or - might it be a more aspirational goal? More in alignment with the corporate mission.


Why do organization outsource?


Software development is not a simple endeavor. Standish Group has studied the problem space for years and release yearly reports that in general show an marginal improvement in recent years from a low point of roughly 80% failure rates a decade ago. However; “[o]utsourcing has not proven to be a magic wand; it has failed to deliver the expected results over fifty percent of the time.” (1, 3) Gartner predicts that spending on outsourcing will increase from $268 billion in 2009 to $325 billion in 2013. Research suggests the reason for this increase is the perception of economic, technological and strategic benefits. These benefits come with additional challenges, and externalities.


Organization outsource to:

  • Focus on core activities

  • Reduce cost of development executation

  • Add staffing flexibility for special projects

  • Augment skills not presently available

  • Reduce development time associated with project ramp up

  • Improve quality (by working with more experienced developers)

  • Improve management (by levering vendor’s experience/knowledge)


Define our reason to outsource - be absolutely clear about why. A clear purpose will enable decisions with reasonable chance of success.


What challenges does outsourcing resolve?


The cost model is typically the first response to the reasoning behind the decision to outsource. Engineers in offshore locations are on relatively low compensation plans compared to the US, this relative cost advantage is apt to shrink fast however (5).

The scheduling of project manpower and resources is another key reason to outsource. When project ramp up and termination are time sensitive offshoring may have tactical advantages to staffing internal projects with varying resourcing needs.


Specialized skill sets are another key reason to outsource. Assuming that the skill set is not a core capability to the problem domain.


Mid-term budgeting and cost accounting become easier. Small projects cost accounting becomes cost prohibitive so effort must be done to aggregate small project, or define a class of service that allows for ad-hoc scope management.


What challenges does outsourcing compound?


While software product development is a known challenge, outsourcing is a known challenge compounded by more players on the field. The software development process will be distributed across multiple organizations with multiple cultures and value systems.


Outsourcing firms must effectively manage:

  • the scope of projects

  • the process that implements the deliverables, and

  • the people involved (customers, their clients, their staff, as well as vendors).

The pitfalls of an outsourcing model:

  • Requires constant highly skilled management and logistics

  • Increases departmental frustration

    • timezone differences lessen communication windows

    • need for higher quality architecture

    • lower quality of solution (not what we wanted syndrome)

    • need for better testing

    • scapegoating the vendor

  • testing is more difficult & results in longer test/fix cycles

  • company morale may suffer



There is no one right model to handle all of these management tasks. In the grand scheme of things, success in outsourcing depends on how well you plan, organize, execute and control these very areas that are required for in-house development also. Failing to understand these factors and relationships puts the outsourcing program in high risk of failure.


Successful Project Scoping for Outsourcing


Projects that are well defined in terms of scope/features (well known technology and well know requirements) are simple and prime candidates for outsourcing [the simple domain of the Stacey Diagram].


Project types require various amounts of effort in scoping - not all projects are the same - don’t treat them similar. The most difficult is the innovative new application platform with a high degree of market risk. These are typically high and to the right on the Stacey diagram. Requirements are not well known, and the technology used is far from certain.


Scope management is the ultimate driver of value delivery. In the traditional PMI Iron triangle managing budget is a well known problem domain, managing schedule is difficult but practical when using a Project Process Management model, however scope management is the most difficult. It is also the leg of the iron triangle that is most often ignored as a lever to be used by the customer to make scope decisions with economic trade-off in mind. Having a value-based model of project success has proven more satisfying to customers than a cost model (implied all scope & implied on schedule) model.


When project scoping is easy and well done the project is ripe for outsourcing.


If scope change management is a likely difficult internal process - then adding a few more contractually obligated layers (vendors) is exasperating the issue. Scope changes must be controlled, they increase workload, and management overhead, they raise costs and lengthen schedules, as well as hamper quality and integration capabilities.


When outsourcing software development perhaps the worst situation is scope creep caused by ineffective change control. This will cause: cost escalation, quality shirking, schedule delays, unused/unnecessary features, reworkitis, staff demotivation. The motivation issue creates a viscous feedback loop enhancing the negative aspects of the other effects.


A latent problem with outsourcing is the division of total project delivery scope. Few new application development project scope out the actual delivery of the product and all it’s ancillary systems and work streams. Scope division is the process of understanding the responsibility and ownership of work to be done in-house and by vendors. Not all of the work may be outsourced. Retaining the knowledge of systems and integrations is key to continuity of the business. Counter these risk via well designed architecture components that are independent of each other. Foster accountability and ownership of components by a single entity. Deploy frequently and test all interfaces.


Outsourcing may provide many economic benefits, yet it still follows basic economic rules. It saves on wages and real estate costs, but cannot always significantly reduce the amount of time that a project takes.


Successful Project Process Management for Outsourcing


The business process of outsourcing is very important and must complement the software development methodology. This management process includes: defining the vendor team structure and interfaces, the development methodology to be executed across the client/vendor system for the project, software development management tools (source control, build systems, test systems, project progress reporting, collaboration & communication tools), proper quality assurance expectations both at the vendor and the client, as well as customer QA.


Team Structure - beyond the typical player on a software development team, outsourcing project typical require the overhead of two key roles. An in-house product manager responsible for daily interactions with the development team insuring timely resolution of problems that arise in the development requirements. A vendor-located technical leader, responsible for the vendor team and highly collaborative with the product manager.


Tools and metrics for monitoring the project should be selected to match the type of project (new development or maintenance), the development methodology (waterfall / agile / lean), and the companies cultures. When selecting a vendor a fluent demonstration of their management tools is a great indicator.


Vendors with a mature outsourcing program will have a well known and easily demonstrated quality assurance process. If the QA work is to be done in-house rather than by the vendor this scope division should be well understood and the cost/benefits weight and measured throughout the life of the project. Establish typical engineering standards such as: coding style guides, documentation standards, controlling procedures, bug tracking and reporting, defect prioritization and triage responsibilities, testing phases in the release plan as durations, release criteria with regard to defect count, severity, types of testing to be performed (usability, regression, performance, load, etc.). One perspective of outsourcing vendors is to gauge their maturity in QA; vendors with a long history and successful future will have developed mature QA capabilities.


A core capability of outsourcing vendors is their communication techniques. When the team is physically separated (as in most outsourcing situations) communication becomes a multifaceted issue with compounding issues such as: language and culture, approval chain of command, time zone, domain knowledge, travel, and industry experience.



Successful Project Stakeholder Collaboration for Outsourcing


Make specific plans to involve the customer, end users, and key stakeholders in the development project. Active participation in the process leads to greater product satisfaction. Clearly define their role and responsibility, setting expectation and constraints on their involvement. The proper balance will change with project type and methodology.


Prior to outsourcing software development the organization must be prepared. This decision has long term effects and will effect the attitudes and motivation of many existing employees. While pursing an in-house development organization hiring decision are biased toward development skills; in an outsourcing organization the managerial skills will ultimately lead to success.


Hiring Mean Development Skills - - > Hiring Organizational Superpowers

Subject Matter Experts - - > Communicators

Domain Knowledge - - > Integration / Operations

Implementors - - > Planners





Successful Program Management for Outsourcing


Beyond the typical software development project related management issues, the outsourcing program has higher level concerns to deal with. These are typically handled via contracting and source selection processes, and then via executive level negotiation of problems and breeches.


Typical Outsourcing Issues (non-software development related): (6)

  • Liability Insurance

  • Software Licenses for third party access to systems

  • Ownership of information (sample data and testing data)

  • Inter-organizatioal system performance and access requirements

  • Service Level Agreements

  • Reporting and review of SLA

  • System access and security

  • Intellectual property indemnity

  • Distaster recovery



Many organizations spend countless time and energy selecting and reselecting an outsourcing vendor. This trial and error process may result in a well integrated vendor that is an indispensable partner.




References:


1) A Practical Guide to Outsourcing Your Software Development PDF by Selleo (a Poland based outsourcing firm)


2) Tips for Outsourcing Software Development: Ensure Outsourcing Success HTML by Auriga (a Russian outsourcing firm)


3) Fabriek M, et al; “Reasons for Success and Failure in Offshore Software Development Projects.” [in]The 16th European Conference on Information Systems; Galway; Ireland; 2008


4) Outsourcing Software Development Offshore Pros and Cons by Mark Davies

http://www.streetdirectory.com/travel_guide/114408/programming/outsourcing_software_development_offshore_pros__cons.html


5) The End of Indias Offshore Dominance by Mark Hebert

http://news.cnet.com/The-end-of-Indias-offshore-dominance/2010-1022_3-5668292.html


6) Outsourcing Issues by e-Zest

http://www.e-zest.net/insights/offshore-india/outsourcing_issues/


7) Outsourcing decision support: a survey of benefits, risks, and decision factors, by Tibor Kremic; Supply Chain Management: An International Journal


8) The Evaluation of the Outsourcing of Information Systems: A Survey of Large Enterprises by Chin-Chia Hsu, International Journal of Management Vol 23, No. 4 Dec 2006