Upload
jamesgibbons
View
220
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Citation preview
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?