Why do newbies from time to time do the wrong thing? Why don't they understand senior engineers? Does this always happen due to lack of experience? And why, from time to time, during conversations in the kitchen, do the same newcomers call their leads “m * dacies”?
I apologize in advance for the Anglicisms found in the article, but it seems to me that without them, some sentences would look rather tongue-tied.
Let's start from afar. When I was still in school, I had a hobby - games. Namely Warcrtaft III. And I constantly played, played, played it. At first, it was limited to bots games, then, in the beautiful 2003, we got the Internet and rushed games with real people.
I lost my first game - from nerves and the thought that I could lose, my hands were shaking and my fingertips were cold, and somewhere in the middle of the game a cold sweat came out on my back. It's clear that with this attitude I lost the first game. I lost once, then another, and then a third. This went on for quite a while, until one of my friends advised me to start watching the recordings of the games of other professional players.
')
I had the sense to obey him and start observing the professionals. After viewing the records, for the first few weeks I tried to repeat the strategies they used for the game. Over and over again, I began to win, but these victories were somehow very hard, forced, and after three or four games I felt a complete exhaustion of the body. At that moment, the thought began to creep into my head that I was doing something wrong.
After another couple of months, a couple of hundreds of games and a couple of hundreds of watched records, while watching the next replay of the game, I finally had an idea in my head that should have appeared right away: the
professional players were not nervous .
They knew what to do at each subsequent point in time, they knew how to react to each movement of the enemy. They could stray from the rhythm, something could go wrong, they planned, something they could not do quite right - but one thing remained unchanged:
they were not nervous . Their bodies worked as a well-tuned and tuned machine. And at this moment the second obvious thought shot in my head:
Nerves add mistakes .
These obvious and well-known truths at that moment became a revelation for me. Yes, I have repeatedly heard these thoughts from other people, but I did not attach much importance to them (they say they say and say, I have my own life) until I felt the consequences of my own experience. At that moment I decided not to be nervous anymore and not to rush. I really did not really work, but I diligently tried. Victory figures for the same strategy of the game went up markedly. Instead of three games, I was able to play up to ten matches a day.
Returning directly to the article and newcomers, young professionals. Two basic rules that almost none of them comply with:
1. Do not rush
2. Do not be nervous
Regarding the first point, we again digress a little and I will tell a parable story about a conversation with Lid even when I was just starting my career.
Again I will start from afar, but then I will return to the essence of the story, I promise.
Garry Kasparov, the world chess champion, was once asked how many moves ahead he thinks in a game when planning the next move. The questioners thought that he would give some impressive figure, and then they would understand what makes him the winner. But what was said to them showed people that they misunderstand even the essence of the game: “The main thing in chess is not how many moves ahead you think, but how well you analyze the current situation.”
The essence of this method is that, without knowing the whole situation objectively, people begin to calculate options that are initially erroneous. And since it is not possible to calculate everything, the turn to the correct moves never reaches. As a result, we choose the best option from the worst. The best of those that we tried so carefully to consider.
By applying the same strategy to life, one can understand how often we, instead of objectively assessing what is happening, try to calculate the moves in advance, and how often later these moves turn out to be directed not forward, but somewhere to the side.
To clearly understand the real situation is to make the options open themselves. He who says that he does not know what to do next, just does not know what is happening to him now.
Returning to the conversation with the lead: when I first came to him for advice, I was very surprised by one thing: he asked another question about my task question, then stopped for about three minutes, then clarified something else. I then thought: “what does he do when we start the task, the answer is somewhere nearby.” After a pause, he began to ask questions about which I simply did not think, because I
did not know what I really needed to do. And only then, when he knew everything that interested him, he gave me the answer. As a result of this, as it seemed to me “inhibitory behavior” at the beginning, the problem was solved in half an hour
correctly .
Once a couple of weeks, I continued to approach him and ask similar questions - and his behavior remained the same:
completely find out the initial conditions, ask additional questions and only then begin to think.
At some point in our collaboration, I asked him the same thing that was once asked to Kasparov. To which he replied that he did not think ahead, until he fully understood the current situation. There was not even a thought in his head to move forward until it was clear that he was surrounded. At that moment, another brilliant thought shot through my head
: yes, he is right!Since then, my list of professionals has expanded with the third item:
before you begin to act, find out what surrounds you .
In other words, when receiving the first knowledge of the task, a kind of "porridge" is formed in the head. The goal is to get rid of this porridge and turn it into a strictly structured model when everything is in its place. How to do this is the topic of a separate article.
That is, in other words, to write good code, and indeed to do any business in good faith, you must follow three rules:
1. Do not be nervous
2. Not in a hurry
3. Find out what surrounds you
What is still lacking for all newcomers is the ability to formulate thoughts correctly. In particular, ask the right questions. How often have you come across the fact that a newbie comes up to you and asks: “how to add animation for tobacco policy?”. You look at him and understand that all of his question you know only the word "animation". Of course, the example is exaggerated, but I think you understand what is at stake.
In the head of all beginners there is a thought that you all know. It is necessary to dispel this myth as soon as possible, otherwise fuzzy, poorly worded questions will continue.
Now consider the problem faced by the old-timers of the project: some of the old people for some reason do not want to understand or do not understand what is happening in the minds of young developers. They do not teach to ask questions, they do not explain simple, in their opinion, things. They do not tell how to think and how to build chains of thought.
This is their fatal mistake - a person needs to explain exactly how to do, what exactly to do and why. It seems to some that the newcomer will reach everything himself, in the process. But reality is not always as good as it seems to them.
Faced with a problem, people start to get hung up, spend time deciding what could be said or asked. They ask the wrong questions because they
do not know how to formulate their thoughts correctly. They do the wrong things because they don’t know what they want to achieve.
And the main problem - they interpret the slightest ambiguous indication of the lead in their own way!
In order not to be unfounded, I will give an example, which took away our extra ten working days of development. Lead sent a letter to the middle-engineer with a description of the task (real text of the card):
1. User login with read access to Invoice view
2. Admin remove access for user to Invoice view
3. User refresh page with Invoice view
4. User still has access to Invoice view
5. User relogin to the system
6. User has no access to Invoice view
What does a man like a diligent middle engineer? He begins to understand why this happens, he writes clarifying letters to the customer, finds out the details of which systems may be affected if he corrects the behavior in the system where this bug is reproduced. Then all this is discussed, the implementation details are agreed with the seniors. It all takes 5 days. Another 5 days to implement and test.
A week goes by, from the product of the ovner comes an angry letter with an approximate content: “what have you done, everyone on the carpet”. We begin to understand, and after several calls and letters, it turns out that the functionality that the developer rules, was in fact correct! And the tester who created the card, with the description of the task, simply meant “to clarify whether the application is working correctly or is it a bug!”.
For some reason, each person believes that his own thoughts, so simple and understandable, will somehow magically appear in the minds of others. That all “unnecessary and unnecessary words” can be omitted, because these are self-evident truths. And people begin to reduce their proposals, cease to fully introduce the artist to the course of the matter, something remains unsaid "because it goes without saying."
BUT!
BUT it
never works. You always have to show and tell, and not dismiss the problem. To step over the idea “yes, all right, they will understand everything there, not stupid” and write everything point by point, every word that you mean.
And from here a very simple and very important conclusion:
never admit ambiguity when formulating a task .
Summing up, I repeat: if you need to “lead” newbies, tell them from the first days and explain to them that in order to further develop their career as a software engineer, they are highly recommended to learn how to follow four rules:
1. Do not be nervous
2. Do not rush
3. Find out what surrounds you
4. Avoid ambiguous formulations of your thoughts.