Transcript
Page 1: Outsourcing software development

Outsourcing Software Development

James Gibbons

Page 2: Outsourcing software development

Outsourcing

• Why or why not outsource?

• Choosing a partner

• Making it work

Page 3: Outsourcing software development

Introduction

• Currently a Software Developer

• Previously a Software Development Manager

• Outsourcing in the UK and abroad

• No magic bullets

Have worked with people in the UK (contractors and companies), Poland and Belarus as a collaborator

I’ve worked in an environment where outsourcing worked, and was immensely useful but it wasn’t without a cost.

I have something that may look like a magic bullet, but it isn’t, it’s actually really hard.

Page 4: Outsourcing software development

Why Outsource?

You probably do. Many of the services used by your business are not in house. Payroll, office cleaning, legal, etc.

Need a solid business reason. Interesting challenge is not a good reason.

Page 5: Outsourcing software development

Flexibility - much easier to expand or contract a team, add new skills.

Want to permanently recruit an iPhone developer? A Hadoop expert? Be prepared to join a very long queue.

Outsourcing makes that somebody else’s problem.

Page 6: Outsourcing software development

Need a DBA, who is also a SEO master? It’s like trying to find a unicorn.

Luckily, we have two!

Page 7: Outsourcing software development

© Cezary P 1999

Sometimes you just have a dirty job. It needs to be done and you want to keep your team moving.

Frees up your local team for more valuable and interesting work.

Page 8: Outsourcing software development

All just a matter of money. Lower costs, more bang for your buck.

This isn’t a great reason. It isn’t vastly cheaper unless you go very far away. The cost of working this way will almost certainly mean your savings are a lot less than you expect and may be more expensive than your local team.

Page 9: Outsourcing software development

Why not?

Page 10: Outsourcing software development

Collocation is great. Bring everybody in to one office. Life is so much easier.

Try to make the office nicer than this though.

Page 11: Outsourcing software development

Time goes much more slowly. There are no more ten minute changes.

The feedback cycle is much more

Page 12: Outsourcing software development

Heavyweight process requirements

Page 13: Outsourcing software development

© Luis Miguel Bugallo Sánchez 2005

Are they committed. Chickens versus Pigs.

C2, waiting for payment milestones.

Page 14: Outsourcing software development

Your R&D may not involve microscopes. Who is doing the R&D

Page 15: Outsourcing software development

Hard to convey context, priorities & values

Page 16: Outsourcing software development

What if you want to go back and bring everything in house? Or worse, switch to another provider?

Page 17: Outsourcing software development

Outsourcing Options

Page 18: Outsourcing software development

UK. No travel problems, no culture problems, no language problems, its great!

Very expensive! Java or C# contractors in London >£500 per day. Outside firms can be >£1000

Page 19: Outsourcing software development

Eastern Europe. Options everywhere. Some parts e.g. Poland are very accessible. Flights to all parts of the country from LTN and STN everyday. Russia and Ukraine [Kharkiv] are less accessible. Belarus can be a nightmare as it enjoys very poor relations with the UK [Godel].

Can still be expensive especially in western locations - sometimes more expensive than an in house London developer.

Page 20: Outsourcing software development

Far East - mainly India, China is increasingly important. Also a few other countries like the Philippines and Vietnam.

Also other locations - South America, especially Argentina

Page 21: Outsourcing software development

Choosing a Partner

Page 22: Outsourcing software development

Timing

• Don't wait until you're under pressure.

• Allow lots of slack.

• Your outsourced team will be net contributors slower than you expect.

Page 23: Outsourcing software development

Contractors

• As with your normal hiring procedure

• Expect them to be amazing!

• Feel free to take risks and say goodbye if they don’t measure up.

Page 24: Outsourcing software development

Companies

• Find an organisation with a similar culture.

• Talk to the developers.

• Try to have some leverage.

An organisation like Infosys or Wipro with >100,000 -150,000 people won’t have much in common with your two man startup -> you’ll be paying for things you don’t want or need. If you’re a bank, then they will be able to give you the certifications you may require.

Business development will make it sound wonderful - it’s their job. Talk to the developers, they’ll be the people you speak to day to day and they’ll be the ones that are doing the work. Also, they are usually much worse at lying to you.

Leverage comes in many ways. You may not be the biggest client, but you may be their chance to break into the node.js market.

Page 25: Outsourcing software development

Factors to Consider

• Technical ability

• Time difference

• Language skills

• Travel difficulties

• What is their hiring process?

Time: Poland +1, Ukraine +2, India +5.5, China +8. Remember differences in working times.

Travel time: Eastern Europe a couple of hours; Ukraine 8 hours; India >12 hours; China even longer

Page 26: Outsourcing software development

What work should you outsource?

Page 27: Outsourcing software development

Core IP?

Intellectual Property. A risk?

Page 28: Outsourcing software development

Too Small Too Big

Like Goldilocks, not too small and not too big. Don’t think of it as an outsourcing problem, if you had 10 new developers how would you bring them on board? Mission critical project? Disaster.

