Как стать автором
Обновить
77.73
Magnit Tech
Соединяем IT и ритейл

История одного скоринга: от хаоса в Excel к порядку в Jira

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.1K

Привет, Хабр!

Меня зовут Даниил, я product lead в «Магнит Фудтех». Это направление входит в бизнес-группу «Магнит OMNI», объединяющую три вертикали: сервис доставки, маркетплейс «Магнит Маркет» и программу лояльности «Магнит Плюс». Сегодня хочу рассказать о важном инструменте работы любого продакта, в бэклоге которого несколько десятков задач, — скоринге.

Что такое скоринг и зачем он нужен

Скоринг — метод оценки и приоритизации задач. Есть много разных подходов к приоритезации задач, но цель у них одна: с минимальными усилиями помочь команде определить, какими задачами заняться в первую очередь, чтобы выполнить бизнес-цели и оправдать ожидания клиентов. Самые популярные методологии приоритизации — RICE и ICE.

Многие продакты ведут бэклог в Jira, а скоринги считают в Excel или Google Docs. Так делал и я. Однако у такого способа есть свои недостатки: во-первых, надо постоянно поддерживать актуальность списка тикетов в Excel  — убирать выполненные и добавлять новые задачи. Во-вторых, неудобно, когда задачи в одном месте, а скоринговый балл — другом. В результате скоринг в Excel всегда в полуактуальном состоянии, и привести его в порядок за пару минут не так-то просто.

При этом мне всегда казалось, что скоринг — это неотъемлемая часть бэклога. Однако стандартные возможности Jira не предусматривают ведение скоринга. Конечно, там можно создать поле со скоринговым баллом, однако это не избавило бы меня от возни с расчетами в Excel, а цифры пришлось бы переносить в Jira и актуализировать вручную. Поэтому я начал искать искать способ перенести расчет скоринга в Jira.

Structure спешит на помощь

Решением стал плагин Structure. Не буду подробно рассказывать о его функционале: достаточно сказать, что Structure — один из самых мощных и гибких плагинов Jira. Используя Structure, я смог создать табличный вид бэклога с расчетом скорингового балла по методологии RICE. Верю, что такой инструмент будет полезен и другим продактам, поэтому делюсь с вами.

Как создать скоринг с помощью Structure

Приступим:

  1. Прежде чем заняться составлением новой структуры, необходимо добавить в ваш проект поля, на основании которых будет считаться скоринг в 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 недели;

      • месяц-полтора;

      • квартал.

    Нумерация в списке «Уверенность в оценке» кажется нарушенной, однако. на самом деле это не нумерация, а веса, присвоенные каждому из вариантов. Вы можете изменить списки выбора в зависимости от ваших потребностей. 

  2. После того, как админ Jira добавил новые поля в проект, создаем новую Структуру.

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


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


    Текст запроса нужно скорректировать под ваш проект, а комментарии  — убрать. С ними запрос работать не будет.

  4. Выходим из режима «Автоматизация». В структуру подтянется список задач, выбранных запросом.

  5. Добавляем в структуру столбцы «Охват», «Влияние», «Уверенность в оценке» и «Оценка трудозатрат». На моем скрине поля названы немного по-другому, но это не так важно.

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

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

    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)

  8. После этого мы увидим список несопоставленных переменных в блоке «Имена».

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

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

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

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

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

Теги:
Хабы:
Всего голосов 8: ↑8 и ↓0+9
Комментарии1

Публикации

Информация

Сайт
magnit.tech
Дата регистрации
Дата основания
Численность
1 001–5 000 человек
Местоположение
Россия
Представитель
Амиран Карацев