
Once upon a time, when today's programmers, analysts, and, probably, even managers studied in universities, they were told about the wise principle - first the task is determined, then the product requirements are written, and then the technology is selected. So why did it happen that in a huge number of large projects developed by serious companies, there are technologies and tools that, to put it mildly, are out of place there? Has the crowd of good, well-paid specialists forgot one of the basic principles of development?
No, everyone remembers and understands this, but nuances begin to play a role, which no one talks about during the training.
Vendor
When a serious organization seeks a solution to its serious problems, it usually turns to giants like IBM or Microsoft. Or arranges a tender in which, with a high degree of probability, the monsters of the IT field win again. And these companies have long ceased to be groups of people solving customer problems. Now it is "great vendors." Only in some cases, they themselves develop or implement something. Usually they sell one of their “boxed” solutions and transfer the order to a smaller partner. And the partner already finishes the solution for a specific customer and implements it. Those. The vendor’s goal is not to solve customer’s problems, but to sell its products.
Moreover, partners also try to sell as many products of their vendor as they can. firstly, they have a percentage from this, and secondly, successful sales raise their rating and increase the chances of receiving orders from the vendor. Those. "We will, we will, and between times we will solve the problems of the customer."
For example, a consultant (read “marketer”) at Microsoft convinced the customer that he needed BizTalk and MS CRM. After that, the order is transferred to one of the partners, say, some company “A”. The specialists of the company “A” study the tasks assigned to them, form requirements for the system and understand that the sold products are not the best solution. Let's say it would be much better to simply develop a couple of web services and slightly finish the internal portal that the customer already has.
')
But you can not refuse products sold! So you have to use and "finish" them for solving an inappropriate task. At the same time, the cost and duration of work increases, the quality of the final product decreases, the cast-iron and sluggish system results.
But the essence of the problem is that the products and technologies were chosen not by a specialist, but by the seller. The purpose of which is not optimal to solve the problem, but to sell the most expensive solution.
Skills
It is impossible to know and be able to do everything. This is especially true of the IT field, where the list of products and technologies tends to infinity. Therefore, no matter who they turn to for help - a vendor, a partner, an “independent” outsourcing company, or a student Vasily Pupkin - everyone will solve the problem within their knowledge and skills. And then a person will come with a completely different knowledge and will shake his head: “Well, how is that? Well, why is it here? It was much easier! ”
An even worse option is when the instrument was chosen correctly, but due to lack of experience and time for study, it was used incorrectly. From my own experience I can say that the result is much better in the case when the developer out of place uses what he knows well. In situations where they are trying to introduce something that they see for the first time in their lives, nothing good can be expected.
"And we already have ..."
This is the rare case in which the customer, not the developer, is to blame for the error. Those. the task is initially set within the framework of: “Modify the existing solution so that it can ...”
If the existing product was not originally developed to solve this problem, if the necessary improvements contradict the architecture or if there is a more appropriate tool in this case, it is worth considering - is it worth it? Maybe instead of developing an existing solution, it's time to replace it? Or divide the "areas of responsibility" - for a new task to apply a new solution, and leave the old in the form in which it is. There are always options and sometimes it comes time to buy a new car, and not to “pump” an old horse!
So it turns out
What appeals to outsourcers or consultants need to think about some questions:
- Do they push the contractor into an unnecessary technological framework? The extra restrictions are difficulties, time and money spent in vain.
- Technology offered because it fits, or just really need to sell it?
- Do the developers of the company offer any alternatives? Are they ready to consider them at all?
- Do they have experience with selected technology?
And after all experience should be in the decision of similar tasks! If you need a corporate portal, and offer to make it on a flash, then the company's rich experience in developing flash games is unlikely to be so helpful.
The main thing is to understand that the problem requires a solution, and the solution requires technology. And trying to change these priorities is always expensive! It is a pity that we often forget about it.
PS
All this is my vision of the problem. I would be very happy to read an alternative point of view.