Outsourcing software development saves you money, right?
Well, maybe…but it also raises risks, especially when it’s offshored.
You need to weigh the cost savings from outsourcing coding against the costs that will be driven by the management overhead, needs for more comprehensive requirements documentation and, for offshored projects, off-hour meetings.
The more critical the system is going to be for the business, the more important it is that you consider your options in managing risks in outsourcing the development of the software.
Why? Because there are significant risks that can result, for example, in your spending far more money than if you’d done the coding in-house. And if you off-shore the software development, the risk factor goes up.
1. Outsourcing tech services requires more knowledgeable management oversight.
Oversight is needed because when you outsource a key technology service, even one less critical than software development, it raises the requirement for your technology vendor management skills. Many firms approach outsourcing as though there’s not much time required from internal resources. Not so.
2. Outsourcing the coding of your software significantly ups your risk, especially offshore.
- Software programmers, especially the team leads, must have an in-depth grasp of the business needs, drivers, and key success criteria. Cultural issues – brought about when coding is sent offshore – can impact the design in many unforeseen and surprising ways. (Note that this isn’t as true for the well-established offshore shops, but still worth noting.)
- Software architects must be closely attuned to the business needs and if your software architect is part of the outsourced team, you may want to have some in-house oversight for quality assurance in the architecture. It will be monies well spent – consider it business insurance. (Note my blog post on the business needing to be involved early in software architecture requirements.)
It’s worth mentioning that regardless of how well you think the team has spelled out requirements there can be misunderstandings and other snafus. Programmers make countless choices – some minor, some not – as they craft their code. This is where having a strong in-house project leader, overseeing requirements and design, can identify and get misunderstandings fixed before they become problems. Conversely, if your vendor puts the leader into your offices, that can also work out well.
3. Consider a hybrid approach to your outsourcing any software development.
Having seen numerous instances of serious problems with outsourcing development (most notably off-shored development), I’d recommend that you spend the time upfront to evaluate the vendors, get references and check them – thoroughly. And consider a hybrid approach, especially for any offshore effort, even if the firm has “local” leadership:
- Either assign an internal resource to oversee the vendor through the requirements gathering, prototyping, design and testing – or hire a consultant who’s been there before. (I’ve assisted many firms with this type of endeavor, successfully!)
- For any system development effort that includes databases, reporting, special business rules or security, bring in an application architect consultant for periodic checkpoints (if you don’t have one in-house). I promise, this will be monies well spent.
Some other ideas on getting started are available here from CIO.com.