software outsourcing: pitfalls and best practices

21
Igor Tsinman CTO, AMC Bridge

Upload: amc-bridge

Post on 08-Jul-2015

377 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Software Outsourcing: Pitfalls and Best Practices

Igor Tsinman

CTO, AMC Bridge

Page 2: Software Outsourcing: Pitfalls and Best Practices

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 partner

Page 3: Software Outsourcing: Pitfalls and Best Practices

AMC Bridge is a U.S.-based software engineering outsourcing firm, with >100 developers in Ukraine. Over the past decade we have carried out hundreds 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.

Page 4: Software Outsourcing: Pitfalls and Best Practices

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.

Page 5: Software Outsourcing: Pitfalls and Best Practices

1. Support of existing product Allows local team to concentrate on new breakthrough

version / direction

2. Augment existing team Help cover an area outside of the team’s core expertise

3. “Try something new” high risk, outside of the firm’s core business

4. One-off (relatively short) project E.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.]

Page 6: Software Outsourcing: Pitfalls and Best Practices

Several ways that outsourced engineering teams can play a role◦ Occasional 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 development

Page 7: Software Outsourcing: Pitfalls and Best Practices

What’s delivered is not what’s expected

Bug fixing can be long and cumbersome

After project delivery, lots of time spent bringing it up to the acceptable standards

Excess expenses eat up projected “savings”

Page 8: Software Outsourcing: Pitfalls and Best Practices

Business context mismatch◦ Lack of understanding on the part of development team

of the purpose and goals of the developed application

Technical context mismatch◦ Lack of clarity and coordination on key architectural

assumptions/design/approach of overall program

Development Process mismatch◦ Not integrating the outside team into overall program’s

development process

Cultural mismatch◦ Well-meaning but incorrect approach due to cultural

differences (e.g., “The customer is always right” and “We shouldn’t ask WHY” eliminates valuable back-and-forth discussions)

Page 9: Software Outsourcing: Pitfalls and Best Practices

Business mismatch is on of the most important “barriers” to outsourcing especially when it comes to business applications.

For example, if you 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:◦ The difference between gross commissions and net

commissions.◦ What is ticket charge, what is trailer etc.

The gap could be mitigated by a well defined spec, but it may not be enough in all cases.

People work more productively if they understand the “big” picture, and see their work in the context of the overall project

Page 10: Software Outsourcing: Pitfalls and Best Practices

Here we are not 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.

Page 11: Software Outsourcing: Pitfalls and Best Practices

Often, in a rush 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.

This is especially true for many small companies and start-ups.

Need to think through: project management, communication, code submission process, bug tracking, time management, QA, documentation.

Page 12: Software Outsourcing: Pitfalls and Best Practices

This concept is a bit difficult to define, but it is there…Couple examples:◦ There are culture where “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.

◦ Engineers are chronically afraid 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.

Page 13: Software Outsourcing: Pitfalls and Best Practices

Areas to probe:◦ Evaluate how familiar outsourcing partner is with

business domain, architectural components

◦ References – similar projects

◦ Explore their operations – process, approach, tools, technologies, source control, bug management, etc.

Page 14: Software Outsourcing: Pitfalls and Best Practices

Best defense is to avoid dealing with “random” people and organizations

If you have an important project, it should not be outsourced to “moon lighters”

Rather, look for organization who has been in business for some time, and has invested in building a company◦ They would police their workforce themselves since “IP

leak” would spell death for their business;◦ If company ownership is 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.

Page 15: Software Outsourcing: Pitfalls and Best Practices

Think long-term, build teams, invest in bringing people on board

Choose teams w/domain expertise (rather than focusing on programming language / technology)

Communication – one-to-many; many-to-many

Page 16: Software Outsourcing: Pitfalls and Best Practices

Build a team that works for you, rather then approach it project by project.

This helps create the effect of “information accumulation” – once explained, a topic could be clarified later, avoiding the need to revisit it over and over again

Select teams that have 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.

Select teams that have experience in outsourcing for companies similar in size to yours

Select teams that have built applications similar architecturally to yours– e.g., Client Server, Social Networks, CAD etc.

Page 17: Software Outsourcing: Pitfalls and Best Practices

Spend time to bring 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!)

Page 18: Software Outsourcing: Pitfalls and Best Practices

Have somebody onboard who is “constantly” responsible for communication and management of offshore resources – weekly meetings are a must;

Structure outsourcing team in 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;

Pay close attention to the process – a well-defined process is essential to making sure that offshore team contributes successfully to a project.

Page 19: Software Outsourcing: Pitfalls and Best Practices

MIT spin-off in High Performance Computing recently acquired by Microsoft

Founded 2005; Identified need for outsourcing in 2006◦ Deployment and installation tools, QA framework, Math libraries developments

Conducted 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 group◦ Regularly hosts new members for on-site training, sends program manager overseas

for group meetings◦ Expanded group to 10 engineers, testers and system administrators ( 30 -40% of the

total development force)◦ Conducted several research projects by temporarily expanding the team

Acquired by Microsoft – 09/2009: 2out of 3 technologies highlighted by Microsoft tech assessment team were developed with active participation of outsourcing team

Page 20: Software Outsourcing: Pitfalls and Best Practices

Outsourcing can improve time-to-market and save money…

…But there’s no free lunch.

Must be vigilant about key failure modes, and be disciplined about best practices.

Page 21: Software Outsourcing: Pitfalls and Best Practices

Igor [email protected]

(617) 842-7470