1. Сепаратные тропы альфа-разрабов

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

Кроме шуток, кажется, такая команда это рай для разработки. Дай любую задачу - сделают топовое, уникальное решение и спросят что ещё доработать.

Вас, однако, пусть не вводит в заблуждение этот мнимый оазис разработки. Рай легко оборачивается адом. Альфа-разрабы часто зациклены на себе. Им сложно общаться, потому что у каждого есть окрепшая система убеждений.

Не просто так к этому разделу прилагается картинка из известного мема. Загадка: как по-вашему продолжится путь волков если представить что они - альфа-разрабы на топовом проекте без правильного руководства?

Остановит ли что-то настоящего альфа-волчару? И что будет, если каждый будет с мощными лапищами? Думаю, вы догадываетесь…

Войну не предотвратит и тропа протоптанная первым шерстяным лидером. Каждый будет ломиться сквозь снег в своём направлении.

2. Battle royale driven development

Не удивительно что вышедшие из-под контроля альфа-разрабы устраивают побоище в коде. Митинги они часто воспринимают как бессмысленное убийство времени. У каждого в голове - свой проект. У каждого чешутся руки попробовать сделать "так как надо". То есть, для каждого по-своему.

“Прекращайте” - скажите им - слушать не будут. Сущности в коде без единства в подходах плодятся не просто сверх надобности - прут через все дыры забыв про приличия. Дублирующиеся решения, архитектурные красоты, изыски замешанные на моднейших технологиях. Часть поделок приживается, часть остаётся уделом их создателей. Новые программисты, конечно, тоже альфа-разрабы (фирма-то топовая) - быстро устают разбираться где что принято использовать. Понимают по каким правилам здесь играют, расчехляют креатив-пушки и фигачат каждый своё-что-придётся.

Говорить с альфа разрабами также непросто. Это люди технической веры. Угукнут менеджеру, мол, “понял, принял” - и тихонько продолжат свою священную битву за красоту в коде.

О, и, конечно, самое обидное… Решение каждого в этой бойне - качественное и крепкое. Они ведь действительно хороши, чертяки. Люди с опытом и волей к действию. Если бы не бесконечная битва за Правду (которая у каждого своя) - проект стал бы лучшим в мире. Можно ли что-то с этим сделать?

Политике разнузданного креатива может положить конец лишь одно - разделяемый всей командой авторитет.

3. Вождь-техлид

Всеми альфа-разрабами может командовать технический вождь - разработчик, задающий маршрут которым будет следовать другие разработчики.

Силами своей экспертизы и авторитета технический лид может навести порядок в подходах к разработке. При этом хорошо если он практически не будет участвовать в разработке фичей. Его задача - задавать другим единую тропу развития кодовой базы.

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

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

Идеальный техлид должен обладать следующими качествами:

  1. Неоспоримый технический авторитет. Самое важное - качество. Нужно чтобы все альфа-разрабы до одного были согласны: это - лучший технический эксперт в команде.
    Да, к счастью, в айти не закон джунглей, здесь Акелле допустимо промахиваться. Но регулярных ошибок альфа-разрабы всё же не простят и организация посыпется. Начнутся игры в подполье с подколками техлида, непроговоренными презрением и обидами на техлида за неграмотные решения.

  2. Готовность брать на себя ответственность. Не выбирайте вождя, который не готов брать на себя ответственность и вести за собой команду.

  3. Готовность быть ментором. Хороший техлид 80% времени занимается преподаванием. Он может практически не писать прикладной код на проекте. Техлид как ДНК в клетке, определяет принципы разработки кода. Если техлид не готов терпеливо учить людей - это плохой техлид.
    Одно из ключевых мест использования менторского мастерства техлида это качественное ревью кода. Нет ничего лучше обучения на примерах. И нет примера лучше чем практические ситуации в живом коде.

  4. Умение говорить. Техлид должен уметь говорить так, чтобы все внимали его словам. Нельзя чтобы его постоянно перебивали, нельзя чтобы он замолкал под давлением обсуждений других альфа-разрабов. Он должен быть ведущим на встречах технической команды.
    Именно техлиду проговаривать финальные решения по результатам встреч: твёрдо и веско, и при этом с уважением к команде.

  5. Умение слышать. Как было сказано в прошлой статье, нельзя научиться говорить убедительно не научившись слышать. Техлид должен выслушать разные мнения и донести до высказывающих эти мнения людей своё понимание: плюсы и минусы их решений.

