As a developer, I never know my own worth, because there is none. But the whole system is built as if it is







Every time before the social security interview, I say to myself: “Calmly, you do not need to invent, finish up and lie, your knowledge and experience are enough to work with them. You will strengthen any team, you have something to offer, and gaps in your knowledge - "If they knew everything you knew about your skills, they would definitely take you." But when the interview begins, I always stop believing in it. All the two hours of the interview, I walk like a minefield, so that God forbid not to burn, that I do not know something.







For a long time I thought that someday I would know everything I needed. I came to interview for the position of the middle, and I myself thought that I did not hold out. They have so much to demand, I don’t know all these things at a good level. They took me, but the interview itself only confirmed my thoughts. The guys on the back of Skype are very cool people. I don’t know how, but during an hour’s conversation they manage to put deep into my head the thought that their skills are unattainable. Then the mirage disappears, I start working with them, and I understand that we are equally stupid. Now they don’t know “elementary” things, now I’m explaining something to them. Now I usually talk to Signora. Everything is the same here, but exaggerated to such an extent that it looks like someone else’s joke.







When you are preparing for a social security interview at a high level, you don’t even tell yourself that you don’t need to lie. Just as needed. They would not hire you if they knew everything about you for sure, because they themselves had not yet admitted that they didn’t know. You accept the rules of a stupid game, and show off on the social security in response to their show off, they lie about their coolness - and you're lying even cooler. Then you know what will happen. They are dumb too, like you.







Obviously, something is wrong here. It seems that we cannot accept the idea that skill is a relative thing, it cannot be counted and measured. And since development skills are our main weapon and achievement in the world, it all depends on them, we all pretended that this ephemeral thing is absolutely real. And watch it carefully.







In an ideal world, we could have a mechanism, a perfect test, that will evaluate your skill on a scale of one to a thousand. And companies that filter candidates according to these estimates, recruit suitable ones, pay exactly according to their skills. This doesn’t work in our govnomir. Any moron trying to introduce a skill rating system only complicates our lives. You worked somewhere, studied something, made a couple of cool pieces. There comes a time when you need to look for work. You open vacancies, and you understand that in general you have no idea who you are. You try different levels - somewhere it turns out, somewhere not, and this has nothing to do with the proposed RFP and the formal requirements for the vacancy. You begin to think: "Well, okay, if I was taken to the middle in three places, then I'm now middle." Then the june comes to your team, which fumbles better. And then the signor who fumbles less. You begin to get confused, but the fact is that the concept of "fumbles for better or worse" is too complicated. At one of the first works, we had a forty-year-old signor who came to sharps from the pros. I was absolutely convinced that he was a complete bottom compared to me. Now I understand that for another ten years I will not know and half of what he knew then. I didn’t know anything about algorithms, databases, data structures ... I just read a book on the latest sisharp, a perfect code and a brochure with design patterns. This allowed me to look down on the whole team, regularly explaining to them how to write code.







I think the problem is not only in me. If you communicate with developers, you are looking for a job, or you write something on a geek magazine - everything around them only does that, measured by skill. I somehow wrote an article that is not at all related to how good I am as a developer. What do you think? There were a dozen comments in the style of "Yes, this moron is not a signor, what the hell is he writing !?". The community itself is, but the worst part is that it carries over to the job search. I once had a chance to work in a team where a leader chopped people up in a technical interview if their expected CV was higher in his resume than his. And then he was indignant, like, what the fuck is this chmoshnik asking for 3 pieces, and doesn’t know the “most elementary” thing that I know? This is not ordinary envy, this is exactly the story of skill. The idea that lies in our heads is that there is an exact metric of skill; the GP should be tied to it. There is just no metric, so for most of us this metric works like this: "Hmm, how much is this person - I?"







I myself am no longer called to conduct interviews, I will applument everyone indiscriminately. I don’t understand if a person has been working as a developer for three years, what the hell can problems be with him, technically? Will slow down the team? Teach. Will ask thousands of questions - we will answer. Will write crappy code? Review







Such rhetoric is shit. You always understand her like this: "And then let everyone be the Signora, let everyone pay what they ask." This will lead to the fact that bad developers will ask for a lot of money and make important projects, but good ones will not. It will be very unfair, and injustice is always bad. And the fact that life and the market are inherently unfair does not mean that we should not do anything about it. Den Abramov once wrote a post in which he admits that he doesn’t know a lot of things that, in a good way, he should know, and in the end he writes something like “This does not mean that now we must depreciate our experience , you just have to be very understanding about knowledge gaps. " Den is right, but this simple recommendation is too hard to follow.







The developer's skill is formed from a large number of things: your knowledge of YaPs, platforms, experience, the rake that you assembled, the systems that you built. Ability to design, understanding of various patterns and mechanisms in modern and not very development, the principles on which everything is built. The way you work with tasks, how you decompose and understand them. Your gift of foresight, and the ability to combine it with pragmatism. Your ability to anticipate the emergence of new bugs and tasks.







