В трекере команды 19 статусов и невидимые баги. Свёл к 9 и разметил 369 задач
Началось с бытовой жалобы на мой же инструмент: скрипт, который собирает мои задачи из трекера, «постоянно не находит задачу». Полез разбираться и нашёл не баг скрипта, а дыру в процессе команды.
Задачи, которых не видно
Дефолтным статусом новой задачи в проекте был продуктовый черновик, а не рабочий статус разработки. Туда попадало всё: и то, что заводил через командную строку я, и то, что заводили тестировщики. На доске разработки этого статуса нет, поэтому заведённые баги просто не появлялись ни у кого перед глазами.
На момент разбора так висели 15 моих задач, из них 10 багов веба и десктопа, а самые старые ждали от 28 до 46 дней. Мой скрипт показывал 47 задач и не видел 95 живых. Это не «неудобно», это баги, о которых все честно отчитались и которые никто не чинит.
Вторая находка помельче, но с тем же корнем: у команды в одном перечислении был смешан тип задачи и платформа. Из-за этого нельзя было ни отфильтровать «всё по десктопу», ни автоматически назначить исполнителя - платформа жила в заголовке текстом, и правило «моя задача, если в заголовке написано Web» на живых данных дало три чужие задачи и ноль полезных.
Что сделал
Согласовал с менеджером и применил в живом трекере, где к тому моменту накопились сотни задач.
- Отдельное поле «Платформа» вместо префикса в заголовке: веб, десктоп, бэкенд, Android, дизайн, инфраструктура. У каждого значения есть владелец.
- Воркфлоу авто-назначения: задача получает исполнителя по платформе сама, без ручного распределения на планёрке.
- 9 статусов вместо 19. Одиннадцать старых архивировал, а не удалил, чтобы история задач не порвалась. Дефолтом сделал рабочий бэклог, чтобы заведённый баг сразу попадал на доску.
- Перестроил доску разработки - дорожки теперь по платформе, а не по типу.
- Разметил 369 задач и написал команде статью о том, как теперь заводить и вести задачи.
Перед реформой снял полный бэкап конфигурации проекта. Административный REST оказался местами недокументированным, и часть вечера ушла на выяснение, почему поле не прикрепляется к проекту и как задать дорожки доски - эти грабли я записал отдельно, чтобы второй раз не выяснять.
Результат
Заведённый баг больше не исчезает: он появляется на доске в момент создания. Исполнитель проставляется сам. Кросс-платформенные задачи перестали быть одной карточкой, которую тянут двое, - теперь это контейнер с подзадачей на каждую платформу.
Отдельно поправил свои инструменты под новые статусы, чтобы отчёт о состоянии работ перестал врать.