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