We want to outsource work to skilled development houses but incur a minimum upfront cost in doing so. Do you have any advice, resources or links that would help me investigate how to make this possible?
I can’t offer any honest advice on outsourcing – mostly because I’m against the concept in general, but also because I’m no expert on the subject.
But I actually had a client once who had similar goals. Here's what I told them (and what ended up working).
Step back and look at your company from a process perspective. Where is the real value of the company? Where is your Intellectual Property? What do you do better than anyone?
I would recommend that you identify these high-value core processes within your own company, and try to resist the temptation to outsource them - even if they are engineering related.
In general, at least here in the US, outsourcing has been a financial success, but a business failure. Why is this? Because we (and I assume most others) are terrible at eliciting end-user needs, converting them to product requirements, and then translating them so the average software engineer can understand them. I say “average” because, as you scale, that is what you end up with. The quality of service you may be used to quickly degrades as organizations scale up, up become’s unmanageable as outsourcing is mixed in.
The reason it has been a financial success is, as one CIO I know put it, if “I’m gonna get crap, it might as well be cheap.” This is a dismal assessment of our industry for sure, but it’s not that far from the truth.
One way to combat this problem, and prepare for successful growth, is to use something like the CMMI to focus in on the high-value processes you will be maintaining, and also focusing as much effort on the process interfaces. Ensure that your outsourcer is able to interface with you at a similar maturity (or capability) level. For instance, if you master the art of Requirement’s elicitation and development, be sure your outsourcer’s Verification / Validation processes can respond in kind. There are a lot of disaster story’s on that subject.
If it were me I would retain processes related to Requirement Development, Requirement Management, Verification, Validation, Product Integration, Process Quality (PPQA), Project Management, and Supplier Management. Let the outsourcer take the processes associated with design and development, Configuration Management, and engineering Measurement. You should, in either case, own the architecture of the software, for this is where the real crown jewels are located.
Just mastering the process of translating business needs into technology instructions (which will become much more difficult when engineer's are no longer onsite) will pay for the cost of your up-scaled development organization.