Throughout my experience, I rather regularly meet unsuccessful projects, the key error in which was to outsource them without a proper study of the associated risks. I would like to share the principles that guide me in deciding whether to give work to a third-party company or find resources within the department entrusted to me.
The reason for writing this article was a few projects known to me in my company, where the decision on outsourcing, as it turned out in the end, was wrong. These errors can no longer be avoided, but perhaps my recommendations will help avoid new problems.
At once I will make a reservation that all the following will apply mainly to IT. I deliberately do not mention transfer to outsourcing accounting, logistics or other non-IT businesses. If the principles, in your opinion, will apply to them - try. For now, let's focus on IT solutions
. When deciding whether to outsource the development of new software and under what conditions, I try to assess the impact of the product being developed on the company's competitive advantages. Obviously, with respect to the corporate website,
this effect is significantly less than, say, for an online store
that supports retail or wholesale. If, for example, e-commerce is the company's main business, then such a site becomes a truly “strategic resource.” It can not be transferred to a third-party company.
One of the illustrative examples is our online store. After the development company launched an online store site for us, only the developers themselves could fully support it, because the level of “curvature” of software solutions went off scale beyond all imaginable and inconceivable limits. If we assume that the developers have their own special mindset, which allowed them to create it, then, probably, they are capable and support it. We had to rewrite a lot. As a result, additional forces were invested so much that it was easier from the very beginning to do everything within the company.SECOND
. Contractor must give or little, or a lot. By “little,” I mean a small project, the quality of which the internal team can assess at the technical acceptance stage, to which it is possible to describe the requirements well and test well. By “many,” I mean a complex project, which includes the full implementation and training of technical specialists, the preparation of technical documentation, the delivery of work on a turnkey basis, and the transfer to the contractor of the right to make independent decisions within the budget and high-level goals set for him. I want to note that in this scheme there is no place for "average" projects. Because, in my opinion, it is impossible to make them qualitatively on the side. For small tasks (the “little” option), you can even attract freelancers, but in this case you must have at least a two-fold time margin and an extended reserve budget to cover the associated risks.THIRD
. The contractor must be highly responsible, reliable and stable. And for this, they should be a company corresponding to the level and scale of the tasks assigned to it. The rule about the first pancake is working here as nowhere else - not a single contractor can grasp all the features of your infrastructure without “stepping on a rake” without “trying” all the handles and levers. That is why it is bad to change contractors like gloves - each new one costs not only money and time, but also joint mistakes.
There are a lot of examples from our own experience - last year for the development of the site we had to abandon a number of small contractors in favor of one large one. The number of errors reduced by an order of magnitude, the quality improved.FOURTH
. At the end of the project, the developed solution should be completely transferred to the customer. Technical support for the solution should be made by the client company. In my opinion, under no circumstances, the contractor should not leave behind any
"sacred knowledge." Any kind of guarantee support after the completion of the contract, the obligation to correct mistakes - from the evil one. This does not work. It is necessary to do everything so that the project immediately gets up on its own technical support.
As an example from my own experience, when developing one of the websites in Web Media Group, I insisted on the need to include specialists from our company in the project team and close the key development stages to it. As a result, we got the site together with the knowledge of how it works “inside”, and the contractor better caught our Wishlist at a very early stage. Usually such a scheme is very unpopular in the web development
market, because it adds risks to the developer, which it otherwise avoids. But when viewed from the perspective of the customer, for him this scheme works with a bang.
According to one of our software and hardware solutions for sales through kiosks "stuffing" developed by an external company. The peculiarity was that, to put it simply, they gave us the project on a rental basis. Technical support and product development services gradually became more expensive, and the cost of care increased with each month. The mistake was that the contract did not provide for the full transfer of the product. Again, the output was that we just did it all over again. The total cost of creating the second version of the product “from scratch” turned out to be even less than in the situation when we received the product “for rent”, and the satisfaction of absolutely everyone interested in this project increased many times over.
The only excuse for outsourcing is to save money and time. Always compare the value of these savings with the risks that such a decision promises.