Сторипоинты измеряют сложность, а не время 🤔

 Публичный пост
27 августа 2025  333

История 📜

В 2017 году я впервые стал тимлидом, а в 2019-2022 годах я вёл курсы по тимлидству, параллельно сам проходя нелёгкую трансформацию из инженера в менеджеры. Всего провёл 3 потока. В первую очередь, курсы были нужны мне самому, чтобы структуризировать свои знания, которые я получал в основном из личного опыта и из очень разрозненных источников, так как tlroadmap тогда только формировался. Оказалось, что этот курс был полезен и для других людей.

Один из фундаментальных вопросов, которые меня тогда беспокоили, касался сторипоинтов. Я видел много материалов про то, что сторипоинты должны оценивать сложность, и много материалов про то, что они должны оценивать эффорт, который смешивает сложность и время в одну кучу.

На практике же я наблюдал, что практически всегда сторипоинты приравнивались ко времени, что, по сути, убивало их главную идею: абстрагирование от времени.

Вместе с тем, я до конца так и не мог понять, как можно оценивать сложность задач. Я понимал, как оценивать риски. Но сложность - нет.

Так было пока я не наткнулся на пример в скрам гайде (про мальчика и нейрохирурга, см. дальше). Это дало довольно серьёзную подсказку.

Тем не менее, я ещё несколько лет не мог понять, как можно наглядно синхронизировать сторипоинты между всеми членами команды. Мне довольно быстро пришла идея использования грейдов, но у меня стало появляться много вопросов касательно того, почему тогда в принципе не используются грейды вместо абстрактных чисел.

Наконец, вся картинка сложилась, когда я стал опираться на цель спринта и интересы бизнеса.

ДИСКЛЕЙМЕР

Всё, что описано ниже, относится к миру розовых пони и молочных рек. Я понимаю, что мы все живём в реальном мире, и сферический скрам в вакууме - это удел небожителей. Тем не менее, я решил опубликовать эту статью, поскольку она, как мне кажется, позволяет глубже разобраться в том, что скрам гайд на самом деле подразумевал под сторипоинтами, и почему они вообще были введены. А это понимание, в свою очередь, позволит более честно взглянуть на ваш SDLC, особенно на ту точку, где разработка соприкасается с бизнесом, и, возможно, как-то улучшить свои процессы.

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

Неискоренимая проблема

Многие команды до сих пор путают сторипоинты с временем.

"Я сделую эту задачу примерно за 5 сторипоинтов" — часто можно услышать на груминге. И в этой фразе уже слышно, что человек оценивает время, и приравнивает сторипоинты к человеко-дням (или часам).

На самом же деле, задача на 5 дней может быть оценена в абсолютно любое количество сторипоинтов. Всё зависит от того, насколько она сложная.

Каноничный пример 🧠

Представьте команду из мальчика 7-8 лет и нейрохирурга.

У нас есть две задачи:

  • Сделать несложную операцию на мозг
  • Облизать 1000 марок

Обе задачи займут примерно час, но их сложность радикально отличается.

Мальчик справится со второй задачей, но не с первой. Нейрохирург справится с обеими, но первая для него — ежедневная рутина, а вторая — неприятная, но простая работа.

Очевидно, что в этом случае, несмотря на одинаковое время для обеих задач, они будут оценены в разные сторипоинты, поскольку сложность у них разная.

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

Примеры из разработки 💻

Задача 1: Скопировать готовый компонент из другого проекта со схожей архитектурой

  • Время: 4 часа
  • Сторипоинты: 1 sp (рутинная работа, известное решение)

Задача 2: Придумать архитектуру для нового типа компонентов

  • Время: 4 часа
  • Сторипоинты: 13 sp (творческая работа, множество неизвестных)

Задача 3: Написать простой SQL-запрос для отчета

  • Время: 2 часа
  • Сторипоинты: 2 sp (стандартная задача)

Задача 4: Оптимизировать медленный SQL-запрос в продакшене

  • Время: 2 часа
  • Сторипоинты: 8 sp (требует анализа планов выполнения, индексов, производительности)

Задача 5: Изменить цвет кнопки в интерфейсе

  • Время: 30 минут
  • Сторипоинты: 1 sp (простое изменение CSS)

Задача 6: Сделать чтобы нажатие на кнопку не фризило страницу

  • Время: 30 минут
  • Сторипоинты: 5 sp (требует понимания асинхронности и работы с DOM)

