{"id":14274,"url":"\/distributions\/14274\/click?bit=1&hash=fadd1ae2f2e07e0dfe00a9cff0f1f56eecf48fb8ab0df0b0bfa4004b70b3f9e6","title":"\u0427\u0435\u043c \u043c\u0443\u0440\u0430\u0432\u044c\u0438\u043d\u044b\u0435 \u0434\u043e\u0440\u043e\u0436\u043a\u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430\u043c?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"6fbf3884-3bcf-55d2-978b-295966d75ee2"}

Собственный планировщик из таск-трекера: визуализируем поток задач небольшой команды

Автор: Станислав Мозгель, руководитель отдела разработки диджитал-агентства DirectLine

В нашем отделе разработки 10 специалистов: 7 разработчиков, 1 веб-технолог и 2 менеджера проектов (PM). Работа команды организована по матричной структуре: каждый PM может ставить задачи разным разработчикам, а у каждого разработчика в плане могут быть задачи от разных PM. В таких условиях особенно важно, чтобы PM могли отслеживать план работы специалистов. В этой заметке расскажем, как мы упростили процесс планирования задач и времени разработчиков с помощью собственноручно созданного планировщика.

Мы занимаемся разработкой и технической поддержкой сайтов. Поддержка включает в себя как крупные задачи (например, внедрение нового функционала), на реализацию которых уходят десятки часов, так и небольшие, занимающие от 0,5 часа. Для управления проектами используем Redmine.

Как-то мы пробовали сменить матричную структуру на работу группами. Группа — 3-4 разработчика во главе с PM. Задачи и проекты у разных групп не пересекаются (кроме критических ситуаций и аварий). Выяснилось, что при наших масштабах такая структура не позволяет нам быть гибкими. Так, например, у одной группы могла накопиться очередь задач, а у другой в это же время — простой. Поэтому мы вернулись к матричной структуре, где между менеджерами и разработчиками налажена связь «многие-ко-многим». При этом на каждом проекте закреплен ведущий разработчик. Ему задачи отдаются с большим предпочтением, но при этом не исключается взаимозаменяемость и возможность подключить другого разработчика.

В такой ситуации у менеджеров неизбежно возникают вопросы: какой именно задачей занимается конкретный разработчик? Какая задача следующая? Когда разработчик возьмется за определенную задачу? Отсюда постоянная необходимость в визуализации плана работ в виде календаря или планировщика.

Готовых подходящих решений для Redmine мы не нашли.

Мы пользуемся Redmine очень давно. Он доработан специально под наши бизнес-процессы и имеет множество интеграций (различные дашборды, отчеты, личный кабинет клиента, биллинг и т.п.), поэтому уходить с него мы не собираемся, даже несмотря на мнение о том, что Redmine «сделан программистами для программистов». Признаемся: несколько попыток у нас уже было, но более удобного решения мы так и не нашли.

Требования к планировщику

Перед началом работы над планировщиком мы сформулировали необходимые требования:

Реализация

Сначала мы пару недель обкатывали подход в Google Календаре. Там мы вручную создавали события для каждой задачи. Потом разработали утилиту на Yii + fullcalendar.js, интегрированную с Redmine по API. Вот что получилось:

Результат

У каждого разработчика есть свой планировщик с задачами на день и неделю. Для разработчика этот планировщик первичен: с него он начинает день и из него движется по тикетам в Redmine. Менеджеры, в свою очередь, наблюдают за приоритетом в задачах каждого специалиста и планируемым временем начала работы над каждой задачей. Все PM видят уровень загрузки команды. Кроме того, они могут менять порядок задач и ставить вперед новую и более срочную. Особенно удобен планировщик в случае конфликта за ресурс: когда приходит очень срочная задача, а запаса ресурсов на ее выполнение сегодня уже нет, менеджер быстро находит ближайшее окно, в которое можно поставить эту задачу.

Таким образом, все описанные выше требования мы реализовали в нашем планировщике.

Планы

На данном этапе мы планируем сделать отчет с выборкой ошибочных задач или тех, которые требуют внимания PM:

  • На выполнение задачи вообще не запланирован ресурс (PM забыл это сделать).
  • Время, запланированное на задачу в планировщике до даты дедлайна, не совпадает с оценкой задачи в часах (ошибка PM или изменение оценки в Redmine).
  • Тикет в Redmine закрыт, но в планировщике остались запланированные на него слоты (задачу сделали раньше, значит лишнее время можно освободить).

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

0
1 комментарий
Семен Смирнов

Непонятна ни проблема, ни что именно вы решили)
Для 7 разработчиков подойдёт любой трекер

Ищу на 100+

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