Вежливость. Техлид должен уметь благодарить и отмечать достижения. Вожак который лишь приказывает и раздаёт тумаки любим не будет.

4. Как выбрать техлида

Диктатура - не лучший способ управления разработкой. Техлид должен давать простор для действия команды, направляя её советами - но не навязывая решения лишь своим авторитетом.  Выберете слишком жёсткого в продавливании решений техлида - получите вместо порядка на проекте новой уровень битвы всех против всех: с антилидовым подпольем, подколками и затаёнными обидами.

Рухнет, с другой стороны, и та организация, в которой техлид займёт позицию ментора без воли и полномочий влиять на команду. Последнее слово в решении крупных технических вопросов должно быть именно за техлидом.

Свобода творчества, направляемая здравым смыслом техлида, как самого опытного разраба на проекте - лучшая политика.

Победит баланс между творчеством и порядком.

Советы по выбору техлида:

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

  2. Техлида проще выращивать из старожилов проекта. Экспертиза бывалых чуваков известна команде. Им не нужно доказывать свой авторитет.
    Будьте чутки к команде, не допустите ошибку в выборе.

  3. Если брать со стороны - вовлекайте команду в выбор. Предложите разрабам составить опросник для кандидата. Каких знаний они ждут от техлида? Пусть сами зададут планку знаний, которую считают достойной.
    Отберите вместе с авторитетным альфа-разрабом 20-30 вопросов и устройте кандидату марафон. Если посыпется на вопросах команды - значит потеряет в глазах команды авторитет.

  4. Вы очень вряд ли найдёте человека идеально совмещающего все необходимые компетенции на высоком уровне. Вам, как менеджерам, нужно будет оказывать поддержку техлиду по тем скиллам, которые у него не закрыты. Как правило, основные трудности возникают в коммуникативных навыках.

Не жадничайте с компенсационным пакетом для техлида. Высокая техническая экспертиза, умение брать на себя ответственность, способность совмещать уникальный набор умений - человек объединяющий столько разновекторных качеств должен получать достойные деньги.

5. Заключение

Техлиды, на первый взгляд, могут казаться бесполезными людьми. Такое ощущение возникает потому что они не настолько вовлечены в прикладную разработку как остальные программисты. Однако команда сильных и творческих индивидуальностей не будет работать как единое целое без техлида. Для эффективной разработки на любом проекте необходима магистральная тропа развития и тот, кто её задаёт. Нужен один человек, который сумеет донести свою мысль каждому альфа-волчаре и объединить заслуженным авторитетом все мощные лапищи.

