История одного скоринга: от хаоса в 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-файлов и ручных обновлений — только порядок и эффективность!