Привет, Хабр!
Меня зовут Даниил, я product lead в «Магнит Фудтех». Это направление входит в бизнес-группу «Магнит OMNI», объединяющую три вертикали: сервис доставки, маркетплейс «Магнит Маркет» и программу лояльности «Магнит Плюс». Сегодня хочу рассказать о важном инструменте работы любого продакта, в бэклоге которого несколько десятков задач, — скоринге.
Что такое скоринг и зачем он нужен
Скоринг — метод оценки и приоритизации задач. Есть много разных подходов к приоритезации задач, но цель у них одна: с минимальными усилиями помочь команде определить, какими задачами заняться в первую очередь, чтобы выполнить бизнес-цели и оправдать ожидания клиентов. Самые популярные методологии приоритизации — RICE и ICE.
Многие продакты ведут бэклог в Jira, а скоринги считают в Excel или Google Docs. Так делал и я. Однако у такого способа есть свои недостатки: во-первых, надо постоянно поддерживать актуальность списка тикетов в Excel — убирать выполненные и добавлять новые задачи. Во-вторых, неудобно, когда задачи в одном месте, а скоринговый балл — другом. В результате скоринг в Excel всегда в полуактуальном состоянии, и привести его в порядок за пару минут не так-то просто.
При этом мне всегда казалось, что скоринг — это неотъемлемая часть бэклога. Однако стандартные возможности Jira не предусматривают ведение скоринга. Конечно, там можно создать поле со скоринговым баллом, однако это не избавило бы меня от возни с расчетами в Excel, а цифры пришлось бы переносить в Jira и актуализировать вручную. Поэтому я начал искать искать способ перенести расчет скоринга в Jira.
Structure спешит на помощь
Решением стал плагин Structure. Не буду подробно рассказывать о его функционале: достаточно сказать, что Structure — один из самых мощных и гибких плагинов Jira. Используя Structure, я смог создать табличный вид бэклога с расчетом скорингового балла по методологии RICE. Верю, что такой инструмент будет полезен и другим продактам, поэтому делюсь с вами.
Как создать скоринг с помощью Structure
Приступим:
-
Прежде чем заняться составлением новой структуры, необходимо добавить в ваш проект поля, на основании которых будет считаться скоринг в Jira. Для этого нужно попросить ваших Jira-админов добавить 4 поля в задачи всех типов в вашем проекте.
Поля, которые нужно добавить, со списками выбора значений в них:-
Охват (Reach):
-
0–10%;
-
10–20%;
-
20–30%;
-
30–40%;
-
40–50%;
-
50–60%;
-
60–70%;
-
70–80%;
-
80–90%;
-
90–100%.
-
-
Влияние (Impact):
-
< 0,1 млн ₽;
-
0,1–0,5 млн ₽;
-
0,5–1 млн ₽;
-
1–2 млн ₽;
-
2–5 млн ₽;
-
5–10 млн ₽;
-
10–20 млн ₽;
-
20–50 млн ₽;
-
50–100 млн ₽;
-
100+ млн ₽.
-
-
Уверенность в оценке (Confidence):
-
1. Я и/или кто-то рядом со мной верит в идею (ничем, кроме веры, не подтверждено).
-
2. 5+ жалоб «очень болит, поправьте».
-
3. Реализовано у конкурента.
-
5. Проведены исследования/расчёты, в ходе которых подтвердили, что решение поможет с проблемой.
-
7. Получен успешный тест части функциональности меньшего объема.
-
8. Критичный тех.долг.
-
10. Системный стандарт рынка / результат A/B-теста / требование legal или compliance / я так уже делал в другой компании и это работает.
-
-
Усилия (Effort):
-
меньше 1 дня;
-
3–4 дня;
-
1–2 недели;
-
месяц-полтора;
-
квартал.
-
Нумерация в списке «Уверенность в оценке» кажется нарушенной, однако. на самом деле это не нумерация, а веса, присвоенные каждому из вариантов. Вы можете изменить списки выбора в зависимости от ваших потребностей.
-
-
После того, как админ Jira добавил новые поля в проект, создаем новую Структуру.

-
В созданную Структуру добавляем задачи из своего проекта в статусах, которые мы будем считать бэклогом. Для этого жмем «Автоматизация» → «+» → «Вставить» → «JQL-запрос».

