Привет! Меня зовут Виталий, я фронтенд-тимлид в KTS. Рассказываю, что входит в нашей компании в обязанности тимлида, а что — нет. Спойлер: это не расставление задач в таск-трекере.
Зоны ответственности тимлида отличаются от компании к компании и от проекта к проекту. Иногда позиция включает в себя менеджерскую работу, иногда нет. Бывает так, что должность тимлида совсем отсутствует в компании — есть только менеджеры.
Мы выстроили свою схему разделения обязанностей между тимлидами, менеджерами и аналитиками. Она позволяет снять с тимлидов менеджерскую работу, для которой не нужно обладать глубокими техническими знаниями, но нужно часто переключаться между разными задачами и сотрудниками. Это даёт возможность тимлидам работать над теми задачами, которые и отличают их от менеджеров, — с технической частью проекта. Рассказываем, как мы реализовали эту схему для компании из 80 сотрудников.
Кто ставит задачи
Выясняют требования к конечному продукту и формализуют задачи у нас менеджеры. Если задача большая, то подключаются аналитики. Декомпозицией тоже занимаются аналитики и менеджеры. Например, в веб-разработке они могут сами разбить её до уровня вёрстки и прикрутки к API одного экрана или одного блока в рамках экрана, реализации определенного метода API.
Роль тимлида
Несмотря на то что тимлид не формализует и не декомпозирует задачи, на практике он валидирует предложенные постановки. Его цель — проконтролировать, что декомпозиция проведена эффективно, а описания задач годятся для разработки. Также в зону ответственности тимлида входит выявление сложных и нетиповых для декомпозиции задач. Он должен заранее предвидеть проблему и предложить, например, звонок, где он с менеджером прояснит детали задачи, или дополнительную декомпозицию.
Аналитики и менеджеры дообучаются с помощью своевременной помощи тимлида. В следующий раз, когда им встретится похожая задача, они уже будут знать оптимальный способ её декомпозировать. Тимлид здесь берёт на себя не просто операционные задачи, а развивает сотрудников. Команда, где задачи разработчикам ставятся без участия тимлида, может существовать, но менее эффективно.
Кто распределяет задачи между разработчиками
Менеджер может базово распределять задачи среди разработчиков, руководствуясь тремя критериями: загрузкой сотрудников, важностью задачи и соответствием её сложности навыкам разработчиков.
Тимлид же делает следующее
Распределяет задачи для достижения краткосрочной и долгосрочной эффективности, развития команды. Он сильнее погружён в подробности разработки и особенности устройства модулей системы. Это позволяет тимлидy распределять задачи между сотрудниками так, чтобы плавно развивать их компетенции. Например, он может дать задачу разработчику без релевантного опыта, чтобы тот научился справляться с похожими задачами.
Равномерно распределяет знания в команде. Он должен развивать свою команду так, чтобы на проекте не было незаменимых сотрудников. Тимлид отслеживает, когда все знания команды сосредотачиваются в одном разработчике и перераспределяет задачи, чтобы эти знания распространялись на остальных. Также он следит, чтобы задачи эффективно выполнялись. Например, если дедлайн по задаче близко, то он может подключить других сотрудников к ее выполнению или передать задачу более опытному разработчику.
Мониторит, справляются ли сотрудники с задачами. Например, недавно тимлид одной из наших команд предложил переставить разработчика на другой проект. Со стороны менеджеров не было заметно, что что-то идёт не так: сотрудник укладывался в сроки. Но тимлид заметил, что код разработчика получает много комментариев во время код-ревью. Дальше задачи бы стали сложнее, поэтому возникла бы проблема, которая повлияет на работу всех сотрудников. Тимлид позвал другого разработчика, который в итоге отлично справился с задачей.
Кто проводит код-ревью
Код-ревью на проекте — обязательная часть нашего технического процесса, без него ни один коммит не уходит в продакшн. Это позволяет обеспечивать заменяемость сотрудников, единые архитектурные подходы и стиль кода, контролировать качество. Подробнее про код-ревью мы рассказали в этой статье.
Роль тимлида
В командах, где больше 3 разработчиков, мы сознательно уходим от ревью тимлидом всех задач. Он проводит код-ревью только сложных, ответственных и больших задач, касающихся сложных модулей проекта. Остальные проверяются с помощью кросс-ревью. Однако тимлид должен выборочно просматривать задачи любой сложности и важности, чтобы оставаться в контексте всех частей проекта.
Кто разруливает проблемы
Менеджер смотрит на разработку со стороны и видит только внешние показатели: скорость выполнения задач, соответствие оценок и затрат, количество циклов ревью и тестирования. Для него всё, что происходит внутри колонок «в работе» и «код ревью», — чёрный ящик. В него заходит задача и выходит результат.
Если в разработке возникают проблемы, менеджер не всегда в них разберётся. Например, третий спринт подряд команда не успевает выпустить релиз к концу спринта. На вопрос команде «почему так происходит», он услышит лишь общие слова про сложность задач или их объём. Единственное, что остаётся менеджеру, — попросить разработчиков быть внимательнее к своим оценкам. Тимлид видит все процесс разработки изнутри, понимает его и может повлиять. Он может увидеть глубинную причину срыва дедлайнов — например, какой-то костыль, который каждый раз приходится обходить при модификации одного модуля.
Также тимлид должен делать «чёрный ящик» разработки серым для менеджеров и аналитиков: пояснять, что может быть усложняющим фактором в создании продукта, предупреждать о возможных проблемах. Это позволяет менеджерам обучаться, распознавать эти сложности и точнее определять сроки выполнения проекта в дальнейшем. Например, тимлид может указать на связь с определёнными модулями, сложную архитектуру или причины использования той или иной технологии.
Что будет, если снять менеджерские задачи с тимлида
Снятие менеджерских обязанностей с тимлида ощутимо помогает улучшить работу команды. Высвобождение времени даёт возможность ему следить за архитектурой проекта. Поскольку архитектурные задачи требуют глубоких технических знаний, они не могут быть делегированы. Тимлид валидирует ключевые технические решения и предлагает более эффективные способы построения архитектуры.
Освобождение ресурсов также позволяет и менеджеру, и тимлиду вести по два проекта. Однако эта схема работает, только если обязанности между этими сотрудниками разделены согласно их сильным сторонам.
Не стоит забывать про объём внимания: редко человек может контролировать больше шести объектов одновременно. Здесь можно провести параллель и с управлением командой: чем больше команда, тем сложнее ей управлять. Когда в команде больше шести человек, управлять ей становится слишком сложно. Поэтому большие команды стоит дробить: в каждой из них нужен свой лид. Для текущего тимлида такое разбиение может стать хорошей точкой для перехода на следующий уровень управления. Он начинает руководить не просто разработчиками, а тимлидами.
Резюме
Тимлид в нашей компании занимается стратегическими вопросами: развивает команду, улучшает процессы изнутри и контролирует техническую часть.
Менеджер, аналитик и тестировщик ответственны за операционную часть: выявление требований, формализацию и декомпозицию задач, проверку качества выполненной задачи.
Комментарии (9)
vasyapivo
06.01.2023 12:02-1Сколько компаний, столько вариантов понимания кто такой тимлид.
То что я вижу, тимлид - это что-то вроде локального HR на команду: время считает, на счёт отпуска договаривается, пьянку организовать - это совершенно не техническая роль и отвечает за команду.
За задачи отвечает Product owner, за ревью и прочие технические вещи техлид.Kragius
06.01.2023 13:20+1Вот уж точно, у каждого свое понимание - у нас всем этим занимается менеджер, а тимлид у нас техлид по вашему. Да и в литературе часто пишут тимлид/техлид - видимо никто точно не знает как их называть.
VitalyCherkov Автор
06.01.2023 15:01Здравствуйте! В нашем случае тимлид ближе к технической составляющей, как упоминал @Kragius: отпуска и организация пьянок — точно не его обязанность в KTS ????
ruomserg
06.01.2023 22:53+3Я в последнее время все чаще задумываюсь — а правильно ли мы идем, когда внешние люди (менеджеры, тимлиды) — декомпозируют задачи до уровня разработчиков? Не растим ли мы тем самым из разработчиков людей, которые думают только в пределах таска, который на них назначен?
Понятно, что зависит от уровня команды, но чем дальше тем больше — я склоняюсь к тому, что декомпозировать должна команда. Тимлид и менеджер должны организовать и поддерживать этот процесс. Как базовый принцип — я принял бы, что в разработке — каждый участник процесса на своем уровне обязан сам создать себе тикет, а руководитель должен его максимум согласовать (и то, по принципу «не возражает — значит согласен»). То есть, в терминах agile — pull, а не push задач. Тикет уровня N+1 для разработчиков на уровне N — является целью, а не руководством к действию. Уровень N по этому поводу делает себе один или несколько тикетов, которые являются шагами для достижения обозначенной цели, и эти шаги являются целью для уровня N-1. И так до тех пор, пока не дойдет до исполнителей. Иначе в системе слишком много ответственности наверху, слишком мало ума внизу, и непонятно как строить нормальную обратную связь для процесса разработки.
Я бы все-таки назначил на тимлида обязанности балансировать и развивать команду, организовывать решение технических вопросов, а главное — тимлид является своим собственным «резервом главного командования». Если где-то в команде затык (а сроки никто не отменял) — он подключается личным ресурсом и обеспечивает решение задачи без нарушения общего рабочего ритма. Кроме того, на нем же, скорее всего будет лежать всякая нетривиальная работа типа проверки новых концепций и гипотез (на уровне реализации, а не всего продукта) — то есть там, где проще договориться с самим собой внутри головы, чем тратить время на коммуникацию еще неоформленной и смутной идеи до других членов команды…
olku
06.01.2023 23:25Уже появились отличия тимлидов и техлидов в вакансиях, особенно в компаниях покрупнее.
barloc
07.01.2023 18:39Вообще непонятно зачем нужен тимлид при менеджере, или менеджер при тимлиде? Размытые зоны ответственности, непонятные регалии, на ровном месте появляется 2 уровня иерархии. Зачем?
dimitrii_z
Спасибо за пример организации работы вашей команды, даже если подход не совпадает с читательским, узнать другую логику всегда интересно.
Но есть пара вопросов, не затронутых или слабо затронутых по тексту:
компания небольшая (80 чел.), среди них и бухгалтерия и прочие, то есть сама техническая команда (с учётом что команд тоже явно несколько) - наверняка буквально несколько человек. Зачем для такого небольшого числа отдельный менеджер, частично покрывающий задачи тимлида? Распределять задачи с учётом нагрузки в такой небольшой команде может и сам тимлид, и он как один человек очевидно будет больше в курсе кто как что "тянет" чем менеджер.
вы приводите пример плюса в том, что менеджер и тимлид с учётом разделения задач могут вести параллельно несколько проектов. Вы сами используете такой подход?
есть очень некрасивый приём из жёлтой журналистики: подзаголовок "Кто проводит код-ревью" и нет ответа в тексте, вместо этого идёт ссылка на другую статью. Можно было бы дать ответ, а потом написать "подробнее процесс код-ревью рассмотрен там-то".
VitalyCherkov Автор
Здравствуйте! Отвечаю на вопросы:
1. На самом деле, у нас довольно большая техническая команда — больше 50 технических специалистов (разработчики, DevOps, QA), в двух крупных юнитах больше чем по 20 разработчиков. Команды в частности тоже могут быть крупными: на некоторых проектах в пике может быть задействовано до 30 человек (это вместе с менеджментом, дизайном, аналитикой и пр.) В общем, менеджеры действительно нам нужны и они очень спасают. Возможно, это еще и следствие специфики заказной разработки, где очень много коммуникации с заказчиком, интеграций и пр. — менеджер значительно снижает нагрузку на тимлида. Так же и задач на проекте в день может возникать десятки. Если требования поступают через тимлида, то завести задачу самостоятельно даже эффективнее. Например, если что-то супер срочное и важное, то быстрее завести самому и затем оповестить менеджера о новых планах. Но большая часть времени работы следуют плану, поэтому удобно, когда за ним следит менеджер. Конечно, в любой момент можно пригласить тимлида и консультироваться с ним. При этом, существуют дейли, общие планирования, проектирования и другие встречи, благодаря которым тимлид остается в контексте.
2. Да, по своему примеру могу сказать, что некоторые лиды ведут по несколько проектов. Я в течение последнего года вел два проекта с абсолютно разными контекстами. В целом, получалось довольно эффективно. Большую часть времени удается уделять время равномерно, параллельно выращивая из непосредственных разработчиков тоже лидов (команды собираются специально так, чтобы у сотрудников был потенциал роста). В пиковые моменты, например, когда один из проектов проходит важный релиз / демо, больше внимания уделяется одному из них. Но долгосрочно это норм, если система поставлена и работает, дисбаланс не возникат.
3. Коротко про код-ревью описал в следующем же абзаце. Продублирую:
«В командах, где больше 3 разработчиков, мы сознательно уходим от ревью тимлидом всех задач. Он проводит код-ревью только сложных, ответственных и больших задач, касающихся сложных модулей проекта. Остальные проверяются с помощью кросс-ревью. Однако тимлид должен выборочно просматривать задачи любой сложности и важности, чтобы оставаться в контексте всех частей проекта.»
barloc
Ужасно, ужасно, команда из 30 человек. Неужели такая заливка ресурсами хоть что-то ускоряет? Ещё брукс 30 лет назад писал, что не стоит так жестить, смысла никакого нет.