Software Outsourcing:Pitfalls and Best PracticesIgor TsinmanCTO, Sitrus
When to outsource (and when not to)
Typical projects
Key issues with outsourcing
Most common reasons projects fail
Best practices
Questions to ask your potential partnerAgenda
Sitrus / AMC Bridge is a U.S.-based software engineering outsourcing firm, with >100 developers in Ukraine.  Over the past decade we have carried out dozens of projects for both established firms and many start-ups (CAD/CAM, SaaS business apps, social network sites).The observations and recommendations in this talk are based on our and our partners’ experiences in carrying out these projects.Background
Augment / expand team
With skills that may be hard to find locally, or that are not necessarily part of the long term “picture” for your company
Time to market
Project cost savings
Save money or extend existing budget
Cost savings can be 4:1
There are pros/cons
No free lunch: in many ways, successful projects require many of the same elements as building your own team (communication, organizational knowledge, processes)
Outsourcing is not a “silver” bullet – just another tool in getting things done, taking into account tasks, resources, time and money at hand.Why outsource?
Support of existing productAllows local team to concentrate on new breakthrough version / directionAugment existing teamHelp cover an area outside of the team’s core expertise“Try something new”high risk, outside of the firm’s core businessOne-off (relatively short) projectE.g., needed for a particular customer
[Most of our experience, and thus the observations and recommendations in this PPT, are for projects in category 1-3.]Typical projects
Several ways that outsourced engineering teams can play a roleOccasional one-off project (e.g., 1-2 engineers for 2 months)Extension of in-house engineering team (e.g., 5-10 engineers on a more-or-less ongoing basis)Fully outsourced developmentWide range of scope
What’s delivered is not what’s expectedBug fixing can be long and cumbersomeAfter project delivery, lots of time spent bringing it up to the acceptable standardsExcess expenses eat up projected “savings”Common failure modes

