Outsourcing your software development can save you time and money if you know what you need.
Too often US companies attempt 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 cannot 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.