Видите парадокс? Задачи с одинаковым временем могут отличаться в сложности в 5-13 раз. Время выполнения не определяет сложность.

Шкала компетенций 📊

  • 1 sp = интерн (тривиальные задачи, которые могут сделать все)
  • 2 sp = джун
  • 3 sp = джун+
  • 5 sp = миддл
  • 8 sp = миддл+
  • 13 sp = сеньор
  • 20 sp = лид/архитектор

Важно: сторипоинты ≠ грейды ⚠️

Шкала компетенций показывает сложность задачи, а не требования к исполнителю. Если вам так психологически комфортнее, то говорите "это джун-задача" вместо "это задача для джуна".

Почему это важно:

  • В скраме команда работает как единое целое, а не как набор отдельных специалистов; если вы работаете по большей части независимо, то и синхронизация эстимаций вам по большому счёту не нужна
  • Задача на 13 sp не означает, что её должен делать только сеньор
  • Джуниоры могут выполнять сложные задачи при должном инвестировании в декомпозицию и дизайн со стороны команды
  • Сеньоры могут брать простые задачи для помощи команде

Неправильно: "Это задача на 13 sp, значит её должен делать сеньор"
Правильно: "Это сложная задача, давайте обсудим, как мы будем её решать"

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

Время в скраме ⏰

В скраме время регулируется только одним показателем: длительность спринта (как правило, две недели).

Это ключевой принцип — мы не оцениваем время выполнения отдельных задач. Время уже задано. Мы пытаемся втиснуть в известное время реалистичный объём работ, необходимый для достижения цели за это время.

То есть... Зачем нам тогда сторипоинты, если они не помогают оценивать время?

Сторипоинты нужны для:

  • Сравнения сложности задач между собой и правильного распределения усилий
  • Выбора оптимального подхода к решению проблемы
  • Декомпозиции слишком сложных задач
  • Прогнозирования того, каковы шансы успешно закончить спринт

Они помогают оценивать не время, а объём работ, который команда сможет выполнить за спринт.

Но для этого нам нужно понимать, что именно мы планируем достичь за спринт.

Цель 🎯

У каждого спринта обязательно должна быть цель. Этот момент упускают практически все. Команды, которые правильно ставят цели спринта, встречаются крайне редко.

Цель — это то, что команда планирует достичь за спринт.

И у нас получается следующая картина:

  1. Мы знаем, что нужно сделать
  2. Мы знаем, сколько времени у нас есть

Получается, что во время планирования мы должны выяснить, как мы можем достичь цели за фиксированное время. Вопрос только в том, каким именно путём мы его достигнем.

Именно в этом и заключается основная функция сторипоинтов — они помогают команде найти оптимальный способ достижения цели в рамках ограничений спринта.

Как это работает на практике:

  • Команда видит цель спринта и доступное время
  • Оценивает сложность разных подходов к решению в сторипоинтах
  • Выбирает тот подход, который максимизирует шансы достижения цели при минимальном ущербе качеству
  • При необходимости декомпозирует сложные задачи на более простые

Главная цель сторипоинтов: декомпозиция 🎯

Сторипоинты нужны в первую очередь для декомпозиции задач.

Как сторипоинты помогают принимать решения о декомпозиции:

  • 20+ sp = задача слишком сложная, требует декомпозиции
  • 13 sp = можно попробовать декомпозировать для снижения рисков
  • 8 sp = оптимальная сложность для большинства задач
  • 5 sp и меньше = задачи готовы к выполнению

Практический пример:
Задача "Переписать систему аутентификации" оценивается в 20 sp. Команда понимает, что это слишком сложно, и разбивает на:

  • "Спроектировать новую архитектуру" (8 sp)
  • "Создать базовые компоненты" (5 sp)
  • "Настроить миграцию данных" (5 sp)
  • "Протестировать интеграцию" (3 sp)

Цель этого процесса — разобрать на части сложные задачи и получить набор достаточно простых задач, в которых будет меньше рисков.

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

Процесс оценки ⚡

Сторипоинты нужны для поиска оптимального решения в строго заданных рамках.

Когда и как происходит оценка

Оценка происходит на груминге и незначительно корректируется во время планнинга. Или, если в грумингах нет нужды, осуществляется на планнинге. В обоих случаях в процессе участвует вся команда, что очень сильно помогает с декомпозицией и дизайном. Единственная цель этого процесса - поиск оптимального решения, которое позволит команде достичь цели за спринт с минимальной потерей в качестве.

