Among the developers there are those who want to not only write beautiful code, but also create effective practices that simplify teamwork. Having received the treasured timlid laurels, plunged into a maelstrom of constant communications, solving everyday problems and, oh my God, having lost the opportunity to write the same beautiful code, some are depressed. And our AppsCast guest Sergei Boishtyan took a different path and, having tasted the realities of the life of the team leader, returned to the ranks of engineers. Why timlidism is not for everyone and why growth is not always a new “little thing” on the sleeve, in dialogue with Sergey.
Alexey Kudryavtsev: Hello everyone. Sergey, tell me a few words about yourself?
Sergey Boishtyan: At the moment, I am a senior developer, I was a lead, technical expert and just a developer. I work in Avito, before that in Tinkoff.
')
Daniil Popov: Let’s first clarify who the developer is, what kind of responsibility he has and what he does at work.
About the developer role
Sergey Boishtyan: Developer is primarily a role, not a specific position. There are many people in IT who can simultaneously develop and perform other functions.
At the beginning of the journey, the specialist focuses on development, and then builds up responsibility: goes to meetings with testers, designers, makes architectural decisions.
Developer - a role in which an engineer helps to implement product features.
This is either a product for the end user, or directly for developers. For example, for the past year and a half, I have been making products for developers within the company.
Daniil Popov: What is the developer responsible for?
Sergey Boishtyan: CI / CD practices are gaining popularity and it is the responsibility of the developer to take the feature, implement it yourself, use automation tools to test it, or be in touch with the person who is testing it and control its release.
Daniil Popov: In short: bring the task in Jira from ToDo to Closed through all 500 statuses.
Sergey Boishtyan: If you go from the opposite, then the developers are not those engineers who do not care about their feature. Such people submit a pull request, but they are not interested in releasing features, they do not want to modify the code, remove conflicts.
About the importance of the team
Daniil Popov: The task of the developer is to ensure that users enjoy the quality and efficiency of the code. Then what is a team, what tasks does it solve? Do you distinguish between types of teams?
Sergey Boishtyan: You can consider teams where people differ in their functional responsibilities, and teams in which people differ in their level of responsibility.
I am a fan of universal teams, where everyone has a certain expertise, but knows how to do everything, and bottlenecks are automated. In such teams, people are equal, constantly communicate and jointly make decisions.
There are teams where each has its own responsibility block. In them, the developer first writes the code, and secondly, if necessary, supports the tester, who is responsible for the quality of the product.
Alexei Kudryavtsev: I heard that this is not Agile.
Sergey Boishtyan: In principle, this may be a normal history that has developed historically. But personally, I like it when there are people in the team with similar responsibilities and responsibility is mixed depending on the particular sprint. Now our team has more than ten services in development, each one needs its own expertise and knowledge. In one sprint, you do one thing, in another another, and in any case you have to communicate, as there is continuous sharing of knowledge and development. When you are just a developer, tester or designer, you dig deep in one direction only.
Daniil Popov: Personally, I don’t like the concept of “common code - common responsibility”. It seems that this practice leads to the fact that no one is responsible. How do you think?
Sergey Boishtyan: Recently I came across a phrase in the book: “If there are more than one responsible team or they are not at all, then nothing will happen, since no one wants to take responsibility.”
I like the approach when everything is in common, but you have a clear focus for a week or a month.
When we plan a sprint, each person is responsible for his part, develops it, realizing that he should do it. Of course, with a frequent change of responsibility, a lot of time can be spent on switching contexts. At the same time, there is always an OUNER of a certain functionality that manages the backlog. How long this responsibility will lie on it depends on the product.
Alexei Kudryavtsev: I believe that sharing responsibility does not work. If someone comes with the initiative in the search for those who want to get down to business, he will not find them, since everyone will think that someone else will do this.
Sergey Boishtyan: To finally bury the common responsibility, I will give an example from life. Usually there is a pull request that “touches” some kind of module. If this module has no responsibility, then all reviewers, thinking that the other will leave a more useful comment, will look briefly inside. As a result, the code turns into a hash. And the answers to the questions “why is it like this” appear: “I did it, nobody answered me anything, I decided that it was effective”, and then it evolves into the phrase “so historically, don’t touch it”.
About the basic duties of a team leader
Daniil Popov: We are gradually approaching the concept of “lead” as a person who concentrates this responsibility within himself. What are the responsibilities of such a person?
Sergey Boishtyan: Lead is also a role. His responsibilities vary depending on which team he is on. If we are talking about a team where everyone is equal, then the lead guides the team members, as it is often difficult for them to come to a consensus. Then the main task of the lead is to bring any dispute to a productive end, when a question arises, close it as quickly and efficiently as possible. Lead helps others express their opinions and remains impartial given that they also have expertise. From the outside it may seem that scrum-masters can play this role. In my understanding, the scrum-master is generally on the side and can facilitate meetings, but I want this role to remain with the team leader.
If the functions in the team are clearly separated, the team lead also becomes a person who owns the process. At every stage he understands who does what and what is responsible.
They often told me that team lead is a kind of umbrella between a business and a team, because everyone knows only their block, but I want to have a person who knows about the current state of the product.
Alexei Kudryavtsev: I get the impression that the lead does everything. You are an architect, a scrum-master, and you have to find people and be able to facilitate them. This is a huge collection. This is not one role, but several. Where is the truth here?
Daniil Popov: The most important thing is that you do not program at the same time.
Alexei Kudryavtsev: Well, you're trying.
Daniil Popov: The key word is "trying." I wrote three lines, they distracted you and that’s it.
Sergey Boishtyan: Lead is a person who plugs holes in a team. Each team, regardless of the format, has problems, and the responsibility for them needs to be shifted to someone.
Alexei Kudryavtsev: It seems to me that the lead works with people and their motivation, but there is a separate architect who is responsible for the code.
Daniil Popov: I distinguish between the concepts "team lead" and "technical team". Tehlid is the person who is responsible for the technical side of the product: which libraries, patterns to use, which infrastructure to apply. Timlid is about people management. These roles do not overlap. You can try to combine these roles, but it is very difficult to follow the architecture and 1: 1 in parallel.
Timlid is the team leader who leads the team to a brighter future for the user.
Sergey Boishtyan : Let's return to the definition of “team”, where a lot of people do one thing. In order to do something efficiently and remain a team, you need a team lead that sculpts a single whole from disparate engineers, makes it possible to realize the potential of everyone, to make the product better.
Daniil Popov: If there were a timlid in a fable about a swan, a crayfish and a pike, they would have dragged them to the right place.
Where do the Timlids come from
Daniil Popov: It is interesting to understand how they become team leaders. I threw four ways. First: team leader appoint the best developer. Second: appoint the most experienced. Third: appoint for other merits, but did not come up for what. Well, the fourth option, when the developer himself goes to the lead. Which of these options do you think are viable?
Sergey Boishtyan: I'll start with my experience. At some point, I wanted to have more responsibility and influence what was happening. I often offered something and finally realized that you can not offer, but immediately do, be on the other hand. They told me that I thought about it in time, as the project started and they gave me a chance to try myself as a team leader. There was a hypothesis that I, as a responsible developer, would be a good team lead.
Of your options, you can leave two: when the initiative comes from you and when it comes from the outside. In my case, she came from me, but I saw the opposite situation in the neighboring teams. They took an experienced developer from the team, arguing that he already knows the culture, knows how to communicate. No one refused, as they offered to those who understood that if not he, then no one else.
Daniil Popov: I have the opposite experience. My team lead was gone and they made me team lead. It is believed that an experienced developer will become a good team lead, but this is fundamentally wrong assumption. I recently read the idea that by making the best developer a team lead, you lose the best developer and get a bad manager. I agree?
Sergey Boishtyan: It sounds like the truth. I haven’t met so many good team leaders. As people, I liked them all, but often I was not happy with how they played their part. It seemed to me that I can do better. Now that I know that I can’t, I have formed clear criteria for a good lead.
If you can listen to people, know how to be open-minded and know how to convey the thoughts of other people, then this is already halfway. The rest comes with practice. Due to constant stress, you learn time management, prioritize tasks.
If a person knows how to communicate, highlight focus and has good technical skills, then I will definitely advise him to try himself in the role of team lead.
Growth issues
Daniil Popov: And where to move further timlidu? Head of mobile, CEO, CTO?
Sergey Boishtyan: Why move somewhere?
Daniil Popov: There is an opinion in our post-Soviet space that we must always grow somewhere. If you do not grow, then life has lived in vain. And you can grow only with increasing position, with getting a new string. I also thought so before, and then I realized that this is an optional path. What does growth mean to you?
Sergey Boishtyan: Once I read about the classification of spheres of influence of a person, where growth meant an increase in one of the spheres of influence - professional, financial, social, family and health. Six months ago, I learned about the
Schwartz Value Questionnaire . Then I could not understand whether I want to be a leader or not. I looked for questionnaires and tests, trying to realize which of the areas is important to me. Whether I want to be a well-known developer or a big salary, or I want a work-life balance, and it does not matter to me what level I am at.
According to the Schwartz questionnaire, it turned out that it was important for me to be a professional, to have recognition and a family. I realized that I enjoy working on a technically challenging task, making a presentation or recording in a podcast, but if you need to choose whether to spend time preparing for a speech or doing a task at work, I will choose the latter.
It is important to understand that these values ​​are dynamic. It doesn’t happen that you want to be a cool professional all your life. At some point, you will reach the point, again take the survey and it turns out that now your priority is family.
To grow and develop you need to be happy.
It's just that people often grow and develop in the wrong direction, because they do not realize what is really important to them.
Alexei Kudryavtsev: It turns out that the most important thing is to understand where you are growing.
On the pros and cons of timlidism
Daniil Popov: Let's figure out what you liked in your role and what not.
Sergey Boishtyan: First, I’ll explain a little more why I wanted to become a leader. When I came to development, I was blissed out by what I got. Then I got into the team and problems started on pull requests due to misunderstandings and discommunication. A rational conversation did not work out, but inside there was a desire to do everything efficiently. In such situations, I called for help, but he was not enough for everyone.
Thoughts began to come to my mind that the team should have generally accepted principles, practices created by either the team or the leader. I thought that for the role of team leader I’ll come up with practices that everyone will like, everyone will quickly agree, will cease to conflict. With such a thought in my head, I started reading books on negotiations, I came across
Schopenhauer . There was a good idea that people are not able to hear arguments and must independently come to conclusions. By imposing your opinion, you only cause a desire to defend yourself.
So I learned to ask questions, first of all to myself. I decided that one of the fun tasks of the lead is to help people answer questions that they don’t ask themselves. I was sure that, having become a leader, I will continue to write code, I will only create practices, and everything will be fine.
Alexei Kudryavtsev: I understand that you wanted to write code, but as you want.
Sergey Boishtyan: I wanted to write code quickly.
Daniil Popov: It seems to me that this is a normal motivation and leadership position, if you offer something, and people agree with you. You managed to convey your thoughts to the public, she accepted you, put you on an armored car, and now you are ready to move people forward.
Sergey Boishtyan: What problems have I encountered? I was lucky that I did not have to displace anyone or fight. I just came as a leader in a new project, recruited people into the team, they accepted my principles, but at some point people who didn’t quite agree with me appeared on the team.
Daniil Popov: Did you hire them?
Sergey Boishtyan: Yes, it happened. I learned to speak and communicate, but did not develop in myself self-criticism and objectivity to my own ideas. I came to the conclusion that we should not promote our thoughts, but understand what thought is right and promote it. It was not easy. We constantly had disputes. There was a person in the team with the right thoughts that he could not convey, and my task was to convey it for him, and of course I had my own ego and point of view.
From here an internal conflict arose, when on the one hand it seemed that if you can convey a thought, it means it is correct, and on the other, that you simply know how to speak better than others. It took me a while to realize this. At this point, the team grew up and I lost time writing code. I wondered why I was doing all this.
I take rational thoughts of people, help them to convey them, and I do nothing myself - how useful is this? It may be more useful to me to realize these thoughts as a developer?
Then I thought about what was more important to me, began to score on communications, to take on the infrastructure tasks of automation. While I was doing this, conflicts began in the team. Plus, I began to notice that my technical subsidence had begun. When you do not write the code for a long time, it seems that you are behind the industry: an article was published, but you did not read it, a conference was held, and you did not manage to leave. It began to crush. I concluded that until I became an engineer who knows a lot and understands, I will not be a team leader.
Back to the developers
Alexei Kudryavtsev: Didn’t it scare you that, leaving the leads in the developers, you lost the prospect of growth, that you will be a senior developer until the end of your days?
Sergey Boishtyan: I had no doubts and long thoughts. This accumulated, and at some point I felt that team leadership was not pleasing. I thought what ways I have, who I can be, realized that I can only be a developer, and agreed with this idea.
I did not try to solve everything at once, but tried to return to the state when I was happy.
Daniil Popov: You said you became a team leader because you wanted to be the master of decisions. When you became a developer again, you became a performer again. Does it still bother you?
Sergey Boishtyan: It was a great discomfort. There were two options: either to reconcile with what is being told to you, or to learn to tell others so that you are heard and changed your mind. I again began to develop the qualities that I pumped up in the role of team lead, but now not with the goal of reaching consensus, but with the goal of communicating the opinion so that they could hear it and understand the motivation of the person.
The problem with my team was that the team leader did not know how to convey his thoughts, and I realized that my task was to help him convey to me the meaning of his words and suggest other solutions with reason.
Alexei Kudryavtsev: How did you develop these listening skills and understand yourself?
Sergey Boishtyan: There is a book
called “Black Rhetoric” about how to manipulate people and recognize the manipulations of others. In general, I read a lot, and not about dialogue and negotiations, but about the ability to understand others, to take into account that people are not only logic and rationalism, but also emotions.
But what about the salary?
Alexei Kudryavtsev: Leadership is also a higher salary. How to become a developer again without losing money?
Sergey Boishtyan: I understand that in this world there will always be people who earn more than me.
It makes no sense to chase only money. I personally strive to ensure that my work is paid in accordance with the market.
It's a shame if the developers of your level receive one payment, and you are lower.
Daniil Popov: Money motivation lasts from three to six months, and then it stops.
Sergey Boishtyan: I have not heard such a fact, but I agree.
Alexei Kudryavtsev: When monetary needs are closed, more important needs will come out, to which he will pay attention. For example, cooler projects.
Sergey Boishtyan: I watched a video on TED, where the
speaker gave examples of experiments confirming different types of motivation . Some people were promised money for some task, while others were given the condition to come up with a unique solution for this task. It turned out that the former did the task more slowly than those who had the challenge to come up with a new way. The speaker, author of motivation books, explained that modern people are motivated by responsibility and freedom. I didn’t have any thoughts about money when I switched to development. Paying at the market level is a confirmation that you are a good programmer and are appreciated. Comparing with a lead is not for me.
Aleksey Kudryavtsev: Many people are uncomfortable downgrading when moving from a high-paid position to lead. How to live with the thought that you lose in money?
Sergey Boishtyan: There are two options: find a place where the developer’s position is paid higher or find another way to earn money.
About plans
Alexei Kudryavtsev: Now that you are a developer again, how do you see development in this role?
Sergey Boishtyan: I don’t know what values ​​I will have in the first place in five years, but until that time I will be comfortable in my role, although in a year I, of course, can say something completely different. I have a long-term strategic plan, and in ten years, if I continue to be a good engineer, I can become a good representative of the top IT.
Alexei Kudryavtsev: But technology is becoming obsolete!
Sergey Boishtyan: Tell it to your CTO.
Alexei Kudryavtsev: CTO is not an engineer, but a Lead direction.
Sergey Boishtyan: I dived into the leadership and understand what skills are needed, what to be a leader. I always have the opportunity to return to leads and continue to develop as an engineer.
Another alternative appears when you start speaking at conferences - this is an opportunity to become a developer advocate.
An engineer has many development paths, even writing podcasts and articles.
In the book
about the thousandth hero there is a concept that you must choose a feat in life. In the first part of your life, you decide what kind of feat this is, in the adult part of life you try to accomplish it, and when you get to retirement, you tell everyone how you accomplished this feat.
Now I'm trying to try everything to understand what feat I want to accomplish, then I will accomplish it, and after that I will go to conferences and talk about him.
Daniil Popov: I do not agree that CTO is obliged to be behind technology, it can self-develop.
Alexei Kudryavtsev: No one stops in development, but this role is managerial and requires regular communication with people, and there is no need to be up to date on technologies at a professional level.
Daniil Popov - Depends on the person: everything and a little bit or in depth.
Sergey Boishtyan: I like to develop in breadth.
Any person, understanding the general principles, can reproduce them or, following them, get to the bottom of something.
It is clear that this takes him more time than the one who digs deep.
Alexei Kudryavtsev: There was no thought that the leadership did not meet expectations in a particular place and project, and in another case would it have worked out?
Sergey Boishtyan: There is some truth here. I am a person systematized and for clear processes. Perhaps I could fulfill the role of the person who organizes everything and helps to move. Now I understand that in this case a lot of fuel is spent on communication with people. If I develop this in the background and I come across the right people, I will be glad to try it. But this is a utopian situation.
Tips
Daniil Popov: Give me two tips. The first is for people who want to become team leaders, and the second for those who understand that leadership is not for them.
Sergey Boishtyan: I concluded for myself that it is important to be able to make effective decisions. Dozens of books have been written about this, but our brain is not so simple, and we need to understand our subject area, the system of our work and our motivation as best as possible.
My advice is to understand yourself: go through the tests, reflect on it, take the diary, go to the psychologist.
I decided to become a leader, because in my life I need to try everything if I want to. If there is no opportunity to become a leader now, then you can try to launch a sandbox of leadership practices in your personal life.
If you are a developer and communication with people is not a burden, then you need to try leadership at least in order to become more effective.
If you want something, but are afraid, then you don’t fully understand yourself. You can test the hypothesis that leadership will bring you happiness, but be sure to consider the risks.
Daniil Popov: Conclusion: there is nothing to be ashamed of to shuffle.
In October at Saint AppsConf, Sergey Boishtyan will talk about his vision of CI / CD. About the processes, soft skills and all that kind of reports will also be, we promised. For example, Vladimir Ivanov plans to discuss industry problems and tell how each of us can help.