Вставляем примерно такой JQL запрос:
project = OMS — тут вставляем код своего проекта;
and status in ("TO DO") — тут пишем статусы, в которых тикет в вашем проекте считается бэклогом;
and issuetype in (Story,Epic) — фильтр по типам задач. Мы с командой договорились, что стори и эпики регистрирует только продакт;
and "Epic Link" is EMPTY – чтобы в бэклоге не отображались задачи из эпиков, иначе эпик и все входящие в него тикеты будут дублироваться.Текст запроса нужно скорректировать под ваш проект, а комментарии — убрать. С ними запрос работать не будет.
-
Выходим из режима «Автоматизация». В структуру подтянется список задач, выбранных запросом.
-
Добавляем в структуру столбцы «Охват», «Влияние», «Уверенность в оценке» и «Оценка трудозатрат». На моем скрине поля названы немного по-другому, но это не так важно.

-
После этого добавляем в Структуру столбец типа «Формула», чтобы рассчитать скоринговый балл.

-
Присваиваем столбцу с формулой название «Скоринговый балл» и вставляем в него код из блока ниже. Если ваши списки выбора отличаются от моих, то вам нужно будет отредактировать код, внести значения из своих списков выбора и сопоставить их веса. Сделать это несложно — уверен, вы справитесь.
ifdefined(issueType):// этот блок кода поможет проверить, заполнены ли поля для расчёта скоринга. Если они не заполнены - не считаем скоринговый балл;if impact != Undefinedand reach != Undefinedand confidence != Undefined
and effort != Undefined:// этот и следующие блоки кода - преобразование значений списка выбора в соответствующие числа;// impact - название переменной для сопоставления столбца эконом.эффект;// impact_score - переменная для сохранения количества баллов по экономическому эффекту;with impact_score = if (impact = '< 0,1 млн.руб';1;impact = '0,1-0,5 млн.руб';2;impact = '0,5 - 1 млн.руб';3;impact = '1 - 2 млн.руб';4;impact = '2 - 5 млн.руб';5;impact = '5 - 10 млн.руб';6;impact = '10-20 млн.руб';7;impact = '20-50 млн.руб';8;impact = '50-100 млн.руб';9;impact = '100+ млн.руб';10):with reach_score = if (reach = '0-10%';1;reach = '10-20%';2;reach = '20-30%';3;reach = '30-40%';4;reach = '40-50%';5;reach = '50-60%';6;reach = '60-70%';7;reach = '70-80%';8;reach = '80-90%';9;reach = '90-100%';10):with confidence_score = if (confidence = '1. Я и/или кто-то рядом со мной верит в идею (ничем, кроме веры, не подтверждено)';1;confidence = '2. 5+ жалоб "очень болит, поправьте"';2;confidence = '3. Реализовано у конкурента';3;confidence = '5. Проведены исследования/расчёты, в ходе которых подтвердили что решение поможет с проблемой';5;confidence = '7. Получен успешный тест части функциональности меньшего объема';7;confidence = '8. Критичный тех.долг';8;confidence = '10. Системный стандарт рынка / результат A/B-теста / требование legal или compliance / я так уже делал в другой компании и это работает';10):with effort_score = if (effort = 'Меньше дня-день';1;effort = 'Несколько дней (3-4)';2;effort = '1-2 недели';5;effort = 'Месяц';20;effort = 'Квартал';60)://сама формула расчёта скорингового балла с округлением до 1 знака после запятойceiling(impact_score reach_score confidence_score / effort_score; 1) -
После этого мы увидим список несопоставленных переменных в блоке «Имена».

-
Чтобы устранить ошибки, нажимаем на каждую переменную с красным восклицательным знаком. В появившемся окне выбираем название столбца с соответствующим ей выпадающим списком значений.

-
Сопоставив все поля, закрываем окно настройки формулы.

Теперь скоринговый балл в нашей Структуре рассчитывается автоматически.

-
Сохраняем созданную структуру, чтобы столбцы не съезжали и не пропадали. Для этого в правом углу нажимаем на «Базовый вид», дальше на «Сохр.как» и придумываем имя. После этого выбираем сохраненный вид в качестве вида по умолчанию.

-
Profit! Наслаждаемся полученным результатом.
Теперь список тикетов в вашей структуре всегда актуален, а еще вы сможете прямо здесь выставлять значения каждой компоненты и сразу получать рассчитанный скоринговый балл. Больше никаких Excel-файлов и ручных обновлений — только порядок и эффективность!
ссылка на оригинал статьи https://habr.com/ru/articles/890828/









Добавить комментарий