Привет! Я Саша Ворожищев, руководитель направления Flutter/iOS в AGIMA. Сейчас у нас в компании мир и покой, но мы еще помним времена, когда проджекты и тимлиды постоянно ссорились. Ссорились, само собой, из-за работы: каждый хотел доминировать на проекте и по-своему понимал задачи. Иногда к решению конфликтов подключались буквально все — вплоть до топ-руководителей. В итоге мы придумали, как не допускать таких стычек. И я расскажу об этом подробно.
Кто эти люди и что им делить
Вы точно знаете, чем занимаются проджект и тимлид, но давайте синхронизируемся. Это важно, потому что в разных компаниях эти роли понимают по-разному. Вот как их видим мы.
Проджект-менеджер (Project Manager). Отвечает за планирование и организацию процесса. Его цель — реализовать проект за определенный срок и уложиться в определенный бюджет. Он управляет ресурсами, ставит задачи и приоритеты, работает с заказчиком. ПМ владеет навыками управления рисками и конфликтами.
Тимлид разработки (Team Lead). Он отвечает за разработчиков, направляет общие усилия в нужное русло. Тимлид отвечает за развитие команды, за стандарты разработки и архитектурную целостность продукта. Должен обладать высокими техническими навыками и помогать разработчикам решать задачи.
Главное сходство между ними: тот и другой управляют проектом. Главная разница: ПМ сосредоточен на проекте в целом, тимлид — на технической части. Обычно они работают в тандеме: вместе планируют сроки, вместе нанимают специалистов. И именно здесь плодородная почва для конфликта.
Чтобы не быть голословными, мы провели небольшое исследование. Это были опросы среди подписчиков наших телеграм-каналов для разработчиков и проджектов. Оказалось, что конфликты бывают примерно на трети проектов.
Разберем, почему они возникают, на конкретных примерах.
Кейс №1. Тимлид и проджект по-разному видят цели проекта
Срок сдачи проекта уже подходит. Заказчик давить на менеджера: хочет выкатить проект к определенной дате. Менеджер торопит команду, чтобы не нарушить обязательства. За неделю до релиза тимлид говорит: «У нас код так себе, нужен рефакторинг». Менеджер с ним спорит, времени нет. Но тимлид стоит на своем: отдавать проект со слабым кодом — плохая идея.
Как работать с проблемой:
✔️ Найти компромисс. Например, оба могут признать, что есть важная часть кода, которую нужно обернуть в Unit-тесты, а есть типовые блоки, которые не требуют тщательной проработки.
✔️ Разделить обязанности. Каждый сосредоточится на своих обязанностях и не будет мешать другому. Например, проджект займется планированием и контролем основных задач, а тимлид — качеством работы.
✔️ Перераспределить ресурсы. Ресурсы можно изначально распределить так, чтобы удовлетворить всех. Например, если качество кода — главный приоритет для тимлида, то лучше сразу выделить больше ресурсов на тестирование.
Тут важно, чтобы оба человека слышали друг друга и были настроены на диалог. Если один спокойно и с аргументами объяснит свою позицию другому, они точно найдут компромисс. А чтобы избежать подобных конфликтов в будущем, проджект и тимлид могут работать над коммуникацией с самого начала: проговорить цели каждого, обязанности и место в команде.
Кейс №2. Тимлид и проджект не могут решить, кто главнее
Был у меня в практике случай, когда на одном из проектов проджект пытался руководить тимлидом. Причем это было новое направление в компании, у которого не было бэкграунда. Сначала это привело к конфликтам, тимлид пытался отвоевать пальму первенства. Потом он понял, что проджект ничего не понимает в разработке и начал вешать ему лапшу на уши: растягивал сроки и писал некачественный код.
Многое на проекте зависит от стиля лидерства. В этом случае проблема была как раз в том, что ребята пытались управлять по-разному. Наш CTO Андрей Непряхин недавно написал о стилях лидерства подробную статью. Пересказывать ее не буду. Напомню только, что стилей 4: диктатор, формалист, либерал, демократ.
Если отношения руководителей не складываются из-за разных стилей лидерства, можно попробовать такие способы.
✔️ Обсудить различия в стиле лидерства. Руководители могут выбрать тот стиль, который соответствует интересам проекта. Можно использовать методы анализа конфликтов, такие как техника «Взвешенного среднего» или метод «Четыре столпа».
✔️ Найти компромисс. Если руководители не могут найти общий язык, можно попытаться найти компромисс, который бы учитывал интересы обоих руководителей.
✔️ Назначить нейтрального посредника. Посредник поможет решить разногласия и наладить работу. Это может быть внешний консультант или управленец, у которого достаточно опыта, чтобы помочь руководителям найти общий язык.
✔️ Разделить роли и обязанности. Разделить обязанности имеет смысл таким образом, чтобы каждый из руководителей занимался задачами, которые соответствуют его стилю лидерства и компетенциям.
Кейс №3. У проджекта и тимлида разное отношение к планированию
На моей памяти бывали разные случаи. Вот один из них. Менеджер был готов писать тимлиду и разработчикам каждый день. Спрашивал, как дела с задачами и прочее. Если что-то шло не по плану, сразу эскалировал. При этом тимлид взял задачу, оценил на 12 часов и пропал, не отвечал менеджеру. Задачу сделал в срок, но пока делал, ситуация разрослась. В итоге получился конфликт.
К счастью, такие конфликты легко предотвратить. Важно изначально договориться, как часто разработчики будут давать рассказывать о статусе задачи. Например, каждый день на дейли.
Кейс №4. Проджект и тимлид по-разному оценивают риски
Проджект-менеджер может считать, что время на риски можно закладывать небольшое, так как проект не сложный. В то же время тимлид может считать, что время на риски нужно увеличить, так как есть сложные нюансы в архитектуре. Это может привести к разногласиям о том, какие сроки установить и какими методами управления рисками.
Такой конфликт может привести к неправильному определению приоритетов и управлению ресурсами. Тогда это затронет весь проект и может вызвать недовольство в команде. Ошибка в оценке рисков может привести к увеличению сроков, перерасходам или даже к сбою в работе проекта.
Для решения конфликта нужно детально проанализировать риски и оценить их с командой. После этого нужно всем вместе обсудить, какие методы управления рисками использовать и какие из них должны быть управляемыми.
Кейс №5. Изначально проблемный проект
Есть безнадежный проект, на котором сроки уже почти сорваны. За пару недель до дедлайна топ-менеджмент решает привлечь нового руководителя проекта или тимлида, чтобы он «разрулил» ситуацию. Этот человек понимает, что в этой кризисной ситуации «волшебной таблетки» не существует. Причина может быть любая: плохо выстроенный процесс, изначально неверная оценка, нехватка рабочих рук. Вариантов очень много.
Тут нужно понимать, что к новому руководителю приковано внимание руководства. Значит, и ожидания высокие. Чувствуя такую ответственности, проджект/тимлид начинает давить на вторую сторону. Конфликты неизбежны, как минимум поначалу.
В этом случае проджект/тимлид должен сосредоточиться на следующих моментах:
✔️ Понять ситуацию. Разобраться в причинах, понять, какие меры помогут эти причины устранить. Проджект/тимлид должен провести анализ проекта и выявить проблемные области, чтобы разработать стратегию работы.
✔️ Установить приоритеты. Лучше сосредоточиться на задачах, которые имеют наибольшую значимость для проекта.
✔️ Общаться. Проджект должен строить открытую коммуникацию с командой проекта и заказчиком. Процесс должен быть прозрачным, чтобы все видели прогресс проекта и его проблемы.
✔️ Руководить командой. Тимлид должен убедиться, что каждый член команды понимает свою роль в проекте и знает, что от него требуется. Он должен мотивировать и поддерживать команду, чтобы достичь целей.
✔️ Проявлять гибкость. Проджект/тимлид должен быть гибким и готовым менять стратегию, если текущая не работает.
✔️ Управлять рисками. Проджект/тимлид должны определить риски, каждый со своей стороны, и разработать стратегию для управления ими. Нужно сразу наметить план действий, если ситуация пойдет по негативному сценарию.
✔️ Установить реалистичные ожидания. Проджект/тимлид должны определить, чего реально достичь в оставшееся время. Заказчик должен понимать, что проект можно завершить только в определенных параметрах и с учетом рисков.
Итого: основные причины конфликтов
Человеческий фактор.
Разные характеры, неумение уступать или искать компромиссы, сложности со софт-скиллами и прочее. Как правило, со временем, благодаря тимбилдингам и ретро, отношения устаканиваются. Здесь же перегруженность тимлида или проджекта — это нужно решать с руководством.Разные подходы и методики работы.
Тимлид и проджект тянут одеяло на себя. Проджект пытается контролировать разработку, а тимлид — взять на себя больше организационной ответственности. Сюда же отнесем и сложности с согласованием сроков, понимания рабочих процессов и т. п.
Что помогает решать конфликты
Во-первых, нужно развивать взаимопонимание. В этом помогут хард- и софт-скиллы. Причем зачастую тимлиду нужно развивать софты, а проджекту — харды. О тимлиде, его качествах и умениях мы рассказывали в этой статье.
Очевидно, что проджект должен понимать базовую логику работы продукта. Иначе он просто не сможет выстраивать процесс разработки и объяснять технические нюансы заказчику. Но и проверять кодовую базу он, конечно, тоже не должен.
Тимлиду пригодится умение общаться: с командой и с заказчиком. Еще один важный навык — тайм-менеджмент. Ему приходится распределить задачи по уровню срочности и иногда не на одном проекте.
Что на эту тему почитать проджекту:
Deadline. Роман об управлении проектами. Том ДеМарко.
Цель. Процесс непрерывного улучшения. Элияху М. Голдратт.
Искусство управления IT-проектами. Скотт Беркун.
Что на эту тему почитать тимлиду:
Как пасти котов. Наставление для программистов, руководящих другими программистами. Рейнвотер Дж. Ханк.
Семь навыков высокоэффективных людей. Стивен Кови.
Практика лидерства. Питер Ф. Друкер.
Какой конфликт считать здоровым
Разберемся, что такое «адекватный конфликт» — это конфликт, при котором проект не страдает ни в финансовой части, ни в части качества кода. Что-то вроде конфликта интересов.
Рассмотрим самый распространенный случай. Что важно проджекту на проекте? Сделать его качественно и быстро. Он хочет, чтобы заказчик был доволен, и это правильно. В этом его основополагающая цель. Тимлиду важно правильно распределить ресурсы, оптимизировать их работу и нагрузку, сделать качественные решения. Иногда ему нужно отвлечь сотрудника от рабочего процесса, чтобы тот не выгорал. Нужно подумать, в какой релиз попадет задача.
Всё это можно решить с помощью старого доброго общения. Если они вместе обсудят проблемы, сделают оценку задач, распределят их, то найдут компромисс. Суть такого конфликта — в системе, которую можно сравнить с системой сдержек и противовесов.
Когда эскалировать конфликт руководству
Когда конфликт влияет на бюджет или сроки проекта. Например, если тимлид отказывается работать с менеджером — это явно серьезная проблема.
Когда конфликт влияет на качество работы. Например, если менеджер не согласен с решениями тимлида и это приводит к переработкам и выгоранию команды.
Когда конфликт между менеджером и тимлидом влияет на команду. Например, если из-за конфликта члены команды не знают, какие задачи им брать и кто за них отвечает.
Когда конфликт невозможно решить на уровне команды. Например, если все разговоры на ретро и других встречах ни к чему не привели.
Если даже после эскалации решить вопрос не удается, лучше развести ребят по разным проектам. Ситуации бывают разные.
Подводим итоги: как не допустить конфликтов между тимлидом и проджект-менеджером
Установить ясные роли и обязанности. Проджект и тимлид должны понимать, какие задачи им предстоит выполнять и как их работа взаимосвязана друг с другом.
Определить ясные цели и ожидания. При определении целей проекта и ролей проджекту и тимлиду необходимо ясно определить ожидания руководства и заказчика, а также предупредить об опасностях и рисках, связанных с проектом.
Создать коммуникационный план. Необходимо разработать план коммуникации, который определит частоту и формат взаимодействия между менеджером и тимлидом. Этот план должен учитывать разные каналы связи и быть связанным с целями проекта.
Определить и настроить процессы управления проектом. Нужно определить единый процесс управления проектом, который поможет понять, как они должны работать вместе, чтобы достичь общих целей.
Создать сплоченную команду. Создайте атмосферу доверия и взаимопонимания в команде, чтобы каждый участник мог высказывать свои мысли и мнение, и был готов помочь друг другу при возникновении проблем.
Регулярно обновлять статус текущих планов и этапов. Конфликты могут возникать, когда что-то в проекте неожиданно меняется. Регулярно срезайтесь и актуализируйте данные.
Расскажите, как обстоят дела у вас. Тимлид и проджект ругаются? Или в основном они лучшие друзья? И если есть проблемы, как вы их решаете?
А еще подписывайтесь на телеграм-канал AGIMA Dev. Вообще мы там рассказывает о разработке, но иногда и об управлении разработкой. И вообще давайте больше общаться — так что жду вас в тг.
Что еще почитать про управление разработкой:
Комментарии (13)
Yuri_nedre
14.08.2023 18:21Надо начинать с четкого разделения обязаностей, ответственности и полномочий. Хотя бы простая RACI матрица, которая со всеми сторонами согласованна.
ruomserg
14.08.2023 18:21Это может как помочь, так и навредить. RACI-матрица является хорошим инструментом анализа или проектирования коммуникаций — но она точно не является инструментом разрешения конфликтов. Потому что в жизни полномочия сторон не лимитируются буквами в матрице. Есть ресурсные взаимосвязи, есть внешние ограничения которые персонифицируются человеком на конкретной должности… Понятно, что если все хватаются за любой рычаг и крутят любую ручку — это плохо, и оно так не заработает. Но с другой стороны, от чрезмерного разграничения полномочий и закрепления ответственности — лучше не становится. Ну да, у любой стороны после этого четкого закрепления появляются железные аргументы почему они делают так, а не иначе. Но проект от этого железного стояния никуда двигается (или двигается на горизонтальных связях которые игнорирует матрица RACI).
Yuri_nedre
14.08.2023 18:21Сори, но не согласен. Любые правила, в том числе и кто за что отвечает - должны быть зафиксированны. Отсутствие таких фиксаций и ведет к конфликтам, так как каждый решает, что это его право/привелегия/обязаность/долг принять решение.
На примере, который описан в статье: проджект говорит, что надо катить продукт на прод, а тимлид, что надо рефакторить. Из-за того, что непонятно, кто решает, едет ли релиз и возникает конфликт. А было бы зафиксированно, что (условно) ПМ принимает решение о выкатке релиза на продакшен, то вся ответственность на нём. Он должен выслушать аргументы тимлида на счет рефакторинга, взвесить риски и принять решение - катим или нет. Упадет прод - виноват и отвечать будет ПМ.ruomserg
14.08.2023 18:21Это довольно типичный для экс-СССР взгляд на проблему, где назначением ответственного история как-бы заканчивается. Как говорил Лазарь Моисеевич — у любой аварии есть фамилия, имя и должность.
Теперь давайте посмотрим на вопрос шире. Допустим, вы дали клеточке с надписью PM право решать, выкатывать релиз или нет. Как вы собираетесь искать людей в эту клеточку, чтобы они принимали безошибочные решения? Трагедия управленческой традиции экс-СССР заключается в безоговорочной уверенности что назначенные решать люди — обладают сакральным знанием и сверхспособностями только потому что их назначили ответственными. В то время, как в реальности этого не наблюдается.
Следующий момент — допустим, выкатили релиз в прод под ответственность PM, а он упал. Можете сколько угодно делать ответственным PM, но он сам релиз не поднимет и не откатит — это должна делать команда. И тогда в чем скакральный смысл делать PM ответственным за выкат релиза — если реальную ответственность (в смысле устранять последствия, а не получить выговор на бумажке или снятие с должности) несет не он ?
Я настаиваю, что в случае конфликта катить на прод или рефакторить — спасает только кросс-тренинг и наличие общей целевой установки: предприятие должно жить и кормить сотрудников. Тогда есть какие-то шансы что вопрос будет решен в интересах дела (и придется принимать дополнительные обязательсва как менеджменту так и команде). Любые "жесткие" закрепления ответственности тут скорее выльются в прикрытие задниц и проигрышу всех разом из-за неудачного завершения проекта.
WizAlx Автор
14.08.2023 18:21Все еще зависит от стилей управления одного и второго + взаимодействия с заказчиком. Регламенты, которые четко разделяют роли должны быть, но, кмк, на каждом из проектов и ПМ и ТЛ должны в тч проявлять гибкость, но только, если эта гибкость будет согласована между ними.
Yuri_nedre
14.08.2023 18:21Вы слишком утрируете кейс.
Если ПМу сказал Тимлид, что надо рефакторить, а то упадем. Но ПМ его не послушал и все упало - ПМ дурак, ему говорили, не слушал. Если не научится на этой ошибке - гнать такого ПМа в шею.
А может ПМ принял решение катится, так как сроки дико поджимали и был риск потерять ключевого клиента и риск вылететь всей компании в трубу. И после выкатки было все ок, так как тимлид перфекционист (и ПМ это понимал) и просто хотел сделать 25-й рефакторинг и так нормального кода (тут уже гнать такого лида :)Принимать решение о выкатке, естественно, надо компетентному человеку. Конечно, тот кто принимает решение должен обладать многими скилами, как с технической стороны, так и процессной и бизнесовой.
В реальной ситуации, без ответственного человека, всё это работает в утопическом Скраме самоорганизованной команды. А реальности (я такое видел), когда ПМ и Маркетинг говорили, что надо катить скорее, QA лид просил провести очередной регресс, тимлид хотел переписать очередную библиотеку, дизайнер изменить фронт на более классный, в результате ничего никуда не ехало и клиент рвал и метал, так как не понятно было, кто за что отвечает и все давили своим авторитетом и что записано у них в должностной инструкции.
ruomserg
14.08.2023 18:21+1Проблема заключается в том, что в вашей технологии управления — кого выгнать, а кого нет — это пост-знание. Оно появляется тогда, когда событие уже случилось (или наоборот, не случилось). Допустим в конкретном случае решили что лид перестраховался и его выгнали. Как вы собираетесь искать нового человека под должность лида, и как вы собираетесь гарантировать что он будет принимать правильные решения? "Перебдеть в обратную сторону" очень легко. Забиваем на рефактор, удовлетворяем желания PM. Потом код начинает разваливаться — техдолг и все такое. Снова уволим лида? Но код-то от этого лучше не станет!
Я не понимаю, почему в советских управленческих кейсах мораль истории заканчивается на том, что кого-то уволили (в зависимости от эпохи, вариант — расстреляли). Ну хорошо, для уволенного она закончилась — но для предприятия-то нет! Теперь надо откуда-то брать ресурсы и людей, чтобы исправлять проблемы...
В этом смысле я не идеализирую западную методологию с ее культом команды и постоянными совещаниями. Но она четко понимает, что нельзя замыкать решения на одном человеке просто потому что его потом можно уволить: человек уйдет, проблемы останутся. Там делается упор на методологию, которая позволит НЕ совершать ошибок и использовать для принятия решения экспертизу всей команды.
Yuri_nedre
14.08.2023 18:21вы опять очень близко примеряете выдуманный кейс к реальности.
И ПМ, который не слушает советов и в одиночку решает катиться на прод, и тимлид, который делает 25-й рефакторинг, до своих должностей просто не дойдут в нормальных адекватных компаниях.
Такие проблемы не появляются из ничего, всегда есть более мелкие предпосылки, которые отсеивают некомпетентных людей.ruomserg
14.08.2023 18:21Это был бы хороший ответ, если бы как во времена СССР примерно большинство начинали с должности рабочего, и постепенно двигались наверх. По факту, на рынке ИТ уже который год дефицит высококвалифицированных кадров. Предложите методику, как с рынка нанимать PM и Lead которые бы занимали позиции "под личную ответственность" и принимали бы правильные решения ?
Batalmv
14.08.2023 18:21Мне кажется в статье сразу чуток неверно выставлены акценты. Начнем с ответственности. ПМ отвечает за проект в целом. За все. Бюджет, риски, сроки, качество ... за любой фейл ПМ может получить втык. И поэтому, так как отвечает за все - он главный.
Тимлид - один из многих. Ну реально. В проекте может быть архитектор, куча аналитиков, тестировшики со своим лидом, девопс, заказчик, еще 5 людей, которые мнение имеют и хрен их объедешь (безопасность, юристы, другие подразделения), спонсоры. ПМ общается со всем этим кагалом или иногда делегирует кому то.
Тимлид отвечает за "производство" на своем участке. В проекте может быть еще 5 тимлидов, к примеру. Или 10, из них три - это внешние конторы за реальные бабки. Никаким проектом он не управляет :). Исключение - мини-проекты на одну команду.
Это важно, потому на одной доске они могут стоять только в чем-то маленьком и малоинтересном :)
Чтобы понять, откуда могут быть конфликты, надо понять что кому надо. Тут все в реале просто. Тимдид возглавляет команду, которая дает оценки и закрывает тикеты, делая изменения в коде. Для ПМа причина конфликта может быть либо в срыве сроков, либо в плохом качестве решения (большое число багов, переоткрывающиеся баги, ...). Тут человечество вроде как нашло способ. Делаем root cause анализ и после локализации исправляем. Иногда вплоть до выбрасывания кого-то за борт. Насколько ПМ может выполнить и/или делегировать эту задачу зависит от его квалификации.
В обратную сторону ... а с чего. ПМ не репортит лиду от слова совсем. Сорян, не по чину и позиции :)
Теперь по примерам.
Первый. Если у вас в последнюю неделю выяснилось, что есть куча рефакторинга, вопрос один - у почему до того это не озвучено? Это чисто для понимания, что кризис начался намного раньше. За неделю ясен пень можно сделать немного. Поэтому либо закругляемся, и молимся чтобы прокатило, либо просим сдвинуть сроки. Чего тут еще? Потом можно полученный пендаль поделить на всех
Второе. Главнее ПМ. Точка. Но лид может иметь вес в организации, поэтому это проблема ПМ в данном случае. Как в паре режиссер-главный актер. Отношения строим сразу и до конца проекта. Можно и иногда нужно для начала конкретно посраться. Если лид не "звезда" - смотри первое предложение.
Третье. Они планируют разные работы. Если потом оценки тимлида сильно отличаются от реальности - разбираемся. Возможно неверно оценен весь прлект, кртвая архитектура или слабый агалитик. Надо искать причину. А конфликта тут в целом нет вообще. Либо ПМ слабо понимает, что такое планирование проекта.
Четвертое. Риски все на ПМ. Но по каждому риску он обращается к экспертам. ПМ не эксперт и не его задача спорить с экспертами. Сорян, тут не конфликта. ПМ не должен на себя брать функции эксперта. Это не его зона ответственности
Пятое. Вообще нет причин для конфликта. Спокойно учимся, набираемся опыта и всего, чего можна унести. В конце либо надо свинтить, если проект мертвый. Потому что если ПМ делает мертвый проект - он идиот :) Если не мертвый - ну так берем и делаем
P.S. В целом ощущение, что автор имеет опыт работы в мини проектах. И только :(
ruomserg
Я бы еще сказал что на таком уровне становится необходим кросс-тренинг. Невозможно жить устойчиво в ситуации, когда PM/деливери тянет одеяло в одну сторону, а техлид/тимлид в другую. Заставляйте менеджерскую и техническую сторону читать не только свои книжки, но и книжки друг друга. Лид должен понимать ограничения внешней среды, которые персонифицируются в проекте его ПМ-ом. Проджект должен понимать технические и организационные ограничения, которые персонифицирует тимлид. Плюс должна быть открытая и честная обстановка на проекте. Если менеджмент хочет отманипулировать лидом, не раскрывая причин желаемых изменений, или наоборот — лид хочет манипулировать менеджером скрывая проблемы в команде или в процессе — это ни к чему хорошему не приводит.
В операционной есть хирург, и есть анастезиолог-реаниматолог. Они отвечают за разные части процесса, но жизненно (для пациента!) важно, чтобы они имели одно и то же базовое видение того, чем они заняты — и понимали проблемы и сложности друг-друга.
В ведении проекта — ровно то же самое: обеспечивайте общее базовое образование и понимание проектной деятельности, убирайте стимулы и KPI которые стимулируют перепихивание ответственности, заставляйте лидов участвовать (хотя бы слушать) решение бизнесовых вопросов, а менеджеров разработки — аналогично в технических. Это не быстрый процесс, но постепенно ситуация должна улучшаться...
WizAlx Автор
Да, все верно тут написано. У нас есть практика обмена опытом между PM и TL. Они не просто учат друг друга, но и, действительно, становятся единым центром управления с пониманием подкапотной деятельности - перехода от "что от меня просят" к "почему меня просят"