In fact, there are two important characteristics. First, this is how aesthetically correct the programmer does: how beautiful his code is, we perceive it by others. And the second thing that may conflict with the first one, but at the same time it is very important, this is how much he knows how with his actions, with his code, to achieve results by some metrics. For example, search quality.
It seems to me that the most correct way is when your colleagues evaluate you. This is how to evaluate, a good page on the Internet or a bad one. If people come to it, then it is good, if not - bad. What is called page rank. Also, people can rate each other. If most people around you think that you are a good programmer, then you are a good programmer. If it does not, then it is not.
And how to evaluate the work of the artist? In a sense, these are very similar questions. There are two steps - an aspiring artist and a professional artist. How to evaluate a beginner is understandable. It is much harder to rank among professional artists. Some tastes begin already, the criteria may become poorly verbalized. But nevertheless, then, unexpectedly, it turns out that really top artists all seem to be approximately the same. Even if in blind tests to show pictures of a great artist and pictures of his students, then people will more often choose master paintings. It seems to me that it is also difficult to verbalize with programmers, but nevertheless the internal hierarchy is always built.
The work of any person must be evaluated by results. If a person has solved the task assigned to him, he is well done, if he has not decided it is not well done. But there are different tasks. There are those in which you can do everything somehow - if only it worked. Then no one cares how crooked and how it is done. And there are projects that live for a very long time - years. And there it is very important that after a person there remains a quality code so that he can transfer it to another.
This is a very interesting question, because a programmer is, on the one hand, seemingly a profession of intellectual work, and on the other, in some places it has become a craft. There are programming elements that are scaled, where knowledge is rather easily transferred from one programmer to another. And you need to evaluate here in different ways. Where programming has become a craft, where it has become more or less understandable by an automated process, concepts can be introduced, as in physical work — standards, output. Classics of the genre - the creation of corporate sites that are more or less the same create hundreds. And in the intellectual part it is necessary to assess the complexity of the task. Most likely, this can be done by talking with the programmer himself, with his colleagues, with those who understand the essence of the work. And the decision to evaluate in this case is quite complicated, based on common sense. It cannot be taken mechanically. And we, fortunately, have a lot of this more intellectual type of work, which is why the work in Yandex is interesting.
This is a difficult question, and I think no one knows the answer to it. But the best we have come up with is to ask those who work a lot with a person. Usually people around who read his code, communicate with him, watch how he works, are pretty good at knowing who is good and who is bad. In the review system that we are creating now, the emphasis is largely on polling such people. And to objectively evaluate, of course, there are many methods and attempts, but I do not know how to do this in reality for sure.
Evaluate the work of any employee need to result. According to the result, both in business and, if his work directly does not affect the business, in the creation of tools, infrastructure, internal things, including relations with colleagues. This is a whole complex. Programmers in this sense are no different from all the others. The only, probably, difference is that in our company, in many IT companies, they are those who create the product. Therefore, their work can be judged by how good the product is, how successful it is - and so much their work is good. Of course, they are not the only ones who share this responsibility. There are those who decide what to do in the product. They are responsible for how. A good programmer, of course, wonders why he does this and refuses tasks that are set simply from the ceiling..
Each level has its own requirements. If the programmer is an intern, then he should be assessed mainly on how his eyes are burning, how much he wants to learn it all, how he can force himself not to be bored, to find those tasks that will be of interest to him. When a person is already starting to grow, it’s more important, of course, how much his return is, how much he does the tasks quickly, how well the decisions are of high quality and they don’t have to be redone later. If we go even higher and talk about the architect, then, naturally, his work needs to be assessed not because of how quickly he composed something, but according to how many changes in this architecture had to be made in a year, and how far she looked into the future .
There are several factors. The simple answer is, of course, to evaluate the result. The person spent so much time, decided or did not solve the problem. But this is only one side. The code he wrote needs to be maintained. It is necessary to maintain certain standards, he passed a review, to have uniform rules on how the development is being conducted, to have colleagues check each other and evaluate the code from the point of view of how it is suitable for long-term work on the project.
Complex issue. It seems to me, by the result. In fact, every programmer has some task. And there are such programmers whose task is to conduct an interesting experiment. And then no assessment, except to study its result, you will not do. And there are programmers whose task is to create a product. And then you can look at how it functions correctly.
But it seems to me that it is right to talk about how badly to evaluate the work of a programmer. It seems to me that when evaluating the work of a programmer, it is absolutely wrong to roll into details. For example, to say that the programmer did everything well, but testers did not follow. Or the programmer did everything well, and the system administrators did not do the right thing. This manner of blaming everything on those around me is terribly annoying. It seems to me that at each point, on the contrary, you should try to take everything under your own control as tightly as possible, because it is better to check three times than not to check one. And in this situation, it seems to me that it is obvious to evaluate the work of a programmer by the quality of the product he deals with. Even if he makes a small gear in this watch, it is necessary to evaluate it by how accurately this watch works.
Source: https://habr.com/ru/post/254635/
All Articles