Коллективное обсуждение и декомпозиция

Коллективное обсуждение позволяет увидеть задачу с разных сторон, выявить скрытые сложности и найти способы разбить её на более простые части.

Чем проще задача, тем меньше в ней рисков. Чем меньше рисков, тем больше шансов, что цель спринта будет достигнута.

Поиск локального оптимума

Сторипоинты, в которые мы оцениваем задачи, позволяют нам сразу высказать, насколько придуманное нами решение сложное. После этого мы можем обсудить разные варианты решения и произвести корректировку с учётом новой информации. То есть, при помощи сторипоинтов мы совместно ищем локальный оптимум и записываем согласованное решение, тем самым уменьшая сложность задачи для исполнителя. Интересы бизнеса при этом не страдают, поскольку время, отведённое на спринт, не меняется, и не меняется цель. Меняется только способ имплементации.

Фокус на бизнес-интересах

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

Управление техническим долгом в этом случае переносится на уровень бизнеса. Хотите больше технических задач? Объясните бизнесу, какую ценность они принесут.

Скрам всегда ставит во главу угла интересы бизнеса, и это правильно. Делайте как скрам.

Практические выводы ✅

Правильное понимание сторипоинтов помогает:

  • Ставить реалистичные цели спринта
  • Находить оптимальные решения в рамках фиксированного времени
  • Снижать риски за счёт декомпозиции сложных задач
  • Фокусироваться на интересах бизнеса, а не на идеальных технических решениях

От сторипоинтов к времени 📈

Задачи переводятся во время с использованием статистических методов по историческим данным команды (метод монте-карло).

Команда на планнинге, по сути, делает ставку, что определённый объём работ (в сторипоинтах) будет завершён за итерацию. Это позволяет планировать спринты более реалистично, так как со временем команда учится делать реалистичные ставки.

Справка: На практике команды используют velocity (среднее количество сторипоинтов за спринт) и burn-down charts для отслеживания прогресса. Бизнес перестаёт полагаться на оценки разработчиков в часах, и оперирует масштабами спринтов. Роудмаппинг становится более простым и значительно более гибким, так как роудмап можно менять хоть каждую итерацию.

Сторипоинты — это инструмент для поиска локального оптимума в рамках ограничений бизнеса, а не калькулятор человеко-дней.

Что делать дальше? 🚀

  1. На следующем груминге спросите команду: "Насколько сложная эта задача?" вместо "Сколько времени займет?"

  2. При планировании спринта фокусируйтесь на цели, а не на заполнении времени задачами

  3. Если задача больше 8 sp — подумайте, можно ли её декомпозировать

  4. Отслеживайте velocity команды, чтобы понимать реальную производительность

  5. Обсуждайте риски и способы их минимизировать при оценке сложных задач, а не пытайтесь угадать время

Сторипоинты в эпоху ИИ 🤖

В эпоху ИИ-ассистентов сторипоинты становятся идеальным инструментом для измерения "силы" ИИ-агента: мы оцениваем, насколько сложные задачи они могут решить.

Как это работает:

  • ИИ-агент может решать задачи до определенного уровня сложности (например, до 5 sp)
  • Задачи выше этого уровня требуют человеческого участия
  • Понимая способности ИИ, мы знаем, до какой степени детализировать задачи для них

Практический пример:

  • Задача "Написать простой SQL-запрос" (2 sp) - ИИ справится
  • Задача "Оптимизировать медленный запрос в продакшене" (8 sp) - нужен человек
  • Задача "Спроектировать архитектуру БД" (13 sp) - только человек

Сторипоинты становятся ватерлинией, ниже которой человек может не напрягаться.

Навык декомпозиции сложных задач на простые обретает новую ценность, так как он отличает того, кто может заставить агентов сделать сложную задачу от тех, кто не может.

Заключение

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


P. S.: Для желающих углубиться в тему - вот хорошая статья про сложность и способы её оценки.

21 комментарий 👇

сторипойнты это фикция придуманная масонами

  Развернуть 1 комментарий

@ppilif, слова не мальчика, но мужа

  Развернуть 1 комментарий
Nickolay Kopylov Head of Engineering | Principle Software Engineer 3 часа назад

Создатель идеи сторипоинтов многократно раскаялся в содеянном. Особенно сильно он сожалел о выборе именно чисел для выражения сложности.

Мы люди простые - видим число и сразу хотим к нему применять всё то, что мы знаем о числах: сложение, вычитание, умножение.

