Setting “The Iron Triangle” of cost, quality and time in an outsourced software project can give a project manager sleepless days and nights. How can outsourced software development be made less of a problem?
Identifying the risks is an important starting point. The next step is to make certain the company you select have the skills and knowledge to produce your software. To help them, you need to provide a good requirement specification. In addition, agreeing the software development technique helps you monitor progress and make certain it meets the requirements.
There are software houses who will manage the risk for you and some that will take part of the risk. You must be clear on the risk to you and your company if the project fails completely or does not meet the requirements. If the project goes wrong, at best you will lose time and at worst you will have paid for software that does not do what you want. If the software house takes part of the risk, you need to be clear on what part they’re taking and what part you’re left with.
There are a great number of software houses all over the world who have highly qualified software engineers capable of the highest technical work. The chief problem is to have clear knowledge of the skills of the persons who will work on the project. Experience counts when interpreting your requirements. The software house must have someone who has the experience to understand what your software is for and how it’s supposed to work. To help you, there are internationally recognized certification qualifications in all the popular programing languages such as Java, C++ and .NET. In addition, some companies state the have ISO certified programmers and have won awards for their software. Check out these qualifications and claims whether you go offshore or stay onshore.
Keep in mind that programming does not need years and years of dedicated time and experience. Programming is now simpler due to the sophistication of modern programming languages and development environments that are used to write and debug the code. In addition, software houses may re-use code they’ve written for someone else. They are quite right to do so because they don’t want to keep “re-inventing the wheel”. The benefit to you is that it’s already been tested and debugged.
From the point of view of the software house, the key is a clear set of requirements about which to discuss time and costs. If the requirements are unclear you will end up in a circle of refinement that wastes time and money. Use the requirements to make clear to the software house what you expect the application to do and, importantly, what it is not expected to do. If it’s a component in a bigger system, make certain you specify the interfaces clearly.
The requirements must be written in unambiguous, plain English, possibly using structured English or information mapping techniques. You may even consider writing them in a controlled language if you’re thinking of going offshore. ASD-STE100 is an internationally recognized controlled language used to write aircraft manuals that are read by people all over the world who are not native English speakers.
Software development technique
Another key point is to specify, or at least agree with the software house, the software development technique to use. This lets you see how the design is developing and gives you a clear view on how your requirements are to be met. Importantly, it gives you an early warning on when and where things may go wrong.