We have been delivering software development services at Tesseris Pro for more than 8 years. During this time, I’ve learned one interesting thing. We tried different kinds of cooperation namely outstaffing, outsourcing, some mixed things, time and material, fixed price, some very customized billing schemes.
Several years ago I realized that a complete development cycle with fixed price is the most efficient scheme for us and for our clients. This remains true even considering that we mostly work on complicated solutions where we have no well-defined and well-known approach.
So why did this happen? Why taking risks (sometimes for the same price) is more comfortable for our team? The answer is quite simple. We have a lot of startups, small and medium businesses as clients, and most of them have no BA in their teams and their executives have a lot of tasks apart from the development process. Therefore, they have no time/resources for two very important things – requirements analysis and development process management.
When we work as outstaffing or outsourcing provider we have poor requirements very often. Sometimes it’s a very short document with terrible mockups and undefined logic, sometimes it’s huge documents with a lot of text not divided to user-stories. In both cases it’s very hard for a developer (even a senior developer) to work with such requirements. As a result, we have a lot of change requests, clients have to spend additional money, developers become nervous because they feel that they have done something wrong and in case of the fixed price scope management becomes a real war.
Everything is much better when we work as a solution provider. When a client describes the idea, we prepare requirements and implement them. Our BA team discovers all gaps in the client’s vision of the project on an early stage. We predict most technical risks and can offer several alternative solutions. We have been polishing our development process for 8 years. And I can say that we are much more efficient in the development process than a team of very talented and motivated developers in a startup because we saw a lot of projects which became successful businesses while others failed.
Our developers have well-defined and well-structured tasks created by BA team. Managers have well-defined scope and requirements. As result clients have predictable price and quality. Therefore, we do projects faster, better, cheaper and have less percent of not billable or problematic hours.
These are the things that really work even with big businesses when they have no dedicated development team. You know your business, what things make your product successful and different, but companies like ours know how to implement this in the real world with real tools and technologies. And sometimes we got this knowledge from failures.
Consequently, if your service providers tell you that they are going to take care of everything, think twice before you decide that you know better how to build your software. Unless you would like to have some failures to get more knowledge 😉