Комментарии (17)


  1. Jorell
    00.00.0000 00:00

    Вождь разрабчьей стаи

    Это специально?


    1. xztau
      00.00.0000 00:00

      Так это ж мем:)


      1. huder
        00.00.0000 00:00

        Лид тащит команду волчар из стаи "накрутивших опыт"


    1. Tamerlan_Hajiyev
      00.00.0000 00:00

      Вожак разраволчьей стаи?


  1. shoorickus
    00.00.0000 00:00
    +6

    Я бы ещё добавил, что хороший "вождь-техлид" должен уметь быть посредником между командой "волчар" и бизнесом. С одной стороны отстаивать интересы разработчиков перед бизнесом (время на техдолг, исследование новых подходов, качество, которое сэкономит время на длинной дистанции). С другой – правильно расставлять приоритеты в разработке. Бизнесу не нужен красивый, качественный код сам по себе. Ему нужно регулярное, планируемое решение проблем пользователей, которые ему приносят прибыль.


    1. semenyakinVS Автор
      00.00.0000 00:00

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

      Моё мнение - чтобы техлид работал эффективно, он, всё-таки, должен быть в основном сосредоточен на построении технической работы команды, на формировании и поддержке магистрального направления разработки.

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


  1. event1
    00.00.0000 00:00
    +3

    Кроме шуток, кажется, такая команда это рай для разработки. Дай любую задачу - сделают топовое, уникальное решение и спросят что ещё доработать.

    Топовое и особенно уникальное решение — признак неопытного разработчика. Так делают крепкие джуны только с университетской скамьи. Опытный волчара сделает неуникальное тупое решение которое а) работает, б) легко сопровождать и в) не жалко выкинуть. И не заняло слишком много времени.


    1. semenyakinVS Автор
      00.00.0000 00:00
      +1

      Про то что решение должно быть простым - полностью согласен. С позиции опыта так же считаю что архитектурные замки ради архитектурных замков - чистое зло.

      Однако, выскажу возражение по одному моменту. Почему уникальность и топовость решения должны идти в конфликте с его работоспособностью и лёгкостью сопровождения? По опыту часто как раз максимально простое решение может оказаться топовым и уникальным - потому что программисты без опыта накрутили бы трёхэтажных абстракций. У опытного человека рука набита на "гениальную простоту".

      В дополнение также можно заметить - если говорить о так богатых в средствах выражения мысли языках как С++, часто красивые решения завязаны на знание языковых фич. Чуть менее известные языковые конструкции помогают сделать API (и его реализацию) более компактной и, при этом, дескриптивной - за счёт использования каких-то языковых конструкций. Углубленное знание языка приходит с опытом.


  1. chernish2
    00.00.0000 00:00

    Не могу на себя примерить ни альфу, ни волчару, ни стремление к уникальным топовым решениям. Слышать в команде только себя из-за того, что у меня есть устойчивая система своих убеждений считаю деструктивным моветоном. Очевидно, ярлык сильного разработчика не для меня, не смотря на более 10 лет опыта.


  1. involute
    00.00.0000 00:00

    А нормально, если лид совмещает функции разраба? Например, у меня была такая ситуация, когда лид совмещал бекэнд. Получается, у него не было не то что 80%, а даже 30% на обучение и менторство


    1. semenyakinVS Автор
      00.00.0000 00:00

      На мой идеалистический взгляд (описанный в статье) - если техлиду приходится тащить ещё и разработку, есть вероятность что он не будет успевать заниматься непосредственно "техлидовой" работой. Потому что в сильной команде на организацию, поддержание технического порядка и единства будет уходить много сил и времени.

      Например, в том идеальном варианте который описан в статье, техлид должен проводить сопровождение изменений - от проектирования до финального код-ревью. Уметь анализировать результат не на уровне "может назови переменную по-другому", а на уровне логики и дизайна - и по результату дать точные советы где чего доработать. Это само по себе будет отнимать прилично времени.


  1. tkutru
    00.00.0000 00:00
    +1

    Адекватным тру разрабам поводыри не нужны. Статья скорее про то, как по фен-шую организовать галеру с грейдами.


    1. semenyakinVS Автор
      00.00.0000 00:00
      -1

      Адекватным тру разрабам поводыри не нужны

      Возможно... Но мой некоторый опыт говорит об обратном - горящим своим делом, топовым девам которые живут программированием сложнее договориться чем равнодушным ремесленникам. Потому что каждый сильнее индивидуальность в разработке проявляет.


      1. tkutru
        00.00.0000 00:00

        Так вы мне и не противоречите. Куратор, переговорщик, "синхронизатор процессов" может быть полезен, выполняя скорее роль "смазки" для механизмов, но он совсем не поводырь и точно не "вождь разрабчьей стаи".


  1. iiopy4uk_mck
    00.00.0000 00:00

    Если брать со стороны - вовлекайте команду в выбор

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

    Вовлеките соседние команды например.


    1. semenyakinVS Автор
      00.00.0000 00:00

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

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

      Возможно, наблюдал скорее исключительные случаи.


  1. overpanda1
    00.00.0000 00:00

    плохая статья, смешали в одну кучу все обязанности: и техлида, и тимлида, и наставника. То, о чем Вы пишите в самом начале (разные подходы к написанию кода) обычно решается написанием регламента разработок, которого заставляют всех придерживаться.

    Пару раз встречал на проектах техлидов, но их обязанности в основном заключались, чтобы выбрать корректный стек, на котором все работают.

    Вникать в каждую проблему, одновременно всех убеждать и при этом как-то, чтобы 80 % времени оставалось на обучение - с трудом укладывается в 40-часовую рабочую неделю) Ну и это скорее относится к обязанностям тимлида