Most of these pieces are very difficult to evaluate. There are more or less clear skills, I can figure out how well I know C #. I won’t give a number from zero to one hundred, it seems to me that it’s above average - there are no features in YaP that I don’t know about, I am well acquainted with all the common practices of writing C # code. But even if I imagine that I’m right here, the knowledge of C # in isolation from other skills is just a bunch of garbage. Understanding the .net platform will not work out.







Experience is easy to count. If people need a donor with five years of experience, they just find a dude who worked as a donor for five years. But there are also problems here - the quality and portability of this experience are very controversial things. Nobody wants to listen to me when I try to get a Xamarin developer, because I worked with Xamarin for too long. I invited them to interview me as a Xamarin developer, I specially spent a month studying it before the interview. This, and the fact that I am doing almost the same thing on WPF, and in general have been working with C # and .net for 7 years, does not mean anything to them. I believe that they are mistaken, but I can’t prove anything, my potential in working with Xamarin is an immeasurable thing. Experience, since it can be calculated in years, is too often misleading. So they hire fools to positions where you need to think, because they have already worked in such positions. The irony is that the only countable metric is the most deceitful.







With the systems you built is a similar problem. You do not make them alone, their quality is not so much connected with your quality. Understanding patterns is difficult to calculate. I have special stories for conversations about how I used different patterns. There is also no connection with the skill.







Pragmatism, the gift of foresight, and the ability to anticipate bugs are things that cannot be counted. It’s impossible to estimate these skills even roughly. I somehow had to do a test task, in the job description there was a special emphasis on understanding SOLID, code scalability, etc. Well, I entrusted them with something like a helword on all design patterns. I was gladly taken, it was my only job (I ran away after the test), where I was of absolutely no use. There was not a single pattern in their code. And they did not observe solid for a second. I did not understand how they work, and not a second of my life was a person who could work on their project.







At interviews, such skills are tested by listening to your success stories. It will not say anything about you as a developer - only about your ability to tell stories. It is so important for us to determine the skill that we are ready to take any thing indirectly connected with it, make it a standard, and pretend as if it works.







Accuracy is needed, but it is not. The development is connected with mathematics, but it cannot be called an exact science. This is similar to my debate with Drugan - he rubs all the time to me that there is better music in the world than Nirvana, and I think that he is simply ridiculous with this "opinion" of him. Well, here we sit, and argue for two hours. Yes, I’m certainly right at 900%, but it’s impossible to prove it. Sometimes your abilities are tested using abstract tasks that you must solve. A good way, but they actually check how your decision matches their decision. There is a chance to run into an inadequate person who will check out a different approach. But the way you solved one problem does not say much about how you generally solve problems. After all, the types of tasks in development are infinity. You will have to do a lot of very different things, and when people have a task to evaluate how you will do this, they, realizing the unreality of this, come up with crutches that will say at least something. So what if these crutches do not work - no one will notice. That's just a man can be unlucky with the task, and he will be sent home in disgrace.







When I look for work, all my life depends on how good I am. Salary, quality and value of the project I'm working on, my well-being and self-esteem. For me, it’s not a problem to learn something - to know what, and to know at what point you can consider yourself to have studied. If they tell me that there is an ideal mechanism for determining the skill from one to ten, and I have to guess my own - otherwise they will shoot me - I have no idea what to answer. Probably about two. Yes, do you remember that I get a job as a signora? If they ask me to guess the middle skill of the Signor, I will also choose a deuce or a triple. Out of ten. But when you are looking for work, you are asked to choose on a scale of up to three, where all that is less than three is poverty and aimless labor.







I don’t know if it’s normal to get a job as a tough guy when you are a sucker? It annoys me a lot when others do it. I seem to despise these people. Worthless waiters who want to take a job from real engineers who love their job. I myself do not relate to them, because I know for sure that I love the development. And I often tell myself that I want a higher position to have access to cooler projects, manage processes and the like. Yes, I don’t believe myself. To justify myself, I try to learn more. But of course I’m not going to ask for less money.













Money perfectly illustrates the problem. We lack the jun-middle-signor gradation to understand who is better. Here the loot comes into play. The more ZP - the cooler the developer. The numbers in the offer are primarily important to me because they speak more about me than I know about myself. Moreover, they say not only to me. When they ask me what the hell I ask for so much - I say that I received the same amount at my previous job, the questions disappear. That is, if I agree to work on an interesting project for a pittance, I will immediately begin to be quoted lower than now. My good friend receives space money, and recently he decided to secretly get a second job. And he explained this by the fact that he needed stability. A guarantee that he will always be hired for a large salary. And this is easiest to achieve if you are truly rich.







The problem of haggling on social security is the most terrible symptom of an incorrect assessment of the skills of developers. Everything is mixed in a heap, the amount that you will be offered depends on how good you are, how much they like you, what gender you have, what budget they have. How much they need you right now, how well you bargain and know your price. How lucky you were with questions in a technical interview, how much did you get before. The RFP of a person who decides how much they will pay you is especially good. But when you see the final offer, you don’t think about it. You think that here it is - the figure into which your skill was converted at the market rate. All this is exacerbated by the position of the market and the world, that we, in general, are fucked up with our requests. And okay, I have two children, I send to hell with everyone who says that I will get too much. But not everyone can do that.







