Projex на практике: как мы делали проект для транспорта и не сошли с ума
«Я управляю оркестром»
В прошлой статье я говорил о том (Методология Projex), что суть Projex — не в создании процесса ради процесса, а в адаптации этого процесса под людей. Но для начала давайте разберемся: что вообще такое процесс?
Вот как его описывает Википедия (Wiki): повторяемая последовательность действий, направленная на достижение поставленной цели. Определений много, но я бы добавил к этому свое:
Процесс — это последовательный ряд мероприятий, нацеленных на достижение конкретного результата в понятные сроки.
В разработке, на производстве, в суде — везде мы участвуем в какой-то цепочке действий, результаты которых зависят от предыдущих шагов других людей. И во всем этом главным участником остается человек — только он дает процессу движение и контролирует то, что должно или не должно произойти при выполнении задачи.
Самое интересное начинается тогда, когда сотрудник понимает: он не просто “ценный кадр”, а человек которому доверяют принимать решения. После этого процесс начинает ветвиться — появляются новые продукты, проекты, иногда новые люди в команде.
Как сказал герой фильма “Стив Джобс” (2015): “Музыканты играют на инструментах. А я управляю оркестром”. Я воспринимаю это так: не нужно говорить людям как работать — нужно дать им пространство для творчества и указать правильное направление.
Пример применения Projex на проекте в транспортной отрасли
Сразу оговорюсь: я показываю модель “AS-IS” — то, как методология работает прямо сейчас. Она продолжает развиваться и дорабатываться.
Сложность этого проекта была не только в разработке ПО. Нужно было состыковать сразу несколько процессов: закупку, сборку, пусконаладку на реальном транспорте — и уложиться в срок. Вот как мы с этим справились.
1. Планирование
Покажу Карту проекта для задачи по разработке плеера — инструмента отображения рекламы в транспорте.
Ко мне пришел заказчик с такой проблемой: рекламу приходится загружать вручную на каждое транспортное средство, после чего оно уходит в работу как черный ящик. Если нужно что-то изменить — это занимает много времени и требует физического доступа к каждому устройству. Никакой централизации, никакого оперативного обновления контента.
Из этого мы понимаем проблему и цель проекта. Из опыта: если сразу описать заказчику как ты видишь решение — это здорово повышает уровень доверия. Главное чтобы предлагаемое решение было реалистичным и реализуемым силами вашей команды.
Карта проекта
|
Поле |
Содержание |
|---|---|
|
Проблема |
Существует множество разных плееров, но нет централизации контента и его обновления в реальном времени |
|
Цель проекта |
Реализовать инструмент централизованного получения и передачи контента до конечных пользователей |
|
Предлагаемое решение |
Веб-приложение с административной панелью для заказчика с выводом на экран |
|
Срок |
2 месяца |
После этого важно определить всех участников проекта. Это позволяет понять кто заказчик, кто исполнитель, кто подрядчик — и главное: какой интерес у каждой из сторон. Это не формальность. Если у стороны нет явного интереса в проекте — она не будет активно в нем участвовать. Иногда это повод задуматься: а нужна ли эта сторона вообще? Если без нее не обойтись, но интереса нет — ищите что предложить взамен. Не бойтесь договариваться: там такие же люди, которые тоже хотят получить что-то полезное.
Заинтересованные стороны
|
Сторона |
Роль |
Интерес |
|---|---|---|
|
Компания — заказчик |
Заказчик |
Получить решение “под ключ”, интегрированное в транспортное средство |
|
Компания — исполнитель |
Исполнитель |
Получить прибыль с продажи продукта и создать конкурентное предложение на рынке |
|
Разработчик |
Исполнитель |
Пополнить портфель проектов, получить опыт работы с хранением и демонстрацией видео |
|
Отдел пусконаладки |
Исполнитель |
(нет явного интереса — но можно предложить договориться с заказчиком о дополнительных работах, например ремонт транспорта на договорной основе) |
В качестве сторон можно указывать кого угодно — от генерального директора до студента, только что вышедшего на работу.
Следующий шаг — обсудить с заказчиком как измерить результат. На этом этапе точных цифр может не быть, но зафиксировать направление уже можно.
Предварительные метрики
|
Область |
Метрика |
|---|---|
|
Отображение рекламы |
Без задержек, автообновление и цикличность воспроизведения |
|
Включение устройства |
Автозапуск, подгрузка информации |
|
Питание для панели |
+24 Вольта |
Все это аккумулируется в Карту проекта и дает возможность перейти к приоритизации.
2. Приоритизация
Важно понять в каких сроках живет заказчик — это опорная точка для расстановки приоритетов. Здесь начинают формироваться контрольные точки.
Сложность этого этапа не только в том, чтобы правильно оценить время на задачу. Нужно учесть загрузку сотрудников, внешние факторы и возможности смежных отделов. На этом этапе уже важно примерно понимать кто будет задействован в проекте.
Например, при работе с плеером я сразу понял: нам нужно физическое устройство. А значит возникают вопросы которые надо проработать до старта, иначе потом они станут блокерами:
-
Как скоро придет оборудование для тестов? Нужно оповестить отдел закупок и согласовать сроки подачи заявки. Решение: согласуем с ними дату подачи заявки и ожидаемую дату поставки.
-
Нужна ли конструкторская документация и сборка? Если да — кто этим занимается и в какие сроки будет готов опытный образец? Решение: согласовываем сроки по MVP-образцу и документации.
-
Как устанавливать плеер на большое количество панелей? Очевидно — через единый образ и автоматическое обновление по CI/CD-пайплайну.
Таких вопросов может быть несколько, а может несколько десятков — их количество и определяет уровень неопределенности в проекте. Если на базовые вопросы про цель и выгоду нет ответа — это сигнал: проект создаст хаос в текущих процессах. Стоит задуматься, нужен ли он вообще.
Из личного опыта: был у нас проект по автоматическому подсчету объектов на конвейере с минимальным бюджетом и полной передачей прав заказчику. Когда я спросил у руководства какую выгоду получим мы как компания — через пару дней взаимодействие с заказчиком свернули. Правильный вопрос в нужный момент сэкономил кучу времени и ресурсов.
После того как на все вопросы есть ответы — можно расставлять приоритеты. Все что требует участия нескольких отделов, согласований или денег — ставим в самый высокий приоритет. Параллельно исполнители прорабатывают архитектуру или базовый шаблон — это позволяет не терять время пока решаются орг-вопросы.
Контрольные точки на этом проекте формировались из потребностей заказчика:
-
КТ 1 — Разработка административной панели
-
КТ 2 — Интеграция файлового хранилища (MinIO, S3)
-
И так далее
Важно: КТ формируются не только из требований заказчика. Есть еще внутренние требования исполнителя — регламенты, стандарты, шаблоны. Им тоже нужны реальные сроки.
3. Распределение ролей
Мы знаем задачу и сроки. Теперь нужно определить команду. Для этого я формирую таблицу Роли проекта.
|
Наименование |
Основные задачи |
|---|---|
|
Руководитель проекта |
Формирует документацию, анализирует конкурентов, формирует КТ и анализирует риски |
|
Ведущий DevOps-инженер |
Строит инфраструктуру системы, настраивает WatchDog и организует хранение данных |
|
DevOps-инженер |
Строит CI/CD-пайплайны, настраивает периферию, подключает устройства и готовит образы |
|
Ведущий AI-разработчик |
Готовит prod-версию ПО, проводит code review, разрабатывает архитектуру, формирует правила логирования и тестов |
|
UI-разработчик |
Разрабатывает клиентскую часть с возможностью выбора и демонстрации медиаконтента в онлайн |
|
Закупщик |
Анализирует, подбирает и закупает оборудование для монтажа у заказчика |
|
Конструктор |
Разрабатывает конструкторскую документацию на систему и физическую панель |
Зачем переносить это на бумагу? В этой таблице есть скрытая логика.
Я заметил: в какой-то момент разработчики начинают залезать в зону ответственности друг друга. Причины разные — от желания ускорить процесс до банального “мне так проще”. Это кажется безобидным, но здесь кроется подвох: каждый человек устает и выгорает, и именно руководитель должен это контролировать. Таблица ролей дает четкое понимание кто что делает — и не позволяет одному человеку незаметно взвалить на себя чужую работу.
Кто-то спросит: ты же говорил что каждый должен заниматься тем, что ему нравится — зачем тогда создавать границы? Резонный вопрос. Но я отвечу вопросом: зачем ставить двух людей с одинаковыми компетенциями на одну задачу? Эти “невидимые” границы нужны не для ограничения, а для защиты состояния сотрудника. Уставший человек не сможет работать с тем же интересом и темпом, что и отдохнувший.
4. Модульность
Каждый сотрудник приходит с багажом опыта. Работая в компании, люди применяют этот опыт и перекладывают его на результат. Каждый знает что он уже реализовывал и как это можно использовать в новых задачах.
Ваша команда наверняка прошла немалый путь и накопила результаты, которые можно переиспользовать — возможно с небольшой доработкой. Чаще всего это чувствуется сразу: берешь задачу и думаешь “я же это уже делал”. Вот эти моменты и нужно замечать и использовать.
Будут и абсолютно новые задачи — но даже там стоит искать что можно взять из прошлого опыта. Это и есть модульность не только в коде, но и в подходе к работе.
Как КТ устроены в проекте
Следующий этап — делим работу на контрольные точки. Об этом инструменте я впервые узнал из книги Павла Алферова “Проектное управление: как правильно делать правильные вещи” — и сразу понял насколько это сильный инструмент, которым многие пренебрегают.
Первое время я пытался самостоятельно распределять КТ — это создало большую нагрузку и приживалось с трудом. Как только начал прорабатывать их совместно с ключевыми сотрудниками — инструмент сразу стал для команды родным. Со временем пришли к формату таблицы:
|
КТ |
Ответственный |
Срок |
Статус |
Метрики |
Критерии приемки |
|---|---|---|---|---|---|
|
Что должно быть сделано и получено. Пример: Выпущен релиз MVP 1.0 |
ФИО исполнителя, отвечающего за статус выполнения |
Срок, согласованный с заказчиком |
Текущий статус — светофор (подробнее в первой части) |
Показатели из реестра метрик |
Словесное описание того, что требует заказчик |
Важный момент: статус КТ может менять не только ответственный или руководитель, но и любой исполнитель задачи внутри КТ. Контрольная точка — это не одна задача, а блок задач, где ответственный выступает в роли “мини-руководителя”.
Декомпозиция
Ответственный за КТ — это не просто исполнитель. Он помогает распределять задачи между собой и командой. Я чаще всего назначал ответственным того, кто дольше всего работал в команде и знал все тонкости. Он брал к себе от одного до нескольких разработчиков, наставлял их, учился управлять — и при этом сам оставался полноценным исполнителем. Важно чтобы ответственный не превращался в “раздатчика задач” и не перекладывал всё на других — он такой же член команды, просто с небольшим инструментом управления.
Отдельно стоят задачи связанные с закупкой оборудования — за них отвечал я лично. Потому что временной лаг между подачей заявки и получением оборудования может вырасти в непредсказуемое количество времени, и это нужно держать под контролем. Требования были простые: доставлять по мере поступления, вычислительные компьютеры — в первую очередь. Подбор компьютеров начинался еще на этапе планирования — потому что то, что работает на ноутбуке или рабочем ПК, в prod-окружении ведет себя совсем иначе. Это классика.
Сборка оборудования — всегда последний этап, после разработки ПО, получения всего железа и согласования требований. На нее закладывали неделю, но объем партии влияет на этот срок.
Ход выполнения
Начинается выполнение задач. Здесь должно быть в меру ритмично: совещания, контроль выполнения и соответствия реестру метрик. Руководитель максимально включается в момент когда КТ переходит в желтый статус — его задача выправить ситуацию до того как она станет красной.
Желтый статус возникает когда разработчик столкнулся с чем-то, что явно отодвигает выполнение КТ за срок — сложной задачей, неожиданным багом. Переключение статуса может произойти на совещании или самостоятельно. И да, есть защита от синдрома “я все успею, осталось чуть-чуть” — это пороговый остаток времени. Как писал в первой части: ориентир 15-30%, на практике чаще всего это 20%.
Если все метрики в рамках КТ достигнуты — она закрыта. Если в процессе возникли проблемы — фиксируем в журнале блокеров.
Блокер
|
Поле |
Содержание |
|---|---|
|
Дата выявления |
Дата обнаружения проблемы |
|
КТ |
Название контрольной точки |
|
Выявил |
Кто зафиксировал проблему |
|
Описание блокера |
Что происходит и почему возникает |
|
Статус |
Текущий статус по проблеме |
|
Ответственный за устранение |
Кто берется за исправление — исполнитель или руководитель |
Заполнили, учли, исправили.
Что это дало
Все любят конкретику — вот результаты.
|
Показатель |
План |
Факт |
|---|---|---|
|
Срок выполнения |
2 месяца |
1 месяц |
|
Количество исполнителей |
4 |
3 |
|
Количество правок от заказчика |
— |
2 раза |
|
Время активной разработки ПО |
2 месяца |
1 неделя |
Последняя строка требует пояснения: основное время ушло не на разработку, а на закупку и сборку. Разработчики сделали ПО за пару дней и выкатили в prod через CI/CD-пайплайн. Данные для разработки я собирал больше недели — а сама разработка заняла меньше. Две правки от заказчика — тоже хороший показатель: это значит что на этапе планирования мы правильно поняли задачу.
Все это стало возможным потому что на старте каждый разработчик понимал что от него требуется и зачем.
Что дальше
В следующей части я расскажу об инструменте, который я разработал самостоятельно — он позволяет учитывать все описанные выше элементы в одном месте. Покажу как он выглядит и как применяется на практике.
Автор: girder