Software Outsourcing: Pitfalls and Best Practices

  • 1.
    Software Outsourcing:Pitfalls andBest PracticesIgor TsinmanCTO, Sitrus
  • 2.
    When to outsource(and when not to)
  • 3.
  • 4.
    Key issues withoutsourcing
  • 5.
    Most common reasonsprojects fail
  • 6.
  • 7.
    Questions to askyour potential partnerAgenda
  • 8.
    Sitrus / AMCBridge is a U.S.-based software engineering outsourcing firm, with >100 developers in Ukraine. Over the past decade we have carried out dozens of projects for both established firms and many start-ups (CAD/CAM, SaaS business apps, social network sites).The observations and recommendations in this talk are based on our and our partners’ experiences in carrying out these projects.Background
  • 9.
  • 10.
    With skills thatmay be hard to find locally, or that are not necessarily part of the long term “picture” for your company
  • 11.
  • 12.
  • 13.
    Save money orextend existing budget
  • 14.
  • 15.
  • 16.
    No free lunch:in many ways, successful projects require many of the same elements as building your own team (communication, organizational knowledge, processes)
  • 17.
    Outsourcing is nota “silver” bullet – just another tool in getting things done, taking into account tasks, resources, time and money at hand.Why outsource?
  • 18.
    Support of existingproductAllows local team to concentrate on new breakthrough version / directionAugment existing teamHelp cover an area outside of the team’s core expertise“Try something new”high risk, outside of the firm’s core businessOne-off (relatively short) projectE.g., needed for a particular customer
  • 19.
    [Most of ourexperience, and thus the observations and recommendations in this PPT, are for projects in category 1-3.]Typical projects
  • 20.
    Several ways thatoutsourced engineering teams can play a roleOccasional one-off project (e.g., 1-2 engineers for 2 months)Extension of in-house engineering team (e.g., 5-10 engineers on a more-or-less ongoing basis)Fully outsourced developmentWide range of scope
  • 21.
    What’s delivered isnot what’s expectedBug fixing can be long and cumbersomeAfter project delivery, lots of time spent bringing it up to the acceptable standardsExcess expenses eat up projected “savings”Common failure modes
  • 22.
    Most common reasonsprojects fail: Information MismatchBusiness context mismatch
  • 23.
    Lack of understandingon the part of development team of the purpose and goals of the developed application
  • 24.
  • 25.
    Lack of clarityand coordination on key architectural assumptions/design/approach of overall program
  • 26.
  • 27.
    Not integrating theoutside team into overall program’s development process
  • 28.
  • 29.
    Well-meaning but incorrectapproach due to cultural differences (e.g., “The customer is always right” and “We shouldn’t ask WHY” eliminates valuable back-and-forth discussions)Business mismatch is on of the most important “barriers” to outsourcing especially when it comes to business applications.
  • 30.
    For example, ifyou need to design and build application for performance based compensation in brokerage industry you should understand some basic things about how this industry works, such as:
  • 31.
    The difference betweengross commissions and net commissions.
  • 32.
    What is ticketcharge, what is trailer etc.
  • 33.
    The gap couldbe mitigated by a well defined spec, but it may not be enough in all cases.
  • 34.
    People work moreproductively if they understand the “big” picture, and see their work in the context of the overall projectBusiness context mismatch
  • 35.
    Here we arenot talking about “basic technologies” like C++ or Java or .Net…Rather, this is about the architectural assumptions of the project, approaches and ideas that technical leads put into project.It’s rare that that information is captured in up-to-date documentation – at best one finds “original design documents” which most of the time are very outdated. Frequently, developers are forced to “research” product architecture by looking into code. For “local” staff, this can be mitigated by ability to ask questions in the real time – for outsource team this is much more difficult. As a result code submitted by outsource group can often be “contradictory” to the approach taken by the “main group.” It may not follow design guidelines, may be considered “poor” and unusable. At the end of the day quality for the project declines –sometimes to a critical point.Technical context mismatch
  • 36.
    Often, in arush to get first version, a prototype, or next generation product out the door, the team “cuts corners” in the development process. It’s not good at any time, but could be potentially managed when “all people are in the same room.” But this can be disastrous when outsourcing.
  • 37.
    This is especiallytrue for many small companies and start-ups.
  • 38.
    Need to thinkthrough: project management, communication, code submission process, bug tracking, time management, QA, documentation.Development process mismatch
  • 39.
    This concept isa bit difficult to define, but it is there…Couple examples:
  • 40.
    There are culturewhere “it is impossible” for the boss to we wrong – i.e. if you’ve been told to do this – you should do it, period. Regardless of the quality of the assignment or the fact that you may know how to do it better.
  • 41.
    Engineers are chronicallyafraid to ask a question of their customer’s project leader – fearing that someone (especially their customer – their “boss”) will think that “they’re stupid.” The result is that the boss always hears “OK, everything is good” - while the engineer on the other end searches endlessly for answers to simple questions.Cultural mismatch
  • 42.
    Areas to probe:Evaluatehow familiar outsourcing partner is with business domain, architectural componentsReferences – similar projectsExplore their operations – process, approach, tools, technologies, source control, bug management, etc.Key questions to ask
  • 43.
    Best defense isto avoid dealing with “random” people and organizations
  • 44.
    If you havean important project, it should not be outsourced to “moon lighters”
  • 45.
    Rather, look fororganization who has been in business for some time, and has invested in building a company
  • 46.
    They would policetheir workforce themselves since “IP leak” would spell death for their business;
  • 47.
    If company ownershipis in the US, this would add additional “protection” – owners could be reached by US legal system, adding pressure on them to build team and process accordingly.Intellectual Property
  • 48.
    Think long-term, buildteams, invest in bringing people on boardChoose teams w/domain expertise (rather than focusing on programming language / technology)Communication – one-to-many; many-to-manyBest practices
  • 49.
    Build a teamthat works for you, rather then approach it project by project.
  • 50.
    This helps createthe effect of “information accumulation” – once explained, a topic could be clarified later, avoiding the need to revisit it over and over again
  • 51.
    Select teams thathave worked in the same business area. For example, if they have written applications for financial industry – they most likely know concepts and terms such as Account, Positions, Product, etc. mean.
  • 52.
    Select teams thathave experience in outsourcing for companies similar in size to yours
  • 53.
    Select teams thathave built applications similar architecturally to yours– e.g., Client Server, Social Networks, CAD etc.Choose/build the right team
  • 54.
    Spend time tobring engineers on board – both in terms of business as well as technical aspects of the project.For example: at the beginning of a project, or at an important stage of the project, key members of outsourcing team visit your company for extended period of time, to get “merged” into the thinking around requirements, specification and approaches. (Also helps reduce cultural mismatch!)On-boarding new members
  • 55.
    Have somebody onboardwho is “constantly” responsible for communication and management of offshore resources – weekly meetings are a must;
  • 56.
    Structure outsourcing teamin such a way that while everybody can talk to everybody, there is a point person on the other side for issue resolution as well as issue tracking;
  • 57.
    Pay close attentionto the process – a well-defined process is essential to making sure that offshore team contributes successfully to a project.Communication
  • 58.
    Case Study:Interactive SupercomputingMITspin-off in High Performance Computing recently acquired by MicrosoftFounded 2005; Identified need for outsourcing in 2006Deployment and installation tools, QA framework, Math libraries developmentsConducted search for outsourcing partner, hired and trained internal manager for the program (~12 months)Selected outsourcing partner, hired 2 Engineers and invited them onsite for 4 weeks of intense training (early 2007)Implemented best practices:Built communication, project procedures etc. for 6 months before hiring more people into the groupRegularly hosts new members for on-site training, sends program manager overseas for group meetingsExpanded group to 10 engineers, testers and system administrators ( 30 -40% of the total development force)Conducted several research projects by temporarily expanding the teamAcquired by Microsoft – 09/2009: 2out of 3 technologies highlighted by Microsoft tech assessment team were developed with active participation of outsourcing team
  • 59.
    Outsourcing can improvetime-to-market and save money……But there’s no free lunch.Must be vigilant about key failure modes, and be disciplined about best practices.Summary
  • 60.