Interestingly, despite all the problems, there are enough cases when you come to settle down, tell them about your experience, they say that everything is cool, they have similar tasks, and then you do very well at their work. I believe all such cases are, firstly, luck, and secondly, injustice. Indeed, instead of you, they could take a dude who does not know how to talk so abruptly about their experience, and in general is more used to solving problems, but he will cope much better with their project. There is still such a problem - they may not really take you, simply because they did not like you. And they really have the right to it, because no one is obliged to work with people who they do not like. The very efficiency of the system is largely due to the fact that even if everyone starts to upgrade all the applicants in general, no one will die. Because developers have average norms.







The system works, but questions remain. How much money should be indicated in the resume? Is it possible to get on someone else's stack without losing ground? Why do my dumb acquaintances get more than me and my smart acquaintances get less? Why the famous cool developers do not rummage in what I rummage? If I myself think that I'm stupid - can I lie, what not? But after all, the day after tomorrow I will definitely begin to think that I am a super genius, why should I quit then? If I am often not taken for soft skills, do I have to pretend that I am a sweet, friendly person? If I already work as a signor with a huge salary, then you can’t go for less? Or does it mean I have to go and honestly admit that I'm not worth it? Why wasn’t they calling me to talk, until I added git to key skills? Why are outstaffs industrially selling trainees, like Signor, and the world does not collapse from this?







At different times, these questions tormented me and my friends. This is probably part of our work, but I think something needs to be done with this. I know for sure that there are better and worse developers. There are more and less experienced, there are smart and stupid. When you are looking for a person to join your team, there is a good chance that you will hire someone who will create more problems than solve. And there is a chance to hire a man who will come and dramatically improve everything. And it’s obvious to me that compensation should depend on how useful a person is. If only because people should be motivated to learn, think and become better - there are too many processes in the world connected with IT, all people on earth are interested in the fact that the average level of developers is steadily increasing.







There is such an idea - the employer can hire anyone he wants, and as he wants. I think not. If you hire a hundred fools, pay them three times the market, say that they are super-minors - you can assume that you do not care the whole industry. These guys will someday leave you, hang noodles on the ears of other employers, and then engineers will then for years clean up the crap behind them in the code. If you take a very talented person to a stupid project, and push for beggarly compensation for him - consider that you destroyed a good developer. Most likely he will continue to work with assholes like you throughout his career. Broken hiring sets a precedent, and increases the number of broken hiring. For all of us.







The problem is from two sides - for employers and for applicants. It's easier with tenants: I often read people from the industry who are seriously working on their hiring processes. Yes, they are thrown from one extreme to the other, they are developing different methods of social security, types of test tasks. They teach their eychars in detail to sort the resume. All this usually works a little better than those who do not steam at all, and hires people according to the same idiotic scheme. And here is the solution - if you constantly work on hiring, if all the people who do this in the industry think and improve this process - it will become noticeably better.







For people who are looking for work, everything is much more complicated. Dog-talk is a game, and you can very well learn to play this game. But I don’t know how to evaluate your skill yourself, how to understand how good you are, what you have to work on and how much to get. I met people who do not have such problems. The dude lives for himself, knows for sure that he is the front-end middle, knows for sure that he stands X in the city of Y, and knows no doubt and fear. I don’t understand how they do it. I’ve been trying to understand who I am all my career. Phrases about the "real" developers who are required to know how to understand or understand the next crap, I always took them seriously. But in seven years, I have not come close to matching most of these statements. At the same time, I myself generated this nonsense. He also told his colleagues that way, like, if you didn’t bother to understand solid, you don’t have the right to write code at all. Apparently, flatulence and FAQ are attached to your first IDE. I saw all sorts of tables that describe what such and such a programmer should know - and checked myself against them. This does not work. There, for example, it can be said that the signor should have a good understanding of how his code works. And how to evaluate it? The more you try to make certain, the less you understand. Subconsciously, I always use this approach: I take some kind of developer who is exactly normal, and compare myself with him. This method is the most stupid, because you have no idea what is going on in the head of another person, and why he makes these or those decisions. An even more stupid way I use is publicity. You write articles, or speak at a conf - means you are in order.







You can say a lot that all sorts of formal and informal tests pose more problems than they solve, but I still need a method. Ultimately, I came to the point that I need to have a rating system that I could believe in, it is not necessary that it be objective. So I developed another stupid formal test. I took all the qualities that I personally think are important, and I rated each of them on a poor / good / excellent scale. You take the average of the result, and see who you are. It’s super subjective, but if I believe in myself that for example the quality of the code is good for me, then I won’t be afraid at the interviews that I write good code - in short, this is an assessment that will allow me not to feel like a liar. This is another self-deception, unlike others in that it is a way that I myself trust. Here, as it seems to me, is the answer - any self-doubting developer can come up with his own approach and believe in it.








All Articles