Методология о людях: как я придумал Projex и зачем это вообще нужно

от автора

«Стоит идее завладеть мозгом…»


Когда я только начинал выстраивать процессы внутри команды, я экспериментировал с различными подходами: Agile (в основном Kanban), доски в Jira, ретроспективы по понедельникам и пятницам. Работа двигалась, но достаточно тяжело: большинство этих методологии сконцентрированы на процессе, а не на людях, которые в нём работают. Другие руководители в компании говорили, что я слишком мягок со своими сотрудниками и многое им позволяю. Но так или иначе именно это дало импульс в разработке — у нашей команды уже более 6 реализованных продуктов.

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

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

Так появилась идея Projex, в основе которой лежит простая мысль:

_Процесс подстраивается под человека, а не человек под процесс.

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

Немного о себе


Меня зовут Ричард, и я руковожу командой CV-разработчиков и DevOps-инженеров. Построил команду с 3 до 10 человек и увеличил количество продуктов направления с 2 до 8 — все они уже проходят опытную эксплуатацию на городском транспорте. Часть продуктов мы уже продали, и они активно используются заказчиками.

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

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

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

Почему существующие подходы меня не устроили


Agile. Да, гибко и итерационно. Но если копнуть глубже — команда живёт в состоянии постоянной неопределённости. Разработка систем компьютерного зрения достаточно трудоемкая задача: любое изменение чаще всего затрагивает большую часть ПО, а обучение одной модели может занимать до 2 — 3 дней в зависимости от объёма данных. В таких условиях постоянно меняющиеся приоритеты только усугубляют ситуацию: бэклог пухнет, ощущения движения к конкретной цели нет. У каждого из моей команды висело в среднем по 6+ задач в высоком приоритете и ещё 3 — 4 в бэклоге. Планирование в классическом Agile можно сказать отсутствует. В долгосрочной перспективе это выматывает людей — отсюда выгорание и текучка. Мы применяли Kanban, но суть от этого не менялась: задач было огромное количество, сроки постоянно сдвигались вправо, а часть из них и вовсе закрывалась без результата из-за потери актуальности.

Waterfall. Полная противоположность. Всё расписано, все роли закреплены, каждый знает своё место. Звучит хорошо, но на практике человек годами делает одно и то же, не имея возможности вырасти в направлении (так было у моего друга, он просто ушел в Сбер, так как не видел роста), которое ему реально интересно. А именно из интереса рождаются лучшие решения — это я знаю точно по своей команде. Этот подход мы даже не рассматривали всерьёз: он ограничивает творчество, а практика показывает — дай людям пространство, и они будут творить.

PRINCE2. Пожалуй, самый зрелый из трёх. Чёткие процессы, артефакты, зоны ответственности — всё на месте. Но роли снова формируются под проект, а не под человека. Чем интересуются люди в команде, что им хочется развивать — PRINCE2 этому не учит. Это сам решает руководитель. Система хорошая, но человека в ней нет. Коллеги из соседних отделов пробовали интегрировать этот подход — в итоге продукт фактически ушёл в legacy, и от его доработки отказались. Нам такой сценарий тоже не подходит.

Что такое Projex и из чего он состоит


Projex строится на четырёх элементах, которые работают в двух парных связях — как буква X:

  • Планирование — Приоритизация — сначала строим дорожную карту, потом правильно расставляем задачи внутри неё;

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

Буква X

Буква X

Планирование

Любой проект начинается с одного вопроса: а зачем мы это вообще делаем? Кто получит пользу, какую проблему это решает, как понять что результат достигнут. Казалось бы это базовый инструмент, но почему-то многие им пренебрегают.

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

Важный момент: этот этап я всегда прорабатываю совместно с ведущим разработчиком. Если руководитель и заказчик нашли взаимопонимание, но не смогли донести цель до команды — дальше начинается «кто в лес, кто по дрова». А это путь к потере мотивации, постоянным правкам и в конечном счёте к текучке.

