Things I was unprepared for as a lead developer english

By Pascal de Vink

К чему можно оказаться не готовым, став тим-лидом russian

Перевод PayOnline

I’ve been a lead developer for 2 years. It has been quite a ride and there were a lot of things I was unprepared for. I’ve always been a software engineer, mostly involved with the actual code. People tell me I have a very natural way of leading, which is probably why I was asked for the job. However, I never before considered what it takes to lead an entire team of engineers. I wish I had more preparation beforehand. So to give you, the reader, a head start, these are the topics I was unprepared for, so you can hopefully be a better leader than I was. Mind you, I didn’t fail on all aspects, but most caught up with in me at one point in time.

До этого я был инженером и занимался непосредственно кодом. Мне говорили, что у меня хорошие лидерские качества, наверно, поэтому я и попросил о повышении. Я даже не задумывался, что значит управлять целой командой инженеров. Сейчас думаю, вот бы тогда у меня было побольше времени на подготовку. Итак, без лишних слов, вот вещи, к которым я оказался не готов.

Way less developing

Меньше заниматься разработкой

Although this might or might not seem obvious, the simple fact is that a role as leader requires you to have more of an overview and less of an in-depth knowledge about what’s going on. I didn’t realize this until I was a couple of months into the job, which made me always struggle with wanting to know more about the in-depth problems and not having the time to do that. I had less hands-on time with code, but people still looked up to me to provide answers or insights to very specific problems they had. Way too late I learned to harness the knowledge of the entire team instead of trying to be the know-it-all. Knowing who had specific knowledge about what part of the system was much more valuable in my role and took a lot less time to achieve. It was a lot less fun than diving heads-first into the code though.

Может, это и очевидно, но роль ведущего разработчика означает, что надо больше смотреть на общую картину, чем углубляться в конкретные аспекты того, что происходит. Я этого не понимал, пока не проработал пару месяцев, в течение которых мучился от того, что хотел разобраться во всех задачах, а времени на это не было. У меня было все меньше времени копаться в коде, а люди продолжали обращаться ко мне со своими очень узкоспециализированными задачами. Слишком поздно я понял, что надо разбираться в команде, а не во всех ее знаниях. Узнать, кто разбирается в нужной области оказалось намного быстрее и ценнее. Хотя, копаться в коде было намного веселее.


Делегировать задачи

Because of the limited time I now had, I had to delegate way more than I was initially comfortable with. Asking someone to do something you know he/she is not comfortable with or doesn’t want to do is hard enough. Asking while actually telling is even harder, because it requires a certain level of empathy to make the right approach. Because I loved doing the work I had always done so much, it was also not very easy to let somebody else handle it now. I wanted control over what was happening and how it was happening. Sadly, I soon figured out that it’s not doable to maintain both control and get everything in a sprint done. I had to let it go.

Времени было мало, поэтому пришлось делегировать намного больше, чем мне изначально хотелось. Просить кого-то делать вещи, которые им делать не хочется, уже достаточно тяжело. Приказывать — еще тяжелее, ведь чтобы правильно подойти к человеку, нужно ему сочувствовать на определенном уровне. Также, из-за того, что мне так нравилось заниматься предыдущей работой, мне было нелегко позволить кому-то другому взять ее на себя. Хотелось контролировать, что и как делается. К сожалению, я быстро понял, что одновременно все контролировать и укладываться в спринты невозможно. Так что пришлось просто отпустить.

Financial management / budgeting

Распределять финансы и бюджет

The financial sides of things don’t often interest me much. However, as I was now responsible for a team of people, leading them to wherever it was we needed to go, money was suddenly a big issue. I was in charge of how much we would spend as a team and responsible for how much value we would add to the company in return. The closest thing to any experience with finances that I had were at home, doing some bookkeeping, but even that I didn’t do much and was happy to let somebody else handle for me. That was not enough this time around though. There were a couple of things that I had to manage: - Licenses we used - Third party contractors - Handle expense claims - Vacation days - Salaries (raises and salaries of new hires)

Финансовая сторона дел обычно меня не интересует. Тем не менее, т. к. я теперь нес ответственность за команду и за то, чтобы он двигалась в верном направлении, деньги вдруг стали иметь большое значение. Я отвечал за то, сколько мы тратим и какую ценность создаем для компании. Мой опыт в финансах ограничивался домашним бюджетом, да и им я предпочитал особенно не заниматься и был рад, если кто-то составлял его за меня. В этот раз такой номер не прошел. Я отвечал за лицензии, которыми мы пользовались, расчеты с подрядчики, расходы на командировки, отпускные, прибавки и зарплаты новым сотрудникам.

