Outsourced software development is a service like many others offered today. However, unlike a beauty shop, food delivery, or a dog walking service there are many more hidden pitfalls in IT infrastructure. Domain specificity is the primary cause of risks of outsourcing as the more complex the service is the more potential risks are carried by the customer while implementing it.
It is common for both businesses and consumers to assume that service or product quality is the sole responsibility of the vendor. This mindset may not be fully applied in the IT market though. Here are some reasons for this:
- domain complexity of IT infrastructure;
- the early stage of market development. It is nearly 40 years old, but it is still in the growth stage;
- homogeneity of the market. Despite the high level of competition, growth in demand exceeds the supply. This weakens not only market entry requirements, but also performance requirements for emerging companies, even in a highly competitive environment.
Considering the contemporary context, we will try to find out who bears the vast majority of risks and challenges of outsourcing within the development lifecycle, who is ultimately responsible for product quality, and which cooperation model could work best for your particular project.
Why can’t we foresee everything?
So, what is undertaken by the customer and the vendor to guard their interests or at least make risks manageable when developing a software product?
As a rule, they attempt to predict and include all the potential risks of outsourcing in the budget. Let’s assume you armed yourself with the best project management practices, the best risk assessment methods thoroughly wrote all the project requirements, and … ignored the heartless statistics.
According to statistical data, about 60% of projects miss deadlines and exceed the budget. Moreover, one-fifth of all projects are considered to be a failure. The bigger the project, the more frightening the statistics get.
And these are just the official numbers, leaving out the projects that exceed their limits but are considered acceptable.
The opportunity to document all project requirements is a blessing and is always welcomed by providers of turnkey solutions. There are things to keep in mind, though:
- rarely does development go without scope creep when the project is in progress. Startups are great examples where changes are to be made fast based on business needs and it is next to impossible to avoid corrections;
- quality and detail specifications require professionalism and considerable work inputs;
- making changes to specifications and reapproval of the scope of work is a complex and sometimes stressful task. It often requires the presence of management from both parties (customer and vendor) which is not always feasible.
The natural result is that reliable estimates of the project and related risks of outsourcing are complex and costly activities. Despite the dedicated budget to address the foreseen risks, the risks not taken into consideration will likely occur. We will have to face the fact that in most cases the correct project plan can’t be created. And being absolutely honest, we sometimes don’t want to create it, realizing how much money it will cost and the headache it will cause.
Which is better: Time & Materials or Fixed price?
All software development cooperation patterns state the same thing: you make mistakes – you pay for it!
Let’s take Time & materials as an example. Everything seems very simple: every working hour should be paid. Even if a customer planned to spend 2000 hours on a project and had set the corresponding budget but actually 2500 hours had been spent, the received bill will be for 2500 hours.
Overspending may be either the client’s or the vendor’s fault: the customer wanted an extra item on the wish list or the vendor’s initial estimate was not quite correct.
All in all, it doesn’t really matter. Yes, less was planned, yes, a mistake was made and something was not considered, however, 2500 hours of work had been spent so be so kind as to pay for 2500 hours. And the customer pays.
A fixed price is another story. Here a customer may say – this is exactly what we’re looking for! The costs and timeline are agreed, requirements are specified and it looks like there is no room for risks. However, it is not that simple.
In the case of a limited budget, the idea of shifting the risks of overspending on vendors may sound reasonable, but only in the very beginning. This idea becomes much less optimistic when we try to predict the vendor’s actions to address risks when they occur.
Naturally, one of the key objectives of any IT vendor is to make some profit. Occurred risks reduce profit and even lead to losses, making the vendor’s management seek for all possible means to cut costs by either:
- hiring cheaper and thus less experienced software and quality assurance engineers;
- reducing the amount of work leading to buggy secondary functionality that may not seem obvious at first glance;
- creating architectural solutions without scalability and speed potential.
All this results in transferring control over risks to the vendor. Project quality will be the first thing impacted, even if it is not seen on the surface. Ultimately, technical debt may make the code unadaptable for future work such as another product version. As seen, the fixed price approach doesn’t ensure risk coverage as well. The price remains intact but obtaining the required result is not guaranteed.
Where can a solution be found?
It would be wrong to say that we have the ultimate solution to this problem. We are afraid that at the current market development stage and crusted culture, the ideal solution is still an unachievable dream. But it is not a reason to quit trying to improve the situation and to acquire benefits from outsourcing.
In our opinion, one of the possible solutions could be the formation of combined (inhouse-outstaff) teams directly managed by the customer. This provides an opportunity for swift team scalability, losing no control over the outsourcing process and eventually resulting in a good price-quality ratio.
Let’s try to validate this statement with an example. The development of an IT-product is similar to the construction of a house. Suppose you have a vision of your future house.
There are two options: find a construction company offering turnkey solutions, hire construction workers, buy materials, and supervise the process at your own discretion.
- Choosing the first option, one gets less routine issues and more spare time. This is something all IT vendors talk about: trust us, pay the money, and enjoy 24/7 peace of mind. Were there any defects? Did they skimp on material quality? Were there project deviations? You will get the answers to all these questions much later and most likely it will be too late to fix anything.
- Professionals will work for you if you decide to follow the second scenario. You will be the one firing clockwatchers and ensuring quality materials are used. Even if you decide to cut costs somewhere, this will be a conscious decision without potential harm to the whole construction. You can be confident that your house will last for many years. Supervising the house construction on your own you gain the expertise of how the house is built, and when another level should be added you will have fewer issues.
This wouldn’t be the case if you had no clue as to how the previous construction was done. It’s the same story with IT-projects. You either buy and use or create it yourself. Some are ready to expand their competencies, devote time and effort to controlling the development process and the product itself. Some will ask to send the bill when the work is done, being ready to pay extra for convenience. Both options are viable. There are no right or wrong ways in business, there are only the right outcomes. Everyone is free to choose their path to it.