Из моей практики. На текущем проекте — ПО для вычислительного комплекса транспортного средства — нам изначально ставили срок пять месяцев. Мы реализовали первую версию с 1 апреля по 20 мая, то есть меньше чем за два месяца. Справедливости ради, первый месяц ушёл на планирование: ТЗ со стороны руководства изначально было размытым, и мне пришлось самостоятельно выстраивать понимание того, что требуется реализовать. После этого я вместе с двумя ведущими разработчиками расписал план, донёс его до команды — и мы уложились в срок. Именно это планирование дало результат: каждый разработчик с первого дня понимал не только свою задачу, но и её место во всей архитектуре продукта.

Приоритизация по срочности

Каждая контрольная точка живёт в одном из трёх статусов:

Статус

Условие

Действие

Зелёный

Времени достаточно

Штатный режим

Жёлтый

Достигнут пороговый остаток

Подключается руководитель

Красный

Срок нарушен

Формируется план восстановления

Пороговый остаток — показывает то срок, в который требуется подключаться руководителю, если не было решено ранее. Значение задаётся в начале каждой задачи в зависимости от её сложности и опыта исполнителя. Ориентир: 15–30% от общего времени, но чаще всего это будет 20%.

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

Многие воспринимают что не справились с задачей во время — это слабость. Слабость — это умолчать о том что близится срок, а вот признак зрелости исполнителя когда во время сообщил и смогли решить проблему.

Заказчику сроки важны не меньше качества. Именно понимание того, когда он получит продукт, позволяет ему принять решение о сотрудничестве. Все слышали «нужно срочно и качественно» — практика показывает, что это две несовместимые вещи. Для этого я придумал другую пару ключевых элементов в Projexy — правильное распределение ролей и модульность.

Распределение ролей

Здесь ещё одно ключевое отличие Projex от всего, что я видел раньше.

Роли не закрепляются жёстко за людьми — они назначаются каждому сотруднику в зависимости от проекта. Для удобства на уровне отдела формируется Карта ролей — документ, в котором описаны все возможные роли. У каждого сотрудника есть профиль с тремя блоками:

  • Могу — то, что уже умею и делаю хорошо;

  • Хочу развивать — направления, которые мне интересны;

  • Не моё — где я работаю неэффективно.

При назначении на задачу я смотрю на пересечение «Могу» и «Хочу развивать». Это зона, где человек будет работать быстро и с удовольствием.

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

Живой пример — как бывает хорошо. В моей команде есть разработчик, который около десяти месяцев занимался компьютерным зрением. Когда мы запустили проект вычислительного комплекса, он сам проявил интерес к оптимизации запросов и производительности — области, в которой раньше не работал, но очень хотел разобраться. Я дал ему эту зону. В итоге он оптимизировал скорость всех запросов с 100 мс до 5 — 15 мс — в десять раз. Это случилось не потому, что я поставил его туда по штатному расписанию, а потому, что он сам этого хотел, и я это увидел.

Живой пример — как бывает плохо. Был и обратный случай: я поручил коллеге интегрировать телеметрию в его часть разработки, не учтя, что он не только не знал как это делается, но и был загружен другими задачами, от этого совершенно не хотел браться за эту. В итоге мы потратили около трёх недель, чтобы получить хотя бы минимальный результат — который в итоге так и не был использован у заказчика. Это классический пример назначения «по удобству», а не по способностям.

Руководитель не должен опекать людей как детей. Его задача — выявить сильные стороны и дать им пространство для роста, которое в итоге окупится реализованными продуктами.

Модульность

Последний элемент, который замыкает систему — модульность.

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

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

Схема работы руководителя


Ниже — последовательность действий руководителя от старта проекта до его закрытия.

Схема работы руководителя

Схема работы руководителя

Разберем каждый шаг.