Specially the licenses (Zend server, Oracle) and the third party contractors were mostly a bore. Every month the bills would have to be checked to see if all the billed hours were actually spend and if the licenses were still complete. I managed to automate a lot of these things through the use of Excel and Jira, but it would still take a good whole day a month.

Особенно напрягали лицензии (Zend server и Oracle) и подрядчики. Каждый месяц надо было проверять, что все оплаченные по чекам часы потрачены, а лицензии актуальны. Многое я смог автоматизировать через Excel и Jira, но все равно каждый месяц тратил на это целый день.

Hiring / Firing people

Принимать на работу и увольнять

Which brings me to another interesting point: hiring (and firing) people. I was very lucky to never have to fire someone in person. There was a time when the company didn’t perform so well and a bunch of people were let go, but that entire group of people were managed by my manager. I did have to hire people and in the current market that was a very hard task. Especially so when the company in question is not a sexy startup, nor is the stuff they’re working on amazeballs, nor is the market that they’re in one that attracts a lot of people. It took me a lot of time interviewing people and even offering them a job (with a pretty good offer, mind you) only for them to choose another company. This is of course how the market works and I don’t blame anyone for pursuing the jobs they dream of. But it took up a lot of time with little benefit. In the end, I think I was not nearly focussed enough! I spend so much time with the interviews and so little time in actually bringing in the right people that it was a very frustrating, tedious and, in the end, unsatisfying process. Later on, I saw how more focus on bringing in new people and lining them up for shorter interviews can have a lot of benefit.

Плавно переходим к еще одной интересной штуке — приему (и увольнению) сотрудников. Мне повезло, что лично не пришлось никого увольнять. Был момент, когда дела у компании немного забуксовали, и пришлось расстаться с несколькими людьми, но всем занимались менеджеры. Мне же приходилось нанимать людей, что при нынешнем состоянии рынка очень нелегко. Особенно когда работаешь не в модном стартапе, не над модными продуктами и не вообще не в модной области. Я потратил кучу времени на «холостые» собеседования: общаешься с кандидатом, делаешь предложение (между прочим, весьма неплохое), а кандидат идет работать в другую компанию. Понятно, что так работает рынок, и я, конечно, не виню кандидатов за то, что они ищут работу своей мечты. Но я потерял много времени, получив мало взамен. Вообще, я думаю, что просто был недостаточно сосредоточен! Я уделял слишком много времени процессу собеседования и слишком мало тому, чтобы собственно приводить нужных людей в компанию. Из-за этого набор сотрудников оказался разочаровывающим, утомительным и, в конечном итоге, не приносящим удовлетворения процессом. Позже я увидел, что если сосредоточиться на том, чтобы приводить новых людей и проводить с ними более короткие собеседования, пользы будет намного больше.

Culture building

Создавать культуру

Whenever you’re the leader of a group of people, you also cultivate the culture of that same group of people. It is often said that culture is that which you do or do not allow to happen. In that regard I was wildly unprepared. Although I was used to a bit of leadership and was not afraid to speak my mind whenever something was done that I though inappropriate, this was mostly from the comfortable spot as a peer or with a group of leaders backing me up. In this case, I didn’t feel like I had a group of other leaders backing me up, they were all busy building culture in their own teams. Neither was I one of the peers in the team, I was their leader. They looked up to me for leadership and that also meant defining what was and what was not allowed. Of course, this is easy when somebody makes a remark that couldn’t pass or does wildly inappropriate acts such as coming in late and/or leaving very early. The hard part was when this coming late and going early was done for a good reason, such as a sick spouse or child. Making the right choices every time a team member asked for something other than the usual (such as time off), I had to make a choice if I was to allow this. Not only that, I had to see how this would affect the entire team and how I would handle that effect. Sometimes this was easy: being open and transparent with a team really helps in creating understanding for both the team and you as a leader and the position you are in. Sometimes it was hard though, in such times where deadlines had to be met and team members were disgruntled with each other. It’s hard to both build a culture of positive sharing, honesty and transparency when faced with stress and a lot of negative emotions.

