In case you consider yourself a shark of outsourcing software, please do not read this post. It is intended for those who know what outsourcing is, but have no practical hands-on experience of ordering software development from external companies.
And if you are still reading on, please imagine... having a slight hunger in your stomach. Luckily there is a cafe or canteen nearby, however with a poor selection of meals - you can select either Warm or Soft meal. What would you choose?
I bet your answer is - it all depends, and you need to know more about the exact meals being offered and about other conditions, e.g. meat or vegetables, sweet or spicy, fresh or not, etc. Even weather matters! And after all, you simply want to see what the meals look like. So we come to the simplest and safest way - first, try and then buy. You are lucky if having such an opportunity - it means you have already spent time on assessment of this cafe.
A similar thing happens when selecting a software provider which is supposed to develop a nice and neat solution for your own purposes. Depending on a situation you might (1) have a well defined RFQ/RFP with clear requirements (business, functional and non-functional) either (2) have nothing except a blur expectation. In our current example, we face the latter situation or worse - not only expectations are blur, but the budget is also not defined nor approved.
Sooner or later you will have a few conference calls, reference visits, and several reduced budget estimates. Perhaps one company would be the most convincing to become your trusted partner (soon)! And before sharing this good news with them you decide to pay more attention to the contract. Most like you would be limited to two models of outsourcing - FixedPrice or Time&Materials. It has been said and written too much about them, and there is hardly a universal way to help you make the right selection for every situation. Therefore I will slightly touch only some specifics worth to mention.
- NDA (Non-disclosure agreement). Common for the both models. I hope you already have it signed. If not, hurry up to secure this point. Specification of requirements. You cannot expect guaranteed performance under FixedPrice model unless you have full and actual specifications in your hand. No requirements specified? Then conducting Business Analysis and generating requirements are the only deliverables under FixedPrice.
- Deadlines. Oops, we are bumping into requirements again! Have you got them documented? Fine, you can speak of deadlines. However are you sure of not going to amend the requirements during the development process? If in doubt - go for Time&Materials only, as this model not only allows flexibility and changes but even motivates them (if not abusing).
- Quality. Oops again! Have you specified your functional and non-functional requirements well enough? Good if so, otherwise it is only Time&Materials to let you rearrange priorities on ad-hoc basis and improve quality whenever needed.
- Communicating with your software provider. Regardless of the contract model, this point must be fixed before signing the contract. In our example above - imagine that you have to instruct each staff of the cafe on every little preference - telling to one guy about saltiness, to another one about spices, to the third one about sauces and oil, etc. The same happens with software development - there must be a single interface for all your queries - a project manager or a team leader responsible in front of your single interface (do you realize your project manager would also have to spend time and efforts?)
- Money :) Quite simple. FixedPrice contracts are rarely started without a 30-50% prepayment made once and in advance. If you like to pay upon a proven result only - go for time&Materials. In combination with agile project management, you will always see progress and pay only upon seeing it, and in smaller portions.
- Risks, 1. A typical FixedPrice contract includes risks presumed by the contractor. It can be a risk of under evaluating your requirements, or in case you want a sudden change. It could be a risk of you canceling the project at all! In any case, it results in a price which is higher than it could be with Time&Materials.
- Risks, 2. When going for Time&Materials how can you be sure of paying actual efforts only? Well, there is a way - your provider/contractor must offer you a tool to track time spent by his team on your project. It can be Jira or another tool. However, it is still a subject of the contract.
- Modifications and documentation. Although you might be looking for long-term relationships with your software provider, there might be a day when your ways separate. What do you plan to do with the source code which is your intellectual property? In case you reserve a possibility of developing it further, or even reselling, you might need its proper documentation. Quite often documenting source code may consume up from 5 to 15% of the total development costs. Think in advance - do you need this documentation in future? Assuming that with Time&Materials the development will need fewer hours, you can think that documenting the code would be cost respectively lower as well.
Instead of a conclusion I would like to propose another well-known idea: a Hybrid model, which is cross-breeding FixedPrice and Time&Materials to bring all benefits of these two to your feet. And this is a good subject for a new follow-up post.