К основному содержимому
к презентации
Конспект выступления2021CTO

SOLID'ный тимлид

Сильный разработчик нередко становится тимлидом раньше, чем успевает освоить управление людьми. Доклад предлагает знакомый инженеру язык — принципы ООП и SOLID — для обсуждения новой работы. Через эти аналогии Александр Поломодов разбирает устройство команды, распределение ролей и переход от подробных указаний к согласованным принципам принятия решений.

TeamLead Conf 20213 минуты

Конспект сокращён относительно исходного материала; примеры и оценки передают опыт и позицию автора.

Основная линия материала
01

Команда как понятный интерфейс для бизнеса

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

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

02

Цель команды и границы ролей

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

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

03

Коммуникации и самостоятельность вместо узкого места

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

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

Выводы

Что стоит унести с собой

  1. 01Понятный внешний интерфейс команды не означает, что руководитель обязан участвовать в каждом разговоре.
  2. 02Уровни и названия ролей должны описывать реальные обязанности: одинаковая должность не гарантирует взаимозаменяемость.
  3. 03Делегировать легче через заранее согласованные принципы и проверку результата, чем через пошаговые инструкции к каждой задаче.

Источники