Лидер группы создает культуру своей группы. Часто говорят, что культура — это то, чему позволяешь и чему не позволяешь случаться. В этом отношении я был совершенно неподготовлен. Хоть роль лидера и была мне знакома, и я не боялся говорить вслух, если считал, что что-то делается неправильно, я все-таки привык высказываться как равный среди равных, или хотя бы заручившись поддержкой других лидеров. На новой позиции у меня не было «группы поддержки» — другие лиды были заняты созданием культуры в собственных командах. И я больше не был равным среди равных в команде — ведь я был ее лидером. Команда ожидала от меня лидерства, в том числе и того, чтобы я определял, что дозволено, а что нет. Конечно, это просто сделать, когда речь о неуместном замечании или очевидном косяке типа опоздания. Становится сложно, когда сотрудник опоздал по уважительной причине, например, из-за болезни жены или ребенка. Каждый раз, когда сотрудник обращался с исключительной просьбой (например, отпустить домой), приходилось делать выбор — позволить или нет. Более того, я должен был оценить, какой эффект мой выбор окажет на всю команду, и что потом делать с этим эффектом. Иногда это было легко: если быть открытым и честным с командой, ей легче понять и принять решения тим-лида. Но бывало и тяжело — когда дедлайны на носу, а сотрудники не ладят. Сложно создать культуру позитива, честности и прозрачности в атмосфере стресса и негативных эмоций.



Stress, deadlines, negative emotions, set backs and other negative events are a part of life. I’m usually a glass half-full kind of person, but when met with the overwhelming feelings of an entire team, I found it hard to keep my head up and still try being the motivating leader that I want to be. If a retrospective is just one remark away from turning into a full-blown he-said she-said blame-game, I found it not enough to just be a kind and positive person anymore. I needed to draw strength from the other positive things in my life or I would be unable to bend this one negative thing around. This is also what I found hardest in the end. I was doing something I didn’t really love, in a way I didn’t think was good enough and it overshadowed a lot of positive events in my life. That made it so much harder to draw strength from those events to battle negativity in the team. Luckily, it wasn’t always this bad, but I was woefully unprepared for the amount of motivating I had to do.

Стресс, дедлайны, негативные эмоции, неудачи и прочий негатив — это часть жизни. Вообще, я из тех, у кого стакан наполовину полон, но когда пришлось иметь дело с чувствами всей команды, мне было сложно держать настрой и при этом мотивировать коллег. Когда разбор полетов почти превращался в полноценный срач, мне становилось понятно, что просто быть хорошим и позитивным уже недостаточно. Надо было черпать силы из других позитивных источников в своей жизни, иначе я просто не мог справиться с негативом. И именно это оказалось тяжелее всего: делать то, что не доставляет удовольствия, при этом понимать, что делаешь это не очень хорошо, и жертвовать ради этого положительными событиями в собственной жизни. К счастью, дела не всегда были совсем уж плохи. Тем не менее, я оказался абсолютно не готов так много мотивировать.



As a good leader, I consider it my duty to not only keep the team running as smooth as possible, but also to help them grow beyond themselves. One of the things I was very unprepared for was mentoring. I feel like I have a natural tendency to listen to people and to help them grow, so I could wing it on the spot, but I would’ve liked to have had more experience with it. Thinking about it now, I always though mentoring was something that was done from top to bottom. Managers would mentor each other and they would mentor their teams. In the real world, this is not necessary how it works. I think experience with mentoring others earlier in my career would prepare me more for the leadership position. Initiatives such as PHP Mentoring can help a lot in this regard.

Как хороший лидер я считаю своим долгом не только поддерживать команду в форме, но и помогать ей расти. Еще одна вещь, к которой я оказался не готов — менторство. Думаю, у меня естественная склонность слушать людей и помогать им расти, так что в целом удавалось импровизировать на ходу, но все равно хотелось бы иметь побольше опыта. Я всегда думал, что менторство работает сверху вниз: менеджеры обучают друг друга, а потом свои команды. В реальности это необязательно так. Думаю, будь у меня опыт менторства других людей на ранних этапах карьеры, я был бы более готов к позиции тим-лида. В этом отношении могут быть очень полезны проекты типа PHP Mentoring.

Feedback (inc. 360 degrees)

Собирать фидбек

Next to mentoring others, I underestimated the power of reflecting on oneself and feedback from others. I was always in touch with both techniques, but failed to see that the leadership role was so much more demanding (specially in the beginning) that it was not enough to ask for feedback after a year, nor was it enough to look back in retrospect to my own acts after quite a while. Giving and receiving feedback was not really embedded into the culture of the company except for once a year. This was not enough to make it a habit or a useful tool. Looking back now, I should have asked for feedback way earlier, even before I landed in the leadership role.

