Businesses have always traditionally operated with some form of outsourcing. Whether it was calling an accountant every so often to balance the books, or hiring a delivery service for moving inventory around, it’s always just been smart practice to “Do what you’re good at, and outsource the rest”.
Improvements in telephony in the 80s allowed a greater range of outsourcing options. Then the 90s brought us instant messaging and cheap VOIP calls, allowing us to even start considering offshore outsourcing. Now the 2000s are here, and you have entire companies dedicated to outsourced business process provision. The 2010s have ushered in very good software as a service offerings, allowing us to outsource even portions of our business logic, but this is a topic for another article.
Software development today is so broad and deep, that past a certain level of complexity, outsourcing isn’t just an exercise in being cost effective, it just makes sense. It’s not a magic wand though, and there are several excellent articles that help you decide whether it’s time to consider outsourcing. To this corpus of knowledge, I would like to add the following.
1. “How can we save money on our IT expenses?”
The classic case for outsourcing is some flavor of: “Let’s save some money by sending this work overseas.”. On the surface, this makes sense. IIT and Xinghua University produce some of the best developers and technology workers in the world, at a fraction of the cost of equivalent onshore resources.
You need C#, they know C#, but C# costs 100k+ here and 30k+ there. It’s just good business sense.
If you’ve done a little due diligence, you’ll have prepared copious documentation, code samples, logins, and contact information, and the experiment goes well for a few months. Then you start having arguments about who’s in charge of what, and hey, since Bob’s managing the offshore team, doesn’t he deserve a raise?
And then slowly, almost imperceptibly, you ask the question again “How can we save money on our IT expenses?”
Instead ask:“What problem needs solving?”
Outsourcing solves a problem of either capacity or expertise. While it may save you money, that is not its primary advantage. Service providers with expertise in exotic skillsets are particularly valuable, since they save you from having to bring some technology in-house that you may need for just one project. Migration projects are a good example of this.
On the other hand, a service provider that provides a more common skill set, like Java or PHP, is a very good way to work a defect or infrastructure backlog, leaving your developers to focus on tasks closer to your business.
2. “Which service provider has more experts in [x] technology?”
A fair question. You’ve got a .net stack and a team of .net veterans who have been around since the 1.0 Framework. You started in WinForms and are now using Razor views and ASP.Net MVC. You now need another expert to add capacity to your team. No gotchas here. You could ask this question and come to a very satisfying outsourcing experience.
But the (not so small problem) is that… well, when you have a hammer, everything looks like a nail. And now you’re looking for more hammers.
An even better question to ask is: “What has this service provider done in my domain?”
Technology is wide and deep, and a service provider that has had experience in your stack might not have experience to match in your domain. A great majority of the reasons why IT projects fail is almost never because the developers weren’t good enough in technology [x], it’s almost always because of a failure in communication. You want a technology partner who is aware of (and isn’t afraid to tell you about) technologies outside your stack that might solve your business problems with more efficacy.
3. “How do I ensure morale remains high in my team when choosing outsourcing?”
I was going to lead with this question, because I was working for Microsoft when it first started moving some development to GDCI. The mood was very somber with the reactions ranging from “They’ll never be as good as us” to “I need to find a new job now.” Despite statements by management that no one was getting fired/laid off/etc., morale was still affected. When a move is seen as a cost-saving measure, it will be very hard to reassure people that their jobs are not in danger.
This is the toughest of the three questions. I would instead ask: “Will my culture adapt to a model that uses outsourced resources?”
When you’ve been doing everything in-house for a while, it might come as a shock to team members that you’re bringing on a team of consultants. And that’s understandable. Pizza Fridays, the lounge foosball table, even the inside jokes around the water cooler. It’s tough enough when one new guy joins the team, in an outsourcing model, several new people do. And if the team isn’t onsite, pick-up games of table tennis just won’t be possible.
There isn’t a one-size fits-all solution to this question. Our clients continue to surprise us in how we engage with them. Face to face is still good, and we try to meet all our clients face to face as regularly as possible, but the methods are myriad.
What IS constant though is that going into the conversation, both parties had goal alignment and believed that the other party had their best intentions in mind. Each of our engagements, whether one project, or an ongoing dedicated team model, constantly surprises us by how inventive a group of people can be once they’ve determined that they want to work together.
Of course, the best partners will offer you a way to make this transition easy.
In the end, the classic promise of outsourcing has been ‘virtual IT capacity’, much in the same way that you only need to pay-as-you-go for virtual machines and allocate-as-you-go for virtual memory.
But it hasn’t been that. It can never be that.
Because the best partners are people who will work with you to solve business problems that you both care about; they won’t merely be a collection of more cost effective skill sets.