Page 29: Outsourcing software development

Break off a distinct piece of work. Ideally a whole project. Remember, your new dev team will have to master an entire new set of tools and way of working; as well as a new domain. Keeping things tight minimises what they have to learn up front.

Page 30: Outsourcing software development

Productivity: out-sourced team will be very low initially, and won’t rise as rapidly as you expect. Starting thinking on an 18 month - 3 year horizon, not a 3 month horizon.

Page 31: Outsourcing software development

Water carrying

Page 32: Outsourcing software development

Customer facing projects?

Page 33: Outsourcing software development

Making it Work

Page 34: Outsourcing software development

Time Frame

• First month

• First year

• First three years

• The future

2012

2013

2014

2015

Page 35: Outsourcing software development

Communication

Its all about the communication. If you’re doing outsourcing and you take away one thing, its communicate.

It will get you around so many bumps and problems if you’ve built up trust and can share knowledge.

Ability to have confidence in the other partner. Its a two way thing!Important to trust your outsourcing partnerNeed to trust and be trustedMust ensure your interests are aligned - fixed cost vs time & materials? Allows a platform for giving feedback and improvement.

Page 36: Outsourcing software development

Face to face conversation is best of all. No latency, incredible bandwidth, immediate feedback. Remember the importance of non verbal communication!

Much easier to convey ideas. Just need to grab a whiteboard or sheet of paper.

Easier to spend an extended period of time with people than on an interminable conference call. [3.5 hour conference call]

Orders of magnitude better at building the softer side of relationships. If you want to build trust without regular visits, expect it to take years. Ideally have visits going both ways - reciprocation is valuable.

Observe what its like at the coal face. [VPN example].

Page 37: Outsourcing software development

Needs to have an excellent connection, excellent bandwidth, latency <150ms

Costs - can be hundreds of thousands, basic setup will still be thousands. Ambient Awareness can be hugely beneficial

Resolution. Standard web cam is a waste of time to share whiteboards etc.

A poorly setup system can actually have a negative affect on communication.

Some lightweight alternatives e.g. join.me for screen sharing - ideal for show and tells

Page 38: Outsourcing software development

Most likely using Voice over IP - lots of different providers. Skype is the de facto standard. Skype is not full duplex, which can be annoying.

Good for day to day updates and communication, but has enough flaws to be unsuitable as the only means of communcation.

Can be hard to explain some ideas without visual props.

Page 39: Outsourcing software development

Tempting, but response times can be very slowRarely the most appropriate toolUbiquitous

Asynchronous - really useful, really annoying

Page 40: Outsourcing software development

Very useful for ad-hoc requests

Also useful as a side channel during discussions.

Can have a useful semi asynchronous nature

Page 41: Outsourcing software development

Google Docs, Rational Team Concert, Basecamp, Jira, Wikis, Lots of Application Lifecycle Management tools: Rally, Mingle, Pivotal Tracker etc.

Page 42: Outsourcing software development

Knowledge Sharing

Outsourcing is a great test of this!Wikis are great, but require conscious effort.Need to encourage the offshore team to contribute back

Page 43: Outsourcing software development

Process

• Don’t try to mirror what you currently use.

• Assign a collection of work.

• Be really clear about expectations, you’ll be surprised in all sorts of ways.

• Demo the work regularly.

Don’t try to mirror what you currently use - use as a base but iterate quickly.Assign a collection of workBe really clear about expectations, you’ll be surprised in all sorts of ways. Initially be very detailed with the spec, but relax later on.Demo the work regularly

Page 44: Outsourcing software development

Challenges

Page 45: Outsourcing software development

Expected

• Decreased communication bandwidth

• Decreased visibility

• Culture clash: corporate and national

• Expectations disconnect

Also legal and regulatory, depending on your field.

Page 46: Outsourcing software development

Unexpected

• Unclear expectations

• Unable to respond to clients.

• Interactions involve more people than you think.

• Hard to manage information flow - people slip up.

Page 47: Outsourcing software development

Patterns

Page 48: Outsourcing software development

Project Kickoff

Bring everyone involved in the project together in one place at the same time for a kick–off meeting. Lay the foundations of the technical work on the project here, but also allow time and space for team members to get to know one another. They must synchronise their ideas about the project in order to establish common goals

Page 49: Outsourcing software development

Regular Visits

Have team members rotate through locations continually. Always have at least one team member working away from their home location.

Having experienced a colleague’s communication style directly, in their local environment, it’s much easier to work with them subsequently.

Page 50: Outsourcing software development

Ambassador

Have a local expert in remote conditions to resolve misunderstandings in either direction.

May not have a queue of people doing this.

Page 51: Outsourcing software development

Proxy Customers

Page 52: Outsourcing software development

Remote pairing

Page 53: Outsourcing software development

Conclusion

• Outsourcing is hard and risky

• Things will go wrong

• With persistence there are benefits in terms of flexibility and depth of talent

• Cost savings won’t be as great as you expect

Page 54: Outsourcing software development

Questions?


Top Related