Наравне с менторством я недооценил важность самостоятельной оценки своей работы и получения фидбека от коллег. Я давно знаком с обеими техниками, но не сразу осознал, что роль тим-лида требует (особенно поначалу) так много, что собирать фидбек и оценивать собственные действия раз в год — недостаточно. Обмен фидбеков чаще раза в год вообще не был частью корпоративной культуры, а этого совсем недостаточно, чтобы обработка фидбека стала привычкой и превратилась в полезный инструмент. Оглядываясь назад, понимаю, что собирать фидбек надо было намного раньше — до того как я вообще перешел на позицию ведущего разработчика.



Depending on the role, the leader is often the first to be asked “when is it done?” or “is there any time to do X?”. I had previously provided lots of input for those kind of questions, but was never put on the spot by a C-level manager to answer the question. Making a “resource” planning (hate that term, people are not resources) to see when developers where available to work on a project was not something I had ever done before, so I was uncomfortable estimating if we could take on another project. I later learned to trust more on the team to create a planning and to decide if they had enough time left. I also learned that there’s often a question behind the initial question. Learning what that question is often gives more breathing room when it comes down to the resource planning.

В зависимости от роли, зачастую именно лидера команды первым спрашивают «когда будет готово?» и «хватит ли времени на X?». В прошлом я много помогал отвечать на подобные вопросы, но мне никогда не приходилось отвечать на них непосредственно топ-менеджменту. Мне не приходилось «планировать ресурсы» (терпеть не могу это выражение; люди — не «ресурсы»), поэтому оценивать, сможет ли команда взяться за еще один проект, мне было некомфортно. Позже я узнал, что стоит больше доверять планирование команде и оценивать, достаточно ли у нее времени. Еще я узнал, что за изначальной задачей зачастую кроется другая, скрытая задача. Если докопаться до нее, получите дополнительное время на планирование ресурсов.

People skills

Общаться с людьми

Although the job title might read “lead developer”, the biggest part of the job is dealing with people. Although I’ve always been in touch with my abilities to talk to people and I don’t shy away from any human interaction, I realized this way too late. In the beginning I focused too much on the development part and the frustration when I didn’t have enough time to do that. I learned that being able to take the time to sit down with someone to really understand their problem, however simple or insignificant it might seem, was a lot more valuable than the short-sighted development insight I was gaining otherwise.

Хотя позиция и называется «лид-разработчик», бо́льшая часть работы — общение с людьми. Я умею и не стесняюсь общаться с людьми, но важность этого навыка я понял слишком поздно. Поначалу я слишком сфокусировался на разработке и переживаниях по поводу того, что на нее не хватает времени. Я понял, что умение сесть и обсудить задачу с коллегой, какой бы простой или незначительной она ни казалась, дает намного больше, чем самостоятельное разглядывание разработки в упор.

Lead by example

Подавать пример

When in a leading position, a position with (more) power and (more) responsibilities, one has to figure out what kind of leader one is. I’ve always been more of a fan of the bottoms-up leadership model as I think shouting down from an ivory tower doesn’t work very well. Also, I like how being a leader is not like being a boss, but more like being an enabler, enabling growth and creating opportunities for people. However, it might sometimes be a lot easier to just be the person who divides the work that has to be done and go back to your own work. Being an inspiring leader/enabler requires constant work and attention. I often felt like I could’ve done more to help my team grow or create opportunities to learn more. Most of those times I let myself be distracted by deadlines and stress.

Позиция подразумевает больше власти и ответственности и заставляет задуматься — а какой, собственно, из меня лидер. Мне нравится концепция лидера «из народа» и совсем не нравится концепция лидера на золотом троне. Еще мне нравится думать, что «лидер» — это не «начальник», а скорее «помощник» — тот, кто создает новые возможности и помогает людям расти. Тем не менее, иногда намного соблазнительнее просто раскидать задачи, расставить дедлайны и заняться собственными делами. Если хотите стать вдохновляющим лидером, придется посвятить этому много работы и внимания. Часто мне казалось, что я мог бы делать больше для роста команды, создавать больше новых возможностей для получения новых знаний. Обычно это было связано с тем, что я отвлекался на дедлайны и стресс.

Sickness / personal problems

Решать личные проблемы

Just a couple of days in on the job, people suddenly wanted to talk to me about sickness, their personal problems, vacation days, being stuck in their jobs, etc. A lot of these problems could be met with a healthy dose of common sense, but the stories I sometimes heard really stuck with me. I was really unprepared for any of these stories. I started to make the problems my own and instead of taking proper distance, I let my empathy get the upper hand. Being the person that I am, I started to process these problems unconsciencely during my sleep and dreamed about them. This even led to a mild form of sleep deprivation at which point I had to actively take distance. Although I really felt like helping people with their problems, I couldn’t be the superhero they needed. All I could be was a listening ear and perhaps make it a little easier for them to be a part of the team. This was a harsh lesson for me though.

