Outsourcing your software development can save you time and money if you know what you need. Too often US companies attempted to outsource without a good understanding of what their software should do, and this is the biggest cause of outsourcing failure. It is unreasonable to expect your outsourcing team to have a menu of software, pre-prepared, so you can just select the items you want.
Ever go to a restaurant with a picky eater? They tell the waiter in excruciating detail how they want their food prepared. And heaven forbid that the food arrives different from what was requested! Back to the kitchen it goes to be "fixed" to make the picky eater happy.
Sometimes US companies hire an outsourced partner as if they were going to a restaurant. They select the cuisine based on the flavor of the technology they require. Chinese .NET or Indian Java? How about some Russian C ++? Unfortunately there is rarely a menu for the exact items you might like to order from an outsourced team.
Are you approaching outsourcing your software like you are walking into a restaurant? Are you expecting the outsourcing team to advise you, like an attentive waiter, on the way your software should look, be prepared and presented to your customers?
Instead, bring your own recipe when you start work with an outsourcing team. Unlike your dining experiences, you can not ask for the daily special. You have to provide a specific description of what you would like to have, and how it should be prepared. Without such a recipe, your outsourced software development efforts can be starved for success.
Poorly specified software is often the result when "subject matter experts" are involved. Subject matter experts, or SMEs, know a lot about a particular subject, like IC design, business process workflow, inventory management, etc., but very little about designing software. SMEs can struggle to get their ideas encoded in the software. They need to work with someone that knows the best way to design and develop software.
Sometimes, there is a fear of getting bogged down in the details. Since some software executives are great with people, they feel much more comfortable hiring a person to handle the details. They know how to manage a person here, better than they can manage an offshore team of programmers in a remote offshore location.
One Accelerance client is in this situation. The CEO wants to outsource the development of a new software product. But there is no specification. In this case Accelerance is acting as a virtual CTO, responsible for the design, and development of the client's software.
The client is essentially saying, "Design the software for me, and I'll tell you if it matches what I am thinking." This can work because the cost of outsourcing is so low that rework and multiple design iterations are affordable.
This type of arrangement only works when paying on a Time and Materials basis. There is no way to offer fixed pricing because the end product is not defined.
Of course, not having a specification may not stop you from asking for a fixed price bid! In this case, you can outsource the creation of a specification that defines your software for a fixed price. Then the resulting complete design specification is used to create a second fixed price bid for writing your software.
Another factor comes into play when you pay a fixed price amount for a software design specification. You usually have to pay at least half up front. This is to protect the outsourcing company from delivering a specification for creating the software and then not getting paid.
Because software design often occurs at the beginning of a relationship, both parties seek to minimize their risk. You minimize your risk by selecting an outsourcing team with a proven track record and great references. The outsourcing team reduces their risk by getting partial (sometimes full) payment before starting.
There are multiple deliverables that should be produced during the design phase of creating your software, whether you do it yourself, or outsource the design:
* Marketing Requirements
* Storyboard Demo
* Functional Specification
* Multiple Release Milestone Schedule
* Detailed Task Schedule for First Release
* Detailed Design Specification (optional)
Unfortunately, software development has not progressed to the point where ready-made modules are available to order and combined to create your software. There is not yet a menu of choices available to anyone that is hungry for new software. Instead, you must provide your own recipe for what you need. The good news is low cost outsourced software design and development resources are now available to create your custom software to meet your exact specifications.