The dark and light sides of work at Yandex
The article “The dark side of work in Yandex.Market ” prompted me to write this article .
The author describes a lot of things that, yes, exist in reality, but he writes in a very negative way, so that the picture is painfully gloomy.
I’ll try a little to oppose.
Before starting the article, I’ll tell you a little about myself. I work at Yandex. I head the department developing software for one of the offline / online businesses. At the same time, I also write code (that is, I am not a manager). Before Yandex, I worked in several companies. Including large ones, for example, in Mail.RU.
I got to Yandex in a not very traditional way: my friends and I made a very successful startup, which normally took off and worked. He was a competitor to one of Yandex’s businesses. Technologically, we in some aspects greatly exceeded Yandex. But financially, of course, they could not compete with him: our start-up was raised by investing exclusively in our work. We did not attract investments. And so one day Yandex acquired our company and we became Yandex employees.
Before Yandex, I worked mainly in small teams. Big projects were raised with little effort. In Yandex, for the first time I came across the development of one product by 150-200 people. And here’s what I’ll say: the author of the article is telling the truth, identifying individual shortcomings, as it is. However, as is usually the case, this is not so.
The main problem is that he points to “it is done / works / works like this”, but does not want to analyze at all: “why is this so?” And also did not try to change something.
I think that the problems that the author encountered in Yandex are entirely related to the author himself .
I will comment on the thesis of the article:
An employee from Ivanovo works in my department. When he got a job, then:
- They rented a hotel near the office for half a month.
- We appointed and paid for the services of a consultant to help you find rental housing.
- They paid an agent commission (everyone remembers that when you rent a house, do you still have to pay this commission?).
- Paid for half a month of living in a new apartment, which he picked up.
- And right after employment they paid a lift.
When he works for a year, he owes nothing to Yandex for this entire move.
Once I arrived in Moscow with my pregnant wife and the amount of money in my pocket, sufficient only for the purchase of return tickets. And on the train, not on the plane. We stayed with friends for a few days and these days it was necessary to find a job, rent a house (despite the fact that there was only money for tickets). I then rented a room in the distant suburbs of Moscow. At the work that I got a job, technical conferences with coffee breaks were constantly held. Since those conferences, he managed to drag off the heels of sandwiches to eat something in the evening …
In the afternoon, I stormed microprocessors, electrical circuits, and programs, and in the evening … in the evening, with the same visitors, I installed air conditioners in apartments and intercoms in the entrances. And we had dinner with my wife – those sandwiches from the conference … If this conference was today.
Oh, there was a time …
The author’s claim is that upon dismissal within a year, Yandex will demand this money back …
How to say it. Serious claim!
Oh, I would have had such serious problems when I arrived in Moscow!
Yandex pays below the market.
In my life, it was somehow easy for me to “sell myself at an interview”. Everywhere where I worked (except for research institutes, but this is a separate song, the work there was so interesting that figs with her salary) I earned according to the market.
God did not deprive me of sociability either, and wherever I worked, it somehow happened that I always knew the salary levels of my colleagues.
For example, I worked at Mail.RU in developing the Tarantool database. It was then surprising that two people working in the same positions, engaged in approximately the same business, could receive twice as different salaries.
Now I know the salaries of my subordinates. And I also see differences between employees with the same level / tasks. The differences are not the same as they were in Mail.RU, but they are. This difference is obviously due to the behavior of the candidate when hiring.
We periodically recruit new people to the department. After all the interviews have passed, the go-ahead has been received: “this person can be hired for such and such a position, such and such a level,” then negotiations are beginning with him on salary amounts. Heychars are doing this. They are guided by the level of assessment affixed at the interviews.
A very recent case: with one employee (then a candidate), these negotiations were very lengthy, but in the end he received exactly the proposal that he was interested in. Because he haggled, argued, refused.
If you are offered below the market – bargain. Do not agree. You will succeed.
The author had to write: I was able to sell myself on Yandex only at a price below the market , and he wrote “Yandex pays below the market.” The usual transfer of responsibility from oneself to others.
It is worth working on a communication skill at interviews, or working on technical skills (we will touch on them below). But he believes that the world (Yandex) is unfairly arranged. It is hoped that a new place will be arranged better.
I really like bicycles. We are programmers. We have to write code. If you take ready-made solutions all the time, then where will the programming be? When the bike code is only three to five times the import code of some library, its initialization / import from it the right one – I usually stand behind the bikes.
Looking into the PR of a person who pulled an entire library of
numpyfools of constants,
numpy.nanI want to shout: “What are you doing? Are you out of your mind?” (but I politely write him a comment). What does not suit a beautiful bicycle
float("nan"), or another 100,500 variants of this bicycle?
Or if you don’t like bicycles, so as not to drive into Google the question “how to define
nanin python”? (Python is here for an example).
If we talk about “bicycles” at a higher level than a constant from any, many circumstances play a role here.
- Historical circumstances: Yandex did its analogue to Docker, as far as I understand, back in those days when Docker was not there or he went to kindergarten.
- Circumstances of legacy. The cost of moving from solution to solution can be very high.
- Editable. If necessary, you can easily make changes to your bike, but making them in someone else’s, even OpenSource, can be prohibitively expensive.
Mail.RU made a unique NoSQL database project – Tarantool. In the world there is no second database that can completely replace it. Now in Yandex I sometimes suffer with MongoDB, which “does not know how” and a tenth of what was in Tarantool. Eh.
- If Mail.RU hadn’t “cycled” in a big way, then we would not have Tarantool!
- If Yandex hadn’t “cycled” in a big way, then we would not have ClickHouse!
Yandex’s Docker counterpart may still “shoot” and displace Docker. Who knows?
I look at other internal Yandex “bikes”. Here are a lot of projects. And all this multitude is faced with the same task. For example, the task of internationalizing a project. Yandex filmed its system of automation of translator work, storage and translation work. The translator, translating the texts, does not know the nuances of the project into which he is preparing this translation. This bike allows the translator to work on many different projects. Responsible to see progress and problems … Is this superfluous?
A very cool other internal Yandex bike is its own map-reduce cluster. Could you take a standard something? Can. And at the initial stage they probably tried …
Often these “internal bikes” in Yandex are a generalization of many solutions into one approach. In Mail.RU this was not at all. Each department sawed something the same, but in its own way. And in general, was it good or bad for the company? I think that is bad.
However, when I don’t like the Yandex bike, do I know what I’m doing? I am drinking my own! I’m a programmer!
Nihilism and code quality
The next thing you have to face is the denial and nullification of all your previous experience.
ABOUT! Would you know how much I fought, yes, yes, it was fighting in Yandex for your previous experience!
Dialogue of business and development:
– Business: We need to do such automation. So that such work would be done, such a report would be built.
– I (based on experience): Here work for 2-3 months. Since no load is expected, you can go the cheapest way: make such a monolith.
– Development (based on our experience): But we will do it differently. Work here for a year or two.
– Business: We urgently need!
– Development: Urgent will not work. We will do such microservices here. A year, maybe two. We will not do a monolith. Dot.
And it seemed to me that this is all wrong. And it looks wrong. But take a closer look: why is it so? You begin to understand:
There is a head of department. He faces a business challenge. There are 15 developers. Many are as smart as the author of the article we are discussing, saying / writing this:
Sometimes the code is of such lousy quality that it causes only bewilderment: how did all these cool people write this?
And the leader looks at any of his fifteen subordinates. This one is cool. He knows: “how to.” And he speaks correctly. You can not argue with a single word.
But just one problem with him. He does not know how the whole system works .
And what is characteristic – does not want to know .
You set such a task: “take the data from here, process it like this, put it over there” – it does fine! If for half a year such tasks fell on him, then he will receive a “D” (higher than expected) for the review!
You set the task: “you can decide where to get the data from and where to put it” – you can’t decide. Because he does not really know what kind of project we are sawing.
And he doesn’t want to know .
This unwillingness to know about the whole system – this is the central problem of a large company (and not only Yandex).
I’m a programmer, why do I need to know the intricacies of accounting / hiring / taxi / food / canoes? “
But it is precisely these subtleties that often determine the architecture of a project.
– Why is there such a complicated conveyor from a round dance of tasks in line?
– Because we cannot afford transactions!
– Why can’t we afford transactions?
– Because we have 100500 users, the load is huge – you have to “cycle” (shard) the storage. And business also requires such actions to be drawn up in exactly this and no other way!
– The architecture is wrong!
– Architecture curve say? Let me throw you its development? Will you get a grade up on the next review? We are just
missing a person who would think about architecture !
–Oh, it’s necessary not only to transfer data from socket to socket, you’ll have to understand why they go from here to here. That is, in accounting / food / taxi / shmaksi to delve into. No, I don’t want to do this.
I am a programmer, not an accountant!
– Well, ok, then we go along the path so far, which is visible that will lead to the result.
So, if you return to my debate about the fast (in development) monolith vs long microservices.
– What is good about a monolith?
– You can do it quickly. Quickly change something in it. It is tested easily and simply.
– What is bad?
– The developer more or less needs to know why and why
all of its parts are needed .
And the developers distance themselves (distance themselves, Karl!) From such knowledge.
– What are good microservices?
– The fact that everyone solves a small problem. What makes a microservice you can understand just by looking at its code. You can figure it out and fix the error without even understanding why it is globally needed!
And now look at our cool 15 developers. Who do not want to know something more than a say-do job.
Which way to send them? Of course microservice: to distribute to everyone according to the completed small task – and everyone will cut it out. Then it all connects on the heap and flies. Yes, develop longer. But the requirements for personnel are much lower !
Cadres decide everything! (I.V. Stalin)
Returning to the epigraph. Profession “programmer” does not exist. A programmer is always an adjunct. If you program games, you must understand the principles of building games, design. If you program bookkeeping, become a little accountant. Taxi – taxi driver itp
Another quote that I want to comment on:
And there are a lot of projects that are built and run only on Linux. If you have a Mac, then there is at least some hope, but with Windows it does not exist at all.
I gradually came to the fact that new employees , I simply will not take , if they are in the interview say that “my desktop on the Windows “. Or on a Mac.
Why? Because I have overcome this a number of times. Spent a lot of effort on this.
- There is a written system.
- A script, a docker that allows you to run the entire written system locally: you just need to install Docker locally and that’s it. The rest is downloaded, it will start and you can work.
Can you imagine for a large system how much work has been invested only in taking a copy and deploying it in dockers locally?
And here comes the man:
– It doesn’t start on Mac.
– Let’s figure it out … Hm, it turns out port mapping docker-host on a Mac works differently than on Linux. Mac is a Unix, but something in it is different … Let’s try to redo a little more (so that all other developers do not break, but it works for you).
“ It still doesn’t work.”
– Ok, google it again. Yeah, here’s another subtlety of docker on a Mac.
– It seems to work, thanks!
He only has a Mac (the rest has Linux). And he doesn’t want to get into the bash script. “Make me work.”
Once I said in my hearts:
– Well, since it doesn’t work out, send a request to helpdesk to change Mac on Linux.
And only such an action forced a person to delve into the Docker problems on Mac on their own.
And then the second came next:
– And I have Windows, what should I do?
Yandex is developing software on Ubuntu. Internal packages are compiled for Ubuntu.
And I, historically, live in a different distribution. I solve my problems from the “friendliness” of this distribution myself. These problems are many.
But for some reason, many believe that this should be different. That management / colleagues should solve their problems. I don’t get it.
Review and Prizes
And here you fall into a vicious circle: tasks come to you from above, and you do not select them. Even if the task is crap, you will do it. Failure stigmatizes you as a person disloyal to the Company. Trying to prove something makes you toxic, which is also a stigma. Well, you understand …
I am not afraid to be toxic. I fight, argue, sometimes I speak the “mother language”. Escalate, agree, etc.
I didn’t come across shit tasks.
It happens that circumstances force you to go to the goal in a longer way than you can. When you explain that there is a shorter road, you can usually follow it.
Sometimes, in the process of interpretation, you yourself will understand all the circumstances of the case and you will understand why you decided to go this, and not the other way.
When “we break our nose,” I’m not lazy to say, “see? But I warned you!”
This quote (and in general the entire text of the article) suggests that the author is not interested in trying to change something. That he goes to work to work this work, to receive a salary and adyu.
Yes, many are related to work. This is not a unique occurrence. Many (and the author is no exception) precisely because of this and suffer.
With the approach “I do (only) what I was told and do not discuss” and you will do what they said. You will do the “shit” tasks.
What horse is lucky, such a horse is loaded!
At work, we spend half our lives. At home, the other half.
When at home we are not satisfied with wallpaper, a bed, plumbing, we make repairs. Improving our life at home.
When something doesn’t suit us at work – why not behave the same way?
- Bad code? – suggest how to improve. Sit down for half an hour for a prototype. Half an hour? Half an hour a day was allocated for a week.
- Do you feel bad on Windows / Mac? – Switch to Linux or finish infra for Windows / Mac. Itself.
- Bike? – Understand: why is it so? Maybe there is reason for this?
- Are you afraid of looking toxic? – stop! He who knows how to send in three letters is often appreciated by his superiors!
Active life position at work:
- and make the work more interesting
- and will allow you to earn more (somehow it will form itself, believe me)
I’m sure that the author’s (will) have about the same problems at Yandex’s new job. Just deployed from a different angle.
As the saying goes: the same … only the view from the other side.