Всего через пару дней после вступления в новую должность ко мне начали обращаться с болезнями, личными проблемами, отпусками, затыками по работе и т. д. Многие проблемы легко решались с помощью здравого смысла, но некоторые истории по-настоящему западали в душу. К таким историям я был не готов. Я делал чужие проблемы своими собственными, и вместо того чтобы держать необходимую дистанцию, позволял сочувствию взять верх. Я начинал подсознательно обдумывать эти проблемы, они мне даже снились — такой уж я человек. Дошло до того, что у меня сформировалось легкое расстройство сна — тут уж пришлось активно создавать дистанцию. И хоть мне и казалось, что я реально помогаю людям с их проблемами, я все-таки не стал героем, который был им нужен. Максимум, что я мог — выслушать и, может, сделать работу в команде чуть проще. Осознание этого факта далось мне нелегко.


Оценивать KPI, цели и задачи

Another thing with mentoring and leading a team is pushing them forward. Within the company we used goals and KPIs for that and it seemed like good techniques to use. However, it quickly started to get real hard to align both personal and company goals. When a team member really wants to learn [DDD])(, but the company is not even sure about continuing the product, it gets really hard to make that goal happen. If a big part of the yearly review are the set goals and KPIs at the beginning of the year, this is something to take into account! As a developer I often didn’t see (or want to see, or wasn’t allowed to see) the bigger goals the company set. I now see that my manager always found a way to align both goals and how hard a job that is. It means lots of lobbying for that one project and adjusting goals if they turned out to be impossible to reach.

Кроме того, что команду надо учить и направлять, ее надо подгонять. Для этого у нас в компании используется техника задач и ключевых показателей (KPI). Техника показала себя хорошо, но довольно быстро стало сложно совмещать корпоративные цели и личные цели сотрудников. Когда сотрудникам очень хочется попробовать DDD, а компания вообще не уверена, что продукт не будет заморожен, достичь цели становится очень сложно. Как разработчик я часто не видел (или не хотел видеть, или мне не давали увидеть) глобальные цели компании. Теперь я вижу, каких трудов моему менеджеру стоило совместить их с моими личными целями. Чтобы все сработало, нужно активно лоббировать свой проект и на ходу подстраивать цели, если оказалось, что их не достичь.

Public speaking

Выступать перед публикой

One thing I didn’t realize is that being a leader also means that it often comes down to not only address your own team, but other teams or the entire company as well. Presenting plans for the next quarter or showing the progress the team made or explaining very technical matter in a non-technical way comes with the job. Luckily I had already dipped my toes into speaking at conferences. Organizing AmsterdamPHP also definitely helped me with this. Although these engagements would’ve been great opportunities for team members to grow, often times a certain amount of pressure behind having to deliver a certain message in order to get a GO on a project was required. I quickly had to learn that it wasn’t about how beautiful the slide deck was, but about the message and there were no second chances here.

Я совсем не осознавал, что лид зачастую общается не только с собственной командой, но и с другими командами, а порой и со всей компанией. Презентовать планы на квартал, рассказывать о прогрессе команды, объяснять технические вещи нетехническим языком — часть работы. К счастью, я уже имел опыт публичных выступлений на конференциях. Конференция AmsterdamPHP однозначно помогла мне. Такие мероприятия учат публичным выступлениям, но не готовят к тому давлению, которое на вас обрушивается, когда надо донести мысль, чтобы получить добро на проект. Я быстро понял, что решают не красивые слайды, а подача сообщения, и попытка всего одна.

Go forth and improve

Становись лучше

Now that I’ve told you the pitfalls I encountered and the things I did not expect would hit me, I hope you can take these learnings and can proactively prepare yourself, so you won’t make the same mistakes if you’re ever in the same position.

Мы рассказали о подводных камнях, к которым оказался не готов Pascal, и, надеемся, что вы извлечете урок из этих ошибок, подготовитесь и не наступите на те же грабли.

Тексты были взяты из открытых источников и соединены в формате "билингва" (bilingual book). Для каждой страницы указан источник, автор и переводчик. Если вы заметили неточность перевода, или неправильно сопоставленные абзацы, или текст оформлен неаккуратно - сообщите в комментариях.


Для добавления комментариев необходимо авторизоваться