Мы занимаемся разработкой и технической поддержкой сайтов. Поддержка включает в себя как крупные задачи (например, внедрение нового функционала), на реализацию которых уходят десятки часов, так и небольшие, занимающие от 0,5 часа. Для управления проектами используем Redmine.
Как-то мы пробовали сменить матричную структуру на работу группами. Группа —
3-4 разработчика во главе с PM. Задачи и проекты у разных групп не пересекаются (кроме критических ситуаций и аварий). Выяснилось, что при наших масштабах такая структура не позволяет нам быть гибкими. Так, например, у одной группы могла накопиться очередь задач, а у другой в это же время — простой. Поэтому мы вернулись к матричной структуре, где между менеджерами и разработчиками налажена связь «многие-ко-многим». При этом на каждом проекте закреплен ведущий разработчик. Ему задачи отдаются с большим предпочтением, но при этом не исключается взаимозаменяемость и возможность подключить другого разработчика.
В такой ситуации у менеджеров неизбежно возникают вопросы: какой именно задачей занимается конкретный разработчик? Какая задача следующая? Когда разработчик возьмется за определенную задачу? Отсюда постоянная необходимость в визуализации плана работ в виде календаря или планировщика.
Готовых подходящих решений для Redmine мы не нашли.
Мы пользуемся Redmine очень давно. Он доработан специально под наши бизнес-процессы и имеет множество интеграций (различные дашборды, отчеты, личный кабинет клиента, биллинг и т.п.), поэтому уходить с него мы не собираемся, даже несмотря на мнение о том, что Redmine «сделан программистами для программистов». Признаемся: несколько попыток у нас уже было, но более удобного решения мы так и не нашли.
Требования к планировщику
Перед началом работы над планировщиком мы сформулировали необходимые требования:
- Наглядный план работы каждого разработчика на неделю с разбивкой по часам.
- Возможность быстро найти нужный тикет из Redmine и поставить его в работу в .
- Возможность оперативно управлять приоритетами задачи в течение дня.
- Отображение информации о плановых и фактических трудозатратах.
- Возможность зарезервировать время в планировщике без задачи, чтобы позже PM могу поставить на место резерва конкретный тикет.
- Быстрый переход к тикету в Redmine.
- Удобный поиск задач из тикетной системы для постановки в планировщик (по статусу, исполнителю, названию и номеру тикета).
Реализация
Сначала мы пару недель обкатывали подход в Google Календаре. Там мы вручную создавали события для каждой задачи. Потом разработали утилиту на Yii + fullcalendar.js, интегрированную с Redmine по API. Вот что получилось:
Утилита на Yii + fullcalendar.js, интегрированную с Redmine по API
Результат
У каждого разработчика есть свой планировщик с задачами на день и неделю. Для разработчика этот планировщик первичен: с него он начинает день и из него движется по тикетам в Redmine. Менеджеры, в свою очередь, наблюдают за приоритетом в задачах каждого специалиста и планируемым временем начала работы над каждой задачей. Все PM видят уровень загрузки команды. Кроме того, они могут менять порядок задач и ставить вперед новую и более срочную. Особенно удобен планировщик в случае конфликта за ресурс: когда приходит очень срочная задача, а запаса ресурсов на ее выполнение сегодня уже нет, менеджер быстро находит ближайшее окно, в которое можно поставить эту задачу.
Таким образом, все описанные выше требования мы реализовали в нашем планировщике.
Планы
На данном этапе мы планируем сделать отчет с выборкой ошибочных задач или тех, которые требуют внимания PM:
- На выполнение задачи вообще не запланирован ресурс (PM забыл это сделать).
- Время, запланированное на задачу в планировщике до даты дедлайна, не совпадает с оценкой задачи в часах (ошибка PM или изменение оценки в Redmine).
- Тикет в Redmine закрыт, но в планировщике остались запланированные на него слоты (задачу сделали раньше, значит лишнее время можно освободить).
Такой отчет даст дополнительный механизм контроля исполнения сроков по задачам и проектам и минимизирует ошибки в процессе планирования.
Интересное решение!