{"id":14291,"url":"\/distributions\/14291\/click?bit=1&hash=257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","hash":"257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","title":"\u0420\u0435\u043a\u043b\u0430\u043c\u0430 \u043d\u0430 Ozon \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043c \u043d\u0435 \u043f\u0440\u043e\u0434\u0430\u0451\u0442","buttonText":"","imageUuid":""}

Как делать проект восемь месяцев вместо двух. Вредные советы для менеджеров

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

Будет полезно начинающим менеджерам и тимлидам.

Что за проект

Проект был технический — хотели вынести модуль из большого монолита на PHP в отдельный сервис на Node.js. Мы не собирались его менять или рефакторить, нужно было только переписать на Node.js. Должны были сделать за пару месяцев.

Вредный совет №1. Не надо разбивать проект на этапы, если есть одна большая цель

Проект небольшой, в котором нужно просто переписать код с PHP на Node.js. Что тут разделять? У нас была одна понятная цель — релиз.

Эта ловушка загнала команду в дофаминовую яму.

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

Если бы мы разбили проект на более мелкие этапы, то лучше бы чувствовали прогресс и получали бы дофамин чаще.

Нужно было разбить проект на несколько этапов со своими целями, а не ставить одну большую цель на весь проект.

Вредный совет №2. Амбициозные цели на спринт мотивируют сделать больше

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

Спринт 1. Запустить форму на тестовых сборках — не сделали.

Спринт 2. Запустить форму на проде без ошибок — тем более не сделали.

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

Оглядываясь назад, я бы сформулировал более приземлённые и реалистичные цели. Например:

Спринт 1. Закончить разработку компонента Х.

Спринт 2. Разработать модуль Х.

Вредный совет №3. Не надо определять роли. Все в команде сами знают, кто за что отвечает

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

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

Вредный совет №4. Твой проект никого не касается. Делай так, как считаешь нужным

Мы думали, что качество кода в нашем проекте — забота только нашей команды. На деле всё оказалось иначе — нужно было пройти ревью команды платформы. И это было больно: мы застряли на несколько месяцев и пришлось переписать почти всё.

Почему так вышло?

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

После каждой новой правки мы думали: «ну, это точно последнее». А потом получали ещё порцию. И мы принимали это как данность: «снова правки — надо переделать».

Проект растягивался, а мы всё чаще отвлекались на другие задачи.

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

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

Релиз!

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

Крупные проекты редко получается сделать идеально и в срок — сам не встречал таких чудес. Главное — проводить подробные ретроспективы по итогам, делать выводы и учиться на ошибках.

Гораздо приятнее учиться на чужих ошибках. Поэтому надеюсь, что моя статья была полезной :-)

0
5 комментариев
Oleg Soroka

А из взрослых есть кто-нибудь дома?

Ответить
Развернуть ветку
Nik Nik

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

Ответить
Развернуть ветку
whocares

Про коллегиальность в советских коллективах - очень похоже на начало истории про альтернативную реальность.

Ответить
Развернуть ветку
Nik Nik

Я не верю в духов... и в божье мироздание. Что подразумевать под альтернативной реальностью? Поначитались беллетристики и прочей мракобесной пропаганды.. и туда же..

Ответить
Развернуть ветку
Nasha Rasha

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

Ответить
Развернуть ветку
2 комментария
Раскрывать всегда