А его идеей было просто каким-то образом выразить сложность так, чтобы можно было сравнивать единицы работы между собой, и не более того. Сравнивать не как "эта задача в 2.5 раза сложнее" просто, задача A сложнее чем задача B и проще чем задача C.
Это, собственно, главное и единственное свойство сторипоинтов.

Но мы, отталкиваясь от того что это числа, начали к этому применять кучу разных других штук - "а давайте теперь считать статистику", а "а давайте оценивать и прогнозировать производительность" и вот это всё.

Три бэклога: в одном 32 задачи по одному сторипоинту, в другом - две по 16, в третьем - одна на 32. Численно это три одинаковых бэклога. На практике - три совершенно разных, несравнимых между собой.
Где первый команда может отщёлкать на изи.

Второй - может напрячься и сделать, но может оказаться что всё не так сложно.

А третий окажется проектом на полгода.

  Развернуть 1 комментарий

@nkopylov, вот точно в майках мерять надо. S\M\L. а они потом ещё и растягиваются после стирки

  Развернуть 1 комментарий

Хм, то есть при velocity == 10
в спринт одна команда напихает 10 задач номер 1, а другая 2 задачи номер 6.

После чего команда номер 1 всю неделю копирует компоненты, а вторая уже через час идет бухать.

Кажется количество статей с названием "А как же блин правильно использовать стори поинты" в интернете много говорит о самих стори поинтах.

Мой совет на эту тему - не парьтесь используйте оценки в часах и если не путать календарное время с трудозатратами то хуже стори поинтов не будет.

  Развернуть 1 комментарий

@underlow, про трудозатраты и время хороший поинт. Это тоже важные атрибуты задач при планировании, но на другом уровне. Они важны когда мы составляем бэклог продукта, а сторипоинты нужны только в бэклоге спринта. По сути, их даже не стоит никуда за пределы тех. команды выдавать - нет смысла. По ссылке внизу статьи есть статья Сергея Титкова, которая как раз разделяет трудозатраты, календарное время и сложность как три независимых атрибута.

По поводу двух команд - тут дело в том, что команды должны не просто набрать себе рандомных задач из беклога, а закрыть цель спринта и выкатить инкремент к продукту. Если команда закрыла цель спринта - она, по сути, выполнила работу, которую ей дал бизнес на это время. Смело можно идти бухать, поскольку свои деньги они отработали, и бизнес получил то, что хотел, в выделенное время. Или можно начинать следующий спринт, что более правильно.

  Развернуть 1 комментарий

Нужное делать, а ненужное — не делать. Хорошо делать, а плохо — не делать. Срочное и маленькое делать сейчас, никому не нужное и большое — не делать никогда.

А все попытки упихнуть всё в параллельно-перпендикулярные процессы, и потом пытаться складывать нескладываемое — это всё от лукавого.

  Развернуть 1 комментарий

@gwer, каеф - что нужно делать, а что не нужно? Что значит хорошо делать? Что срочное и маленькое? Если у тебя не диктатура и ты не решаешь сам, приходим к системе "два девелопера, три мнения и все неправильные".

  Развернуть 1 комментарий

@mighty_conrad, выходит, что девелоперы неправильные. Надо нанять правильных сначала. Ну либо оставить скрам, потому что оно как раз и нужно, чтоб масштабировать каких попало девелоперов, потому что люди всё ещё верят, что чтобы делать больше дел, надо просто нанять больше людей.

  Развернуть 1 комментарий

@gwer, не продолжу абсурдизм, но отмечу, что у Хэмминга в Art of Doing Science натурально прописано, что нужно иметь ротацию инженеров, потому что отдельных задачах появляются те самые мифические 10х и их надо оставлять, а остальных время от времени заменять.

  Развернуть 1 комментарий
alex konstantinov Менеджер проекта 3 часа назад

о, мы недавно в команде эту войну воевали. мне нравится, с каким упорством инженеры хотят избежать оценки в сроках и забывают, что бизнесу начхать на все кроме сроков и денег.

-- привет, я из соседнего отдела, когда будет релиз новой фичи чтобы мы могли ее (рекламировать, внедрять, продавать, обучать)?
-- она оценена в тридевятом спринте на 10 сторипоинтов в майке S
-- 🗿🗿🗿

  Развернуть 1 комментарий

@alexk, нормальный ответ. надо добавлять "дату выкатки тридевятого релиза в прод можешь уточнить у команды релиз менеджеров" - и всё будет ок.

