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 the assessment of this cafe.
A similar thing happens when selecting an outsource software provider that 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 a 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 mentioning.
- NDA (Non-disclosure agreement). Common for 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 an ad-hoc basis and improve quality whenever needed.
- Communicating with your outsource 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 café on every little preference — telling 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 that 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 the subject of the contract.
- Modifications and documentation. Although you might be looking for long-term relationships with your outsource 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 the future? Assuming that with Time&Materials the development will need fewer hours, you can think that documenting the code would 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.