A Recipe for Outsourcing Your
Software Development
by Steve Mezak
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.
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.