и чувак "из соседнего отдела" должен понимать, что как скоуп релиза может переехать в следующий, так и дата релиза может сдвинуться, а не бить себя пяткой в грудь "я тут бизнес, дай мне точную дату, подпишись кровью что 1000% тогда будет, прибей гвоздями к хую". Вернее так тоже можно, но через эскалацию - это уже приоритетами называется, но это другая история, и, грубо говоря, на бизнес уровне только их установлением и надо заниматься, а не в кишки лазить "нет, ты мне скажи, если 8 часов оценено - значит через 8 часов на проде будет? нет? а через сколько?"

  Развернуть 1 комментарий

Вообще до момента планирования спринта все неплохо, сама идея оценивать сложность в чем-то даже изящная.

Но как обычно есть нюанс.

Сложность задачи это мера неопределенности. Чем меньше я понимаю про задачу, тем сложнее она мне кажется. И мы должны взять эту неопределенность и получить из нее время?

Отдельно хочется заметить что ни к какому фокусу на бизнес интересах стори поинты отношения не имеют, не надо их туда приплетать.

  Развернуть 1 комментарий

Сторипоинты - это скам, чтобы продать побольше времени под видом меньшей сложности там где надо и vice versa.

На пространстве СНГ кроме как для основания занижения/завышения оценки на перформанс ревью не используются.

Есть даже упоротые компании сливающие на отдел фиксированное количество сторипоинтов, которое должно быть "сожжено".

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

Время - понятное и прозрачное для всех участников измерение.

  Развернуть 1 комментарий

@lostinsoba, проблема со временем в том, что временная оценка должна быть вероятностной величиной. Скорее всего сделаю задачу за день, возможно повезёт и управлюсь за час, в крайнем случае всю неделю с ней провожусь, но вряд ли дольше. Но это слишком сложно.

На достаточно большом промежутке можно оценивать наиболее вероятным временем — все перекосы друг друга скомпенсируют. Но в рамкой одной итерации (которую все мечтают закрыть) это вызывает больше неудобств.

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

  Развернуть 1 комментарий

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

Выслуживающиеся и недостаточно опытные берут оптимистичную оценку. Набившие шишек — пессимистичную.

Чем это отличается от того, что на одну и ту же задачу разные люди назовут разное количество сторипоинтов?

Кажется тем, что если финальное слово будет за лидом, который захочет её занизить/завысить - неадекватное занижение/завышение времени будет заметно сразу, а вот абстрактным "sp" спекулировать можно в любую сторону.

Сегодня скажу что имел в виду сложность, завтра - что время.

  Развернуть 1 комментарий

@lostinsoba, про сложность договориться гораздо легче, если говоришь с инженерами. Плюс, самое главное, в процессе обсуждения сложности вы неизбежно дизайните задачу и обсуждаете решения, а значит, уменьшаете эту самую сложность. Суть сторипоинтов именно в этом, а не в том, чтобы просто назвать оценку.

Вообще, сторипоинты по-хорошему до бизнеса вообще не должны доходить, они ему не нужны. Бизнес должен получать уже готовую усреднённую оценку во времени. Это разработчики должны подстраиваться под сроки бизнеса, а не наоборот. Собственно, в статье об этом и говорится.

  Развернуть 1 комментарий

@underbird,

про сложность договориться гораздо легче, если говоришь с инженерами

Пока это просто утверждение. Какие есть этому примеры?

Вот в Авито добавили в поиск один фильтр, это стоило 1.5-2 месяца:
https://www.linkedin.com/posts/dpuchenkov_моя-первая-фича-в-проде-прошу-любить-activity-7339607130892652544-_jYn/?originalSubdomain=ru

Какой из этого вывод при оценке будущих задач можно было бы сделать если бы там было n сторипоинтов?

Вообще, сторипоинты по-хорошему до бизнеса вообще не должны доходить, они ему не нужны

А кому они нужны?

  Развернуть 1 комментарий

Ну то есть сторипоинты "как надо" - еще одно определение грейда сложности задачи. С вытекающими, преимущественно в штаны. Опять же, классика словарей, difficult и hard имеют более явное разделение определений, нежели "сложная" и "тяжелая", как минимум для меня и таким же доходягам. Если мне кто-то не объяснит зачем сторипоинты даже после этого текста и моего комментария, я буду их избегать и не играть в это jira-балатро, если решение будет за мной чтобы не путать себя, заказчиков и потенциальных напарников с подчиненными.

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб