Есть среди разработчиков те, кто хочет не только писать красивый код, но и создавать эффективные практики, упрощающие командную работу.
Получив заветные лавры тимлида, окунувшись в водоворот постоянных коммуникаций, решения бытовых вопросов и, о боже мой, потеряв возможность писать тот самый красивый код, некоторые люди впадают в депрессию.
И наш гость AppsCast Сергей Боиштян пошел другим путем и, почувствовав реалии жизни в качестве руководителя группы, вернулся в ряды инженеров.
Почему лидерство в команде — не для всех и почему рост — не всегда новый «ремешок» на рукаве, в диалоге с Сергеем.
Алексей Кудрявцев: Всем привет. Сергей, расскажи пару слов о себе? Сергей Боиштян: На данный момент я старший разработчик, был лидом, техлидом и просто разработчиком.
Я работаю на Авито, до этого в Тинькофф.
Даниил Попов: Давайте сначала разберемся, кто такой разработчик, каковы его обязанности и чем он занимается на работе.
О роли разработчика
Сергей Боиштян: Разработчик — это прежде всего роль, а не конкретная должность.В ИТ сейчас много людей, которые могут одновременно разрабатывать и выполнять другие функции.
В начале пути специалист фокусируется на разработке, а затем повышает ответственность: ходит на встречи с тестировщиками, с дизайнерами, принимает архитектурные решения.
Разработчик — это роль, в которой инженер помогает реализовать функции продукта.Это либо продукт для конечного пользователя, либо непосредственно для разработчиков.
Например, я последние полтора года делаю продукты для разработчиков внутри компании.
Даниил Попов: За что отвечает разработчик? Сергей Боиштян: Сейчас практики CI/CD набирают популярность, и на разработчике лежит ответственность взять функцию, реализовать ее самостоятельно, протестировать с помощью инструментов автоматизации или быть на связи с теми, кто ее тестирует, и следить за ее выпуском.
Даниил Попов: Вкратце: доведите задачу в Jira из ToDo до Closed через все 500 статусов.
Сергей Боиштян: Если пойти от обратного, то разработчики — это не те инженеры, которым плевать на свою фичу.
Такие люди отправляют запросы на включение, но не заинтересованы в выпуске функции, не хотят изменять код или устранять конфликты.
О важности команды
Даниил Попов: Задача разработчика — чтобы пользователи наслаждались качеством и эффективностью кода.Тогда что такое команда, какие задачи она решает? Вы различаете типы команд? Сергей Боиштян: Можно рассмотреть команды, в которых люди различаются по своим функциональным обязанностям, и команды, в которых люди различаются по уровню ответственности.
Я фанат универсальных команд, где каждый имеет определённую экспертизу, но всё умеет, а узкие места автоматизированы.
В таких командах люди равны, постоянно общаются и вместе принимают решения.
Есть команды, где у каждого своя ответственность.
В них разработчик сначала пишет код, а во-вторых, при необходимости, поддерживает тестировщика, отвечающего за качество продукта.
Алексей Кудрявцев: Я слышал, что это не Agile. Сергей Боиштян: В принципе, это может быть нормальная история, сложившаяся исторически.
Но лично мне нравится, когда в команде есть люди со схожими обязанностями и обязанности смешиваются в зависимости от конкретного спринта.
На данный момент наша команда разрабатывает более десяти сервисов, каждый из которых требует собственного опыта и знаний.
В одном спринте ты делаешь одно, в другом другое, и в любом случае тебе приходится общаться, так как происходит постоянный обмен знаниями и разработками.
Когда вы просто разработчик, тестировщик или дизайнер, вы копаете глубоко только в одном направлении.
Даниил Попов: Лично мне не нравится концепция «общий код, общая ответственность».
Подобная практика, по-видимому, приводит к тому, что никто не будет привлечен к ответственности.
Как вы думаете? Сергей Боиштян: Недавно я наткнулся на фразу в книге: «Если в команде больше одного ответственного человека или его вообще нет, то ничего не произойдет, так как никто не захочет брать на себя ответственность».
Мне нравится подход, когда все в общих чертах, но у вас есть четкая цель на неделю или месяц.Когда мы планируем спринт, каждый человек отвечает за свою часть, разрабатывая ее, понимая, что он должен это сделать.
Конечно, если ответственные лица часто меняются, на смену контекста может уйти много времени.
При этом всегда есть владелец определенного функционала, который управляет бэклогом.
Как долго он будет нести эту ответственность, зависит от продукта.
Алексей Кудрявцев: Я считаю, что разделить ответственность не получится.
Если кто-то придет с инициативой искать людей, готовых взяться за дело, он их не найдет, так как все будут думать, что это сделает кто-то другой.
Сергей Боиштян: Чтобы окончательно похоронить общую ответственность, приведу пример из жизни.
Обычно есть пул-реквест, который «задевает» какой-то модуль.
Если у этого модуля нет ответственного человека, то все рецензенты, думая, что другой оставит более полезный комментарий, бегло заглянут внутрь.
В результате код превращается в кашу.
А на вопросы «почему такЭ» появляются ответы «Я это сделал, мне никто не ответил, я решил, что это эффективно», а дальше это перерастает во фразу «так сложилось исторически, не трогайте».
Об основных обязанностях тимлида
Даниил Попов: Мы постепенно приближаемся к понятию «лидер» как человек, концентрирующий в себе эту ответственность.Какие обязанности есть у такого человека? Сергей Боиштян: Лидерство – это тоже роль.
Его обязанности варьируются в зависимости от того, в какой команде он находится.
Если мы говорим о команде, где все равны, то лидер руководит членами команды, так как им зачастую сложно прийти к консенсусу.
Тогда главная задача ведущего – довести любой спор до продуктивного завершения; когда возникает какой-либо вопрос, закройте его как можно быстрее и эффективнее.
Ведущий помогает другим высказывать свое мнение и остается беспристрастным, поскольку у него еще и есть экспертиза.
Со стороны может показаться, что эту роль могут выполнить Scrum Masters. В моем понимании Скрам-мастер обычно находится на стороне и может проводить встречи, но я за то, чтобы эта роль осталась за тимлидом.
Если функции в команде четко разделены, то тимлид становится еще и человеком, владеющим процессом.
Он понимает на каждом этапе, кто что делает и за что отвечает.
Мне часто говорили, что тимлид — это своего рода зонтик между бизнесом и командой, потому что каждый знает только свой блок, а хочется иметь человека, знающего текущее состояние продукта.Алексей Кудрявцев: У меня такое впечатление, что ведущий делает все.
Вы одновременно архитектор и Scrum-мастер, и вы должны находить людей и уметь им помогать.
Это огромный набор.
Это не одна роль, а несколько.
Где здесь правда? Даниил Попов: Самое главное, что вы не программируете.
Алексей Кудрявцев: Ну, ты пытаешься.
Даниил Попов: Ключевое слово «пытается».
Я написал три строчки, вы отвлеклись и всё.
Сергей Боиштян: Лид — это человек, который затыкает дыры в команде.
У каждой команды, независимо от формата, есть проблемы, и ответственность за них нужно на кого-то переложить.
Алексей Кудрявцев: Мне кажется, что лид работает с людьми и их мотивацией, и есть отдельный архитектор, который отвечает за код. Даниил Попов: Я различаю понятия «тимлид» и «техлид».
Технический руководитель — это человек, который отвечает за техническую сторону продукта: какие библиотеки, шаблоны использовать, какую инфраструктуру использовать.
Тимлид – это управление людьми.
Эти роли не пересекаются.
Можно попробовать объединить эти роли, но следить за архитектурой параллельно и 1:1 очень сложно.
Тимлид — это руководитель команды, который ведет команду к светлому пользовательскому будущему.Сергей Боиштян : Вернёмся к определению «команда», где группа людей делает одно дело.
Чтобы делать что-то эффективно и оставаться командой, нужен тимлид, который объединяет разрозненных инженеров в единое целое, позволяет каждому реализовать свой потенциал и сделать продукт лучше.
Даниил Попов: Если бы в басне о лебеде, раке и щуке был бригадир, его бы потащили куда надо.
Откуда берутся лидеры команд?
Даниил Попов: Интересно понять, как они становятся руководителями команд. Я придумал четыре способа.Первое: лучший разработчик назначается тимлидом.
Второе: назначают самого опытного.
Третье: их назначают за другие заслуги, но за какие именно, я так и не выяснил.
Ну и четвертый вариант, когда лидом становится сам разработчик.
Какой из этих вариантов вы считаете жизнеспособным? Сергей Боиштян: Начну со своего опыта.
В какой-то момент мне захотелось взять на себя больше ответственности и повлиять на происходящее.
Я часто что-то предлагал и наконец понял, что можно не предлагать, а сразу делать, быть на другой стороне.
Мне сказали, что я задумался об этом вовремя, поскольку проект стартовал и мне дали шанс попробовать себя в роли тимлида.
Была гипотеза, что я как ответственный разработчик буду хорошим тимлидом.
Из ваших вариантов вы можете оставить два: когда инициатива исходит от вас и когда она исходит извне.
В моем случае это исходило от меня, но в соседних командах я видел противоположную ситуацию.
Они наняли из команды опытного разработчика, мотивируя это тем, что он уже знает культуру и умеет общаться.
Никто не отказался, так как предлагали тем, кто понимал, что если не он, то никто другой.
Даниил Попов: У меня противоположный опыт. Мой руководитель группы ушел, и я стал руководителем группы.
Бытует мнение, что опытный разработчик станет хорошим тимлидом, но это предположение совершенно неверно.
Недавно я прочитал идею о том, что, сделав лучшего разработчика руководителем команды, вы потеряете лучшего разработчика и получите плохого менеджера.
Соглашаться? Сергей Боиштян: Звучит правдоподобно.
Я не встречал много хороших руководителей команд. Они все мне нравились как люди, но часто я был недоволен тем, как они исполняли свои роли.
Я чувствовал, что могу добиться большего.
Теперь, когда я знаю, что не могу, я разработал четкие критерии хорошего лидерства.
Если вы можете слушать людей, быть непредвзятым и передавать мысли других людей, то вы уже на полпути.
Остальное приходит с практикой.
Благодаря постоянному стрессу вы учитесь тайм-менеджменту и расстановке приоритетов в задачах.
Если человек умеет коммуницировать, концентрироваться и обладает хорошими техническими навыками, то я бы однозначно посоветовал ему попробовать себя в роли тимлида.
Проблемы роста
Даниил Попов: Куда лидеру команды следует двигаться дальше? Глава мобильного подразделения, генеральный директор, технический директор? Сергей Боиштян: Зачем куда-то переезжать? Даниил Попов: На нашем постсоветском пространстве бытует мнение, что нам всегда нужно куда-то расти.Если ты не растешь, значит, ты прожил свою жизнь напрасно.
И расти можно только повышая свою позицию, получая новый значок.
Раньше я тоже так думал, но потом понял, что это необязательный путь.
Что для вас означает рост? Сергей Боиштян: Я когда-то читал о классификации сфер влияния человека, где под ростом подразумевалось увеличение одной из сфер влияния – профессиональной, финансовой, социальной, семейной и медицинской.
Полгода назад я узнал о Анкета ценностей Шварца .
Тогда я не мог понять, хочу ли я быть ведущим или нет. Я искал анкеты и тесты, пытаясь понять, какие области для меня важны.
Хочу ли я быть известным разработчиком или большой зарплатой, или мне нужен баланс между работой и личной жизнью, и для меня не имеет значения, на каком уровне я нахожусь.
По анкете Шварца выяснилось, что мне важно быть профессионалом, иметь признание и семью.
Я понял, что мне нравится работать над технически сложной задачей, выступать с докладом или записывать подкаст, но если бы мне пришлось выбирать между тратой времени на подготовку к презентации или выполнением домашних дел на работе, я бы выбрал последнее.
Важно понимать, что эти ценности динамичны.
Не бывает так, что ты хочешь всю жизнь быть крутым профессионалом.
В какой-то момент вы дойдете до точки, пройдете опрос еще раз и узнаете, что ваш приоритет теперь — семья.
Чтобы быть счастливым, нужно расти и развиваться.Просто люди часто растут и развиваются не в том направлении, потому что не понимают, что для них действительно важно.
Алексей Кудрявцев: Оказывается, самое главное — понимать, куда ты растешь.
О плюсах и минусах командного лидерства
Даниил Попов: Давайте разберемся, что вам понравилось в вашей роли, а что нет. Сергей Боиштян: Сначала я объясню немного подробнее, почему я хотел стать ведущим.Когда я пришел в разработку, мне нравилось то, что я делал.
Потом я присоединился к команде и начались проблемы с пулл-реквестами из-за недопонимания и отсутствия общения.
Разумно поговорить не было возможности, а желание сделать все качественно копилось внутри.
В таких ситуациях я обращался за помощью к ведущему, но его на всех не хватало.
В голову стали приходить мысли, что в команде должны быть общепринятые принципы и практики, созданные либо командой, либо руководителем.
Я думал, что в роли тимлида я придумаю практики, которые всем понравятся, все быстро согласятся и перестанут конфликтовать.
С этой мыслью в голове я начал читать книги о переговорах и наткнулся на Шопенгауэр .
Была хорошая идея, что люди не способны слышать аргументы и должны прийти к своим собственным выводам.
Навязывая свое мнение, вы лишь создаете желание защитить себя.
Так я научился задавать вопросы, в первую очередь самому себе.
Я решил, что одна из самых интересных задач руководителя — помогать людям отвечать на вопросы, которые они себе не задают. Я был уверен, что, став лидом, продолжу писать код, просто создавать практики, и всё будет хорошо.
Алексей Кудрявцев: Я понимаю, что вы хотели написать код, но так, как вам хочется.
Сергей Боиштян: Я хотел писать код быстро.
Даниил Попов: Мне кажется, это нормальная мотивационная и лидерская позиция, если ты что-то предлагаешь и люди с тобой соглашаются.
Тебе удалось донести свои мысли до публики, тебя приняли, посадили в броневик, и теперь ты готов двигать народ вперед. Сергей Боиштян: С какими проблемами я столкнулся? Мне повезло, что мне не пришлось никого смещать или сражаться.
Я просто пришел лидом в новый проект, набрал людей в свою команду, они приняли мои принципы, но в какой-то момент в команде появились люди, не совсем со мной согласные.
Даниил Попов: Вы их наняли? Сергей Боиштян: Да, именно так это и произошло.
Я научился говорить и общаться, но у меня не развилась самокритика и объективность по отношению к собственным идеям.
Я пришел к выводу, что надо не пропагандировать свои мысли, а понимать, какая мысль правильная, и продвигать ее.
Это было непросто.
У нас постоянно были споры.
В команде был человек с правильными идеями, которые он не мог донести, и моя работа заключалась в том, чтобы донести их за него, и у меня, конечно, было свое эго и точка зрения.
Это породило внутренний конфликт, когда с одной стороны казалось, что если ты можешь донести мысль, то она правильная, а с другой стороны, что ты просто умеешь говорить лучше других.
Мне потребовалось некоторое время, чтобы осознать это.
К этому моменту команда выросла и я потерял время на написание кода.
Я задавался вопросом, почему я все это делаю.
Я беру у людей рациональные мысли, помогаю их донести, а сам ничего не делаю — насколько это полезно? Может быть, мне как разработчику было бы полезнее реализовать эти мысли?Тогда я задумался о том, что для меня важнее, и начал пренебрегать коммуникациями и брать на себя задачи по автоматизации инфраструктуры.
Пока я этим занимался, внутри коллектива начались конфликты.
Плюс я стал замечать, что у меня начинаются технические проседания.
Когда долго не пишешь код, создается впечатление, что ты отстал от отрасли: статья опубликована, но ты ее не прочитал, прошла конференция, а съездить не успел.
Это начало ощущаться ошеломляюще.
Я пришел к выводу, что пока я не стану инженером, который многое знает и понимает, я не буду тимлидом.
Вернуться к разработчикам
Алексей Кудрявцев: Не испугались ли вы, что, уйдя от лидера и став разработчиком, вы потеряли перспективу роста, что останетесь старшим разработчиком до конца своих дней? Сергей Боиштян: У меня не было сомнений и долгих раздумий.Это накопилось, и в какой-то момент я почувствовал, что руководить командой — это не весело.
Я задумался о том, какие у меня пути, кем я могу быть, понял, что могу быть только разработчиком, и согласился с этой мыслью.
Я не пыталась решить все сразу, а пыталась вернуться в то состояние, когда я была счастлива.Даниил Попов: Вы сказали, что стали руководителем команды, потому что хотели быть хозяином решений.
Когда ты снова стал разработчиком, ты снова стал исполнителем.
Вас это все еще беспокоит? Сергей Боиштян: Это было очень неприятно.
Было два варианта: либо смириться с тем, что тебе говорят, либо научиться говорить с другими так, чтобы они тебя услышали и изменили свое мнение.
Я снова начал развивать в себе те качества, которые развивал в качестве тимлида, но теперь не с целью достижения консенсуса, а с целью донести мнение так, чтобы оно было услышано и понять мотивацию человека.
В моей команде проблема была в том, что тимлид не умел донести свою мысль, и я понял, что моя задача — помочь ему донести до меня смысл его слов и аргументированно предложить другие решения.
Алексей Кудрявцев: Как вы развили эти навыки слушания и понимания себя? Сергей Боиштян: Есть книга «Черная риторика» о том, как манипулировать людьми и распознавать манипуляции других.
Я вообще много читаю, и не о диалоге и переговорах, а об умении понимать других, учитывать, что люди – это не только логика и рационализм, но и эмоции.
А что насчет зарплаты?
Алексей Кудрявцев: Лидерство также означает более высокую зарплату.Как снова стать разработчиком и не потерять деньги? Сергей Боиштян: Я понимаю, что в этом мире всегда найдутся люди, которые зарабатывают больше меня.
Нет смысла гоняться только за деньгами.Обидно, если разработчики вашего уровня получают одинаковую оплату, а вы ниже.Я лично стремлюсь к тому, чтобы мой труд оплачивался в соответствии с рынком.
Даниил Попов: Денежная мотивация работает три-шесть месяцев, а затем прекращается.
Сергей Боиштян: Я не слышал такого факта, но согласен.
Алексей Кудрявцев: Когда денежные потребности будут покрыты, появятся более важные потребности, на которые он обратит внимание.
Например, более крутые проекты.
Сергей Боиштян: Я смотрел видео TED, где спикер привел примеры экспериментов, подтверждающие разные виды мотивации .
Некоторым людям обещали деньги за выполнение задания, от других требовали придумать уникальное решение этой задачи.
Оказалось, что первые выполнили задачу медленнее, чем те, кому была поставлена задача придумать новый путь.
Спикер, автор книг о мотивации, пояснил, что современных людей мотивирует ответственность и свобода.
Никаких мыслей о деньгах при переходе в девелопмент у меня не было.
Оплата на уровне рынка — это подтверждение того, что ты хороший программист и тебя ценят. Сравнивать с лидом не для меня.
Алексей Кудрявцев: Многие люди чувствуют себя некомфортно при понижении в должности при переходе с высокооплачиваемой руководящей должности.
Как жить с мыслью, что потеряешь деньги? Сергей Боиштян: Есть два варианта: найти место, где должность разработчика оплачивается выше, или найти другой способ заработка.
О планах
Алексей Кудрявцев: Теперь, когда вы снова стали разработчиком, как вы видите развитие этой роли? Сергей Боиштян: Не знаю, какие ценности будут на первом месте через пять лет, но до тех пор мне будет комфортно в своей роли, хотя через год я, конечно, могу сказать совсем другое.У меня есть долгосрочный стратегический план, и через десять лет, если я продолжу оставаться хорошим инженером, я смогу стать хорошим представителем топ-ИТ.
Алексей Кудрявцев: Но технологии устаревают! Сергей Боиштян: Скажите это своему техническому директору.
Алексей Кудрявцев: CTO не инженер, а лидовского направления.
Сергей Боиштян: Я погрузился в лидерство и понял, какие навыки нужны, чтобы быть лидером.
У меня всегда есть возможность вернуться в лидеры и продолжить развиваться как инженер.
Еще одна альтернатива, которая появляется, когда вы начинаете выступать на конференциях, — это возможность стать защитником разработчиков.
У инженера есть множество способов развития, включая написание подкастов и статей.В книге о тысячеликом герое Есть понятие, что надо выбрать подвиг в жизни.
В первую часть жизни ты решаешь, что это за подвиг, во взрослой части жизни ты пытаешься его совершить, а когда достигаешь пенсии, рассказываешь всем, как ты совершил этот подвиг.
Сейчас я пытаюсь все попробовать, чтобы понять, какой подвиг я хочу совершить, тогда я его совершу, а потом поеду на конференции и расскажу об этом.
Даниил Попов: Я не согласен с тем, что за технологией должен стоять технический директор; он может развиваться сам.
Алексей Кудрявцев: Никто не перестает расти, но эта роль управленческая и требует регулярного взаимодействия с людьми, и здесь нет необходимости быть в курсе технологий на профессиональном уровне.
Даниил Попов - Зависит от человека: все и понемногу или углубленно.
Сергей Боиштян: Мне нравится развиваться в ширину.
Любой человек, понимая общие принципы, может воспроизвести их или, следуя им, докопаться до чего-либо.Понятно, что у него это занимает больше времени, чем у того, кто копает глубже.
Алексей Кудрявцев: Вы когда-нибудь думали, что руководство не оправдало ожиданий в конкретном месте и проекте, а в противном случае все бы сложилось? Сергей Боиштян: Здесь есть доля правды.
Я системный человек и за четкие процессы.
Возможно, я мог бы стать человеком, который все организует и помогает двигаться вперед. Теперь я понимаю, что очень много топлива в этом случае уходит на общение с людьми.
Если я разработаю это в фоновом режиме и наткнусь на нужных людей, я буду рад попробовать это.
Но это утопическая ситуация.
Совет
Даниил Попов: Дайте мне два совета.Первый — для людей, которые хотят стать лидерами команды, а второй — для тех, кто понимает, что лидерство — не для них.
Сергей Боиштян: Я пришел к выводу, что важно уметь принимать эффективные решения.
Об этом написаны десятки книг, но наш мозг не так прост, и нужно как можно лучше понимать свою предметную область, свою систему работы и свою мотивацию.
Мой совет - разобраться в себе: пройти тесты, поразмышлять, вести дневник, сходить к психологу.Я решила стать ведущей, потому что в жизни мне нужно попробовать все, если я захочу.
Если возможности стать ведущим сейчас нет, то можно попробовать запустить песочницу для практики лидерства в личной жизни.
Если вы разработчик и общение с людьми не в тягость, то вам стоит попробовать лидерство хотя бы для того, чтобы стать более эффективным.
Если вы чего-то хотите, но боитесь, значит, вы не до конца понимаете себя.
Вы можете проверить гипотезу о том, что лидерство принесет вам счастье, но обязательно учитывайте риски.
Даниил Попов: Вывод: нет ничего постыдного в дауншифтинге.
В октябре на Сент-AppsConf Сергей Боиштян будет рассказывать о вашем видении CI/CD. Также будут отчеты о процессах, soft skills и всем таком, как мы обещали.Теги: #Разработка мобильных приложений #Управление разработкой #Управление проектами #teamlead #development #appsconf #appscastНапример, Владимир Иванов планирует обсуждать проблемы отрасли и расскажите, чем каждый из нас может помочь.
-
Иконочные Шрифты Для Мобильных Устройств
19 Oct, 24 -
Шоу Блыща И Стельмаха
19 Oct, 24 -
Какой Ты, Macbook Air 13,3″ 2013 Г.?
19 Oct, 24 -
Мышление В Худшем Случае
19 Oct, 24 -
Что Тормозит Развитие Фриланса?
19 Oct, 24