Is there a difference - working in an outsourcing or in a grocery company? Views from Yandex in Nizhny Novgorod

    Yandex has offices in different cities and even countries, and this gives us many different advantages. In addition to the fact that everyone can work from the place that he likes best, it develops so that developers in some cities have unique experience, sometimes quite unusual.

    For example, due to historical features, almost all the developers of our Nizhny Novgorod office worked at least for some time in companies that were engaged in outsourcing development. I decided to take advantage of this and ask them how development for an external customer differs from working on my products in companies like Yandex.

    I must say right away that in Nizhny now we are mainly working on our geoinformation services. The guys write most of the code in Java and C ++. By the way, on August 20, the C ++ Party will be held at the Yandex office in Nizhny Novgorod, which you can come to if you have time to register .

    I am sure that many on Habré have something to say on the topic of our survey. So write what you think in the comments, even if you think that the question itself is contrived. As always, under the cat is the full text version of the answers.

    Alexey Volokhovich
    Programming - 25 years. In Yandex - 8 months.

    Lyosha is the head of the Yandex development office in Nizhny Novgorod. He graduated from the Nizhny Novgorod Technical University named after R. E. Alekseev. Now he teaches discrete mathematics there. Candidate of Technical Sciences. Prior to Yandex, he was involved in the development and program management of mobile devices.

    Product and outsourcing development are two main areas that almost completely divide the software market among themselves. I can say that there is a significant difference in their work. The fact is that by working on a product, making it in the company yourself, you get more responsibility, because depending on what decisions you put into this product, it will enter the market this way. That is, you are fully responsible for how you will continue to live.

    There is no such thing in outsourcing. They give you some kind of order - you work. Yes, seriously, yes, effectively, but as part of this order, and what will happen to it next, by and large you don’t really care. Well, only perhaps so that the customer is not offended and comes again for such an order. You are not so deeply worried about what you are doing. If you look at the fact that Western companies outsource to Russia, in general these are not high-tech things. No serious large Western company will outsource the serious tasks. Otherwise, she will be tied to him and will depend only on him. Therefore, the level and class of tasks that we have to solve in outsourcing are lower than those that we have to solve in Yandex as a grocery company.

    In my opinion, the atmosphere here is more creative. The guys are looking for ways to solve this particular problem in the best way, applying everything that they have in their heads. But, of course, people are different. Someone likes to be creative, to work on tasks that may not have a solution at the moment. And someone likes stability. Outsourcing will give such stability to a person easily. For example, a contract for a bugfix, according to which you should issue five bugs a week, that’s all. You sit, do, do, do. There are people who like it - to each his own.

    But there is also the flip side of those advantages that are in the work in the grocery company. Sometimes you get close to some kind of milestone that you have marked, and at that moment you realize that you need to screw something up. Sometimes you have to push the scope of the project. Whether it is a minus or not a minus, I can’t say, but this is a difference from outsourcing, where you have tight frames, and if you don’t get into them, they will give you a hat, because the customer is waiting for you at this particular time. But there is certainty.

    Oleg Klimin
    Programming - 23 years. Yandex is the year.

    He graduated from Nizhny Novgorod State University. N.I. Lobachevsky. At a previous job, Oleg was engaged in the creation and support of software for cellular communication nodes. Yandex develops mobile geo-applications.

    One of the biggest differences I've seen is the average expertise of the employees. In outsourcing, the main product for which they receive money is the people who are “sold” to other companies. As a result, as many people as possible are recruited. Among him there are people with high expertise, but their percentage is much lower. In Yandex and in the last company developing its own product, where I worked, these people were recruited. In such a team, it works in a completely different way.

    Outsourcing and product companies have different software development processes. In the first they tried to evaluate everything in advance, foresee it, calculate it. For example, for two months there could be an analysis of some feature, which in the end was written for four months and then released. Where development is proprietary, processes are more iterative. There are some small things that are constantly being added, sometimes remade. There is no one who appreciated everything a year in advance, and then another two years do it.

    Moreover, much less bureaucracy. What people need is described on Wiki, something is in tickets, which they themselves write. There are no procedures for the long coordination of any nonsense. If you need a thing, it is taken, sawed and built into the product.

    There is a difference in the responsibility of the people who do it all. As people in their own development write a product, so it goes. In outsourcing, the people who created the product may not see it soon or not see it at all, not hear the feedback from real people on it. The chain from the person who develops the product to the specific user is longer.

    Alexey Chernigin
    Programming - 13 years. Yandex is the year.

    He graduated from UNN them. N.I. Lobachevsky. He worked in a telecommunications company, where he was engaged in the development and support of software for cellular communication nodes. Then he developed video surveillance systems and computer vision algorithms for retail chains. Yandex is developing mobile geo-applications.

    Before Yandex, I worked in an outsourcing company and identified a very clear difference for myself. A food company can afford to develop products that will improve the quality of life of its users. And since the terms, tasks and how the product will look like are determined by the people who work in it, they can bring everything to perfection.

    In outsourcing, the main mission is customer satisfaction. He puts forward clear requirements on how the product should look, and the outsourcer does everything clearly in a timely manner according to the specification - not a step left or right. He makes money at the expense of his customers, while many Yandex applications for people are free. Money is not always a fundamental factor.

    The product company has a much larger and wider field for creativity, because the company itself determines how the product looks, and engineers can participate in determining these requirements and how everything will work. And programming is primarily a creative process.

    In addition, in outsourcing companies everything is based on metrics. There are just a huge number of different productivity metrics: the number of lines of code per hour, average productivity, the number of errors per 100 lines of code The most interesting thing is that when a company does not fulfill the stated requirements for metrics, different tricks are invented to fit them. And they are not always objective. Often this turns into the fact that managers, in pursuit of fulfilled requirements, force people to work on metrics, which naturally affects the quality of the code and the employees very badly. The product company has a main metric - user loyalty. If your product is popular, if the number of people is growing, then everything is fine with you. They won’t push you here, because by morning you should do something what we promised to the customer. Naturally, there are some emergency situations when you need to quickly do something, but in general there is no such excitement. The main thing is to make a quality product.

    Pavel Sukhov
    Programming - 9 years. In Yandex - 5 months.

    He studied at the Nizhny Novgorod branch of HSE, where he has been teaching for two years. Before Yandex, he worked in a research laboratory. Yandex develops geo-applications.


    When you are not working for yourself, you are interested in achieving the goal, not product development. When you work for yourself, you are interested in how the product works. The ultimate goal of bringing TK to the end is no longer relevant. You can give a damn about it, spend more time, but make the product a little better. All the differences between an outsourcing company and a product in this ideology. And the processes do not depend on the type of company, but on the company itself.

    Andrey Magin
    Programming - 2 years. In Yandex - 6 months.

    He also graduated from UNN, but when asked about where he studied, he answered: "In battle." He also said that before Yandex he was engaged in "all sorts of disgusting", and here he is working on supporting a geodata storage system.

    Firstly, the outsourcing company has a lot more bureaucracy associated with approving what you wrote. First, an internal code review passes, then an external review, then something else. This is pretty annoying. Secondly, customers are often people with a different metallicity, it can be difficult to communicate with them. Well, the very feeling that you are working not on the code written by your comrades, but on the code written by some obscure Indians, is somehow depressing. For me personally, there are no advantages to working in outsourcing, but I know people who are programmers who do not really like other people, so the plus for them is that they do not personally communicate with the customer and the people who wrote everything. This minimizes the number of conflicts.

    Mikhail Lopatkin
    Programming - 17 years. In Yandex - 1.5 years.
    Writes a mobile Yandex . Browser for Android. Before Yandex, he worked in various outsourcing companies. He graduated from the Nizhny Novgorod State Technical University and is now coaching the university team for Olympiad programming.

    Perhaps it was the specifics of our customers, but when you work in outsourcing, your opinion is not particularly interesting to anyone. You are the kind of robot who is given bugs, and he will fix them. And when you work on a specific product, you can somehow influence what you end up with. Not only in terms of fixing bugs, but also on how the final product will look. To come up with some more interesting solutions even from the point of view of product design, for example.

    In outsourcing, you need to follow the procedures that the customer requires of you. If he wants to work on CMMI Level 5 and write tons of documentation before changing one line, you will do it. If your customer has no process, then you will not have any process. This is also bad, actually.

    When you work in a product company or in the same outsourcing, but one on a project, you can somehow influence the process and add as much formalism as the team suits, so that it does not interfere, but helps.

    But there are pluses to outsourcing. For example, quite often you can travel around the world, live a year in some other country. But some who do not like to travel on business, consider this a minus.

    Roman Kashitsyn
    Programming - 11 years. Yandex is the year.

    Like many of our colleagues in Nizhny Novgorod, he graduated from UNN to them. N.I. Lobachevsky. Before Yandex, he developed insurance, information security, and media server management systems. Worked on software in telecommunications, workstations, portals. We are involved in the modernization of the back office of the directory of organizations.

    In my opinion, outsourcing is quantity, and a product company is quality. When an outsourcing company completes a project, it doesn’t gain much in addition to profit and little experience. The next project may be completely unrelated to the previous one, and the code refers to a completely different company. A food company develops things for itself, and everything that it produces remains inside and brings quality to everything that surrounds this product. For example, if a new service appears in Yandex, all existing ones benefit from this. If, for example, Maps are published quickly, Search wins, because it will contain more relevant data. If the Search improves, the Cards win, because everything is faster and better.

    I worked a lot in outsourcing companies and I can say that the code there is just awful. When I came to Yandex, it was a pleasant surprise for me that the quality of the code here is very high. Over time, I realized why such a tough code review is needed. We do services not to quickly give and receive money, but in order to please us and those around us. And this is a very big incentive to work even better and faster, because there is a feeling that you are helping people. Especially if you yourself use the services that you produce.

    Cons too. As a rule, projects give up more slowly because you have to pay for quality.

    Also popular now: