История одного скоринга: от хаоса в Excel к порядку в Jira
Прежде чем заняться составлением новой структуры, необходимо добавить в ваш проект поля, на основании которых будет считаться скоринг в Jira. Для этого нужно попросить ваших Jira-админов добавить 4 поля в задачи всех типов в вашем проекте.
Поля, которые нужно добавить, со списками выбора значений в них:
Охват (Reach):
Влияние (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 != Undefined
and reach != Undefined
and 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-файлов и ручных обновлений — только порядок и эффективность!