outsourcing software development

Post on 16-Nov-2014

218 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Outsourcing Software Development

James Gibbons

Outsourcing

• Why or why not outsource?

• Choosing a partner

• Making it work

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.

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.

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.

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

Luckily, we have two!

© 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.

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.

Why not?

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

Try to make the office nicer than this though.

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

The feedback cycle is much more

Heavyweight process requirements

© Luis Miguel Bugallo Sánchez 2005

Are they committed. Chickens versus Pigs.

C2, waiting for payment milestones.

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

Hard to convey context, priorities & values

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

Outsourcing Options

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

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.

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

Choosing a Partner

Timing

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

• Allow lots of slack.

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

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.

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.

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

What work should you outsource?

Core IP?

Intellectual Property. A risk?

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.

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.

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.

Water carrying

Customer facing projects?

Making it Work

Time Frame

• First month

• First year

• First three years

• The future

2012

2013

2014

2015

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.

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].

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

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.

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

Asynchronous - really useful, really annoying

Very useful for ad-hoc requests

Also useful as a side channel during discussions.

Can have a useful semi asynchronous nature

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

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

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

Challenges

Expected

• Decreased communication bandwidth

• Decreased visibility

• Culture clash: corporate and national

• Expectations disconnect

Also legal and regulatory, depending on your field.

Unexpected

• Unclear expectations

• Unable to respond to clients.

• Interactions involve more people than you think.

• Hard to manage information flow - people slip up.

Patterns

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

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.

Ambassador

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

May not have a queue of people doing this.

Proxy Customers

Remote pairing

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

Questions?

top related