Шаг 1 — Анализ задачи. Большинство руководителей хотят быстрее перейти к делу и пропускают его или делают формально. Но именно здесь закладывается фундамент: если ты не можешь сформулировать проблему одним абзацем и метрику успеха одной строкой — тогда стоит ли вообще делать эту задачу? И точно не сможешь объяснить её команде.

Шаг 2 — Согласование с заказчиком. Карта проекта — это твой персональный договор с проектом. Ты должен четко понимать все тонкости проекта и как он будет устроен. Когда заказчик подписывает или явно подтверждает Карту — у тебя появляется точка отсчёта ([[#Планирование]]). Все последующие изменения требований фиксируются относительно неё. Кто-то назовёт это техническим заданием (ТЗ) — по сути так и есть. Можно использовать что угодно в данном шаге, но главное чтобы исполнители понимали, что от них хотят.

Шаг 3 — Назначение ролей. Здесь важно не перепутать удобство с эффективностью. Удобно поставить на задачу того, кто уже делал это раньше — он справится быстро и без вопросов. Но если человеку это неинтересно, через несколько таких задач подряд он начнёт выгорать. Принцип «Могу + Хочу развивать» ([[#Распределение ролей]]) немного медленнее на старте, но даёт значительно больший импульс в перспективе.

Шаг 4 — Формирование контрольных точек. КТ — это не просто вехи в календаре. Каждая КТ должна давать осязаемый результат и с конкретным сроком ([[#Приоритизация по срочности]]). Размытая КТ — это гарантия споров при закрытии. Поэтому пороговый остаток и метрики фиксируются сразу, до старта работ.

Шаг 5 — Декомпозиция. Декомпозицию должен делать исполнитель, а не руководитель. Руководитель создает КТ и указывает срок к ней — а исполнитель сам разбивает это на задачи и оценивает их. Во-первых, он лучше знает как это делается. Во-вторых, он берёт на себя ответственность за оценку — это принципиально меняет отношение к срокам. Задача руководителя здесь — проверить что декомпозиция реалистична и не противоречит целям КТ. В данном шаге руководитель, только может подсказать исполнителю, какую базу он может брать за основу при реализации КТ — это он может указать в описании к КТ ([[#Модульность]])

Шаг 6 — Исполнение и мониторинг. Если КТ в зелёном статус — не трогаем. Желание руководителя постоянно проверять как дела в зелёном статусе — это не контроль, это недоверие. Оно разрушает автоматизм и снижает мотивацию быстрее, чем любые внешние факторы.

Жёлтый статус — это сигнал для руководителя, что пора взять КТ на контроль. Как только задача перешла в жёлтый — руководитель подключается и первым делом разбирается что мешает для реализации задачи. Дальше нужно оценить срочность этой задачи для заказчика: если она некритична — можно перераспределить ресурсы или сдвинуть срок без последствий. Если критична — устраняем блокер в корне и фиксируем в Журнале блокеров с пометкой как предотвратить повторение. На этом этапе, чаще всего это внешнее препятствие, которое исполнитель не может убрать сам — именно для этого и нужен руководитель.

Красный статус — срок нарушен (и это уже влияет на результат перед заказчиком). Формируем локальный план-график: что конкретно нужно сделать, в какой срок и кто подключается дополнительно если нужно. Этот план согласовывается с заказчиком — он должен знать о переносе и понимать новые сроки. Красный статус сам по себе не трагедия. Трагедия — это красный статус, о котором заказчик узнаёт последним.

Шаг 7 — Закрытие. Закрытие КТ или проекта — наиболее важный этап. Это сверка с Реестром метрик: каждый показатель либо достигнут, либо нет. Если не достигнут — КТ не закрыта и тогда действуем аналогично красному статус в Шаге 6.

Шаг 8 — Обновление базы знаний. Самый часто пропускаемый шаг. После закрытия проекта все бегут на следующий. Но именно здесь формируется организационная память: какие блокеры были, как решили, кто вырос в каком направлении. Без этого каждый проект начинается с нуля — и команда наступает на одни и те же грабли снова.

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

Примеры артефактов


Карта проекта

Вот как выглядит Карта проекта для нашего вычислительного комплекса в упрощённом виде:

Поле

Содержание

Проблема

Отсутствие единой бортовой системы, объединяющей CV, телеметрию и мультимедиа в транспортном средстве

Цель проекта

Разработать вычислительный комплекс, работающий в реальных условиях эксплуатации

Предлагаемое решение

Модульная архитектура на базе существующих CV-компонентов с новым слоем телеметрии и мультимедиа

Метрики реализации

Время отклика системы ≤ 50 мс, стабильная работа 72 ч без перезагрузки, совместимость с 3 моделями транспорта

Заинтересованные стороны

Заказчик получает систему «под ключ»; исполнитель получает опыт реализации и интеграции смежных систем

Реестр метрик (пример для одной КТ)

КТ-2 — Интеграция модуля телеметрии

Метрика

Целевое значение

Блок задач

Время передачи пакета данных

≤ 20 мс

Модуль телеметрии

Потери пакетов при нагрузке 100%

< 0.1%

Модуль телеметрии

Совместимость с форматами CAN/RS-485

Да

Модуль коннектора

Покрытие unit-тестами

≥ 80%

Вся система

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

Разбор реального блокера


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

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

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

До/после: что изменилось с Projex


Разумеется не все так было плохо до появления Projexy — команда работала, продукты выходили. Но было несколько системных проблем, которые я замечал снова и снова.

До Projex — как было:

У каждого разработчика в Jira висело в среднем 6–8 задач в статусе «высокий приоритет». Плюс 3–4 в бэклоге, которые формально существовали, но никто не знал когда до них дойдут. Сроки сдвигались вправо регулярно — не потому что люди работали медленно, а потому что не было чёткого понимания что важно прямо сейчас, а что подождёт. Часть задач закрывалась вообще без результата — просто теряла актуальность пока лежала в бэклоге.

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

После Projex — как стало:

Теперь у каждого разработчика в работе одновременно не более 2–3 задач. Все они привязаны к конкретной контрольной точке с понятным сроком и статусом. Каждый знает не только свою задачу, но и как она вписывается в общую архитектуру продукта. И теперь, когда разработчик видит проблему и сразу говорит об этом — руководитель может помочь быстро.

Конкретные цифры по проекту вычислительного комплекса:

Показатель

До

После

Плановый срок первой версии

5 месяцев

Фактический срок первой версии

7 недель

Среднее время отклика запросов

100 мс

5–15 мс

Задач в высоком приоритете на человека

6–8

2–3

Случаев поздней эскалации блокеров

Регулярно

Единично

Сравнительная таблица

Критерий

Agile

Waterfall

PRINCE2

Projex

Планирование

Минимальное, адаптивное

Жёсткое, полное

Структурированное

Чёткое, но гибкое по срокам

Роли

Под команду

Жёстко закреплены

Под проект

Под человека

Учёт интересов сотрудника

Нет

Нет

Нет

Да — системно

Контроль сроков

Спринты

Этапы

Контрольные точки

Светофор + ручная эскалация

Модульность решений

Не регламентирована

Не регламентирована

Не регламентирована

Встроена как элемент

Работа с блокерами

На усмотрение

На усмотрение

Формальная эскалация

Журнал блокеров + расчистка пути

Применимость

IT, продукт

Строительство, производство

Крупные корпоративные проекты

IT, инженерные проекты, продукт

Что дальше


Я продолжаю применять Projexy на своих проектах и дорабатываю по ходу. Параллельно разрабатываю инструмент Projexy — ПО, в котором вся эта логика будет реализована нативно: карты проектов, светофор статусов, журнал блокеров, профили команды. По мере разработки буду рассказывать о реальных плюсах и минусах системы на практике.

Главное, что хотел донести — это не критика существующих подходов, а попытка найти то, чего в них не хватает. Человека.

ссылка на оригинал статьи https://habr.com/ru/articles/1050558/