Elena Mashitskaya
WorkКейсы  /  PlanningПланирование

Planning a quarter when almost nothing is estimated

Как планировать квартал, когда оценок почти нет

Story points sat on a tenth of the tasks, and half the closed ones had nobody's name on them. So I counted what the team actually finishes.

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

QIC · Life & Medical · QatarКатар · 2026 Data · 10 sprints from Jira, one snapshotДанные · 10 спринтов из Jira, один снимок people shown as roles, initiatives as typesлюди показаны ролями, инициативы типами
median tasks closed per sprintмедиана закрытых задач за спринт
AnalysisАналитикаone personодин человек8
Front-endФронтtwo peopleдва человека11
QAone, shared with the app teamодин, делим с командой приложения3
DesignДизайн5
ContentКонтент3
A web feature goes analysis → front-end → QA. The chain can't move faster than QA: three a sprint, with about 37 waiting.
Web-фича идёт аналитика → фронт → QA. Быстрее QA цепочка не пойдёт: три задачи за спринт при очереди примерно в 37.
What I had to work withС чем пришлось работать

Three reasons the usual numbers were useless

Три причины, почему обычные цифры не годились

10%of subtasks had an estimateсабтасков с оценкойFive out of 49. Design, content and analysis had none at all, so plan-versus-fact in points was fiction.Пять из 49. У дизайна, контента и аналитики оценок не было вообще, так что план/факт в поинтах — фикция.
34 / 51closed tasks with no assigneeзакрытых задач без исполнителяA review pack that automation creates and closes in a batch. Nobody actually did it, so per-person counts lie.Пакет ревью, который автоматика создаёт и закрывает пачкой. Его никто не делал, поэтому личные цифры врут.
1 → 2weeks per sprint, mid-seriesнедели в спринте, посреди рядаSprints changed length halfway through the data, so every chart has a bump that means nothing.Спринты сменили длину посреди данных, и на каждом графике появился горб, который ничего не значит.

Bad data is still data. You just have to count something else.

Плохие данные — тоже данные. Просто считать надо другое.

What I did insteadЧто я сделала вместо этого

Five decisions, and why

Пять решений и почему так

Count tasks, not pointsСчитать задачи, а не поинты
Ten sprints of closed tasks per discipline. Rough, but it exists and nobody has to fill anything in.Десять спринтов закрытых задач по каждой дисциплине. Грубо, зато эти данные есть и никому не надо ничего заполнять.
Median, not averageМедиана, а не среднее
One holiday shouldn't drag the whole team's number down for a quarter.Один отпуск не должен на квартал занижать цифру всей команде.
Count by task type, not by nameСчитать по типу задачи, а не по имени
Then it doesn't matter whose ticket it is, and nobody ends up compared to anybody.Тогда неважно, на кого записан тикет, и никто ни с кем не сравнивается.
Plan by the slowest stepПланировать по самому медленному шагу
Everything before QA is just a queue. Whatever we take on, it leaves at three a sprint.Всё, что до QA, — это очередь. Сколько ни набери, выходит по три задачи за спринт.
Release every week anywayВсё равно релизить каждую неделю
What goes in the release floats. The rhythm doesn't, and that turned out to matter more.Состав релиза плавает, а ритм — нет. Это оказалось важнее.
The plan itselfСам план

The row at the bottom is the whole point

Главное здесь — нижняя строка

Week 30: four things land on QA at onceНеделя 30: на QA прилетает четыре задачи разом One tester, four hand-offs in the same week — that is the whole point of the chart below.Один тестировщик и четыре передачи в одну неделю — ради этого график и нужен.

initiative (type)инициатива (тип) 2526272829303132
New product, webНовый продукт, weblaunchзапуск → live
Payment stepШаг оплатыexternal partnerвнешний партнёр → live
Purchase flow fixПравка флоу покупкиimprovementулучшение → live
Regulatory changeТребование регулятораcomplianceкомплаенс → live
Second product, webВторой продукт, weblaunchзапуск
landing on QAприлетает на QA ···234 · spread it4 · сгладить3·

swipe to week 32листните до 32-й недели

analysisаналитика design · content · buildдизайн · контент · разработка QA waiting on a partnerждём партнёра 5 rows of 16 · types instead of names5 строк из 16 · типы вместо названий

Where more lands on QA than it can close, the plan says "spread it out", not "drop it". The work doesn't disappear either way, but a smoothed week is something a team can do.

Там, где на QA прилетает больше, чем он успевает, план говорит «сгладить», а не «убрать». Работа никуда не денется, а вот размазанную по неделям её реально сделать.

Waiting on a partner is drawn as waiting. It isn't our week, and the chart shouldn't pretend otherwise.

Ожидание партнёра так и нарисовано — ожиданием. Это не наша неделя, и график не должен делать вид, что наша.

Tempting and wrongЗаманчиво и неправильно

Three fixes that would have made it worse

Три починки, которые сделали бы хуже

"Let's estimate everything first."«Давайте сначала всё оценим». A quarter spent waiting for data, and then a plan built on numbers nobody trusts yet anyway.Квартал уходит на ожидание данных, а потом план всё равно строится на цифрах, которым пока никто не верит.
"Let's compare people by tasks closed."«Давайте сравним людей по закрытому». Half the closures have no name on them. The wrong people would look slow, and I'd never get that trust back.У половины закрытий нет имени. Медленными выглядели бы не те люди, и это доверие потом не вернуть.
"Let's give QA less work."«Давайте дадим QA меньше работы». The work still exists, it just piles up somewhere else. The real fix is the sharing with the other team.Работа никуда не денется, просто скопится в другом месте. Чинить надо шеринг с соседней командой.
What happened nextЧем это кончилось

We widened the bottleneck instead of stretching the plan

Расширили горлышко, а не растянули план

The chart made the queue visible, but moving work around only moves the pile. So the front-end engineers started cross-checking each other's tickets against a checklist before anything reached QA — a second pair of eyes on someone else's work, not on their own.

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

That took roughly a third of the minor testing off QA: layout, obvious paths, small changes. The risky and the complex stayed where it belongs. Weeks like 30 stopped being a blocker — the tester still had four hand-offs, but they were no longer four full ones.

С QA ушло примерно треть минорного тестирования: вёрстка, очевидные сценарии, мелкие правки. Рискованное и сложное осталось там, где ему место. Недели вроде тридцатой перестали быть блокером — четыре передачи никуда не делись, но это уже не четыре полноценных.

Where the numbers come fromОткуда цифры

What's real here and what's my guess

Что здесь настоящее, а что моя догадка

RealНастоящее
  • Ten sprints of closed tasks from Jira, by type and status, taken on one date
  • Десять спринтов закрытых задач из Jira, по типу и статусу, снято на одну дату
  • Initiative statuses, straight from the portfolio board
  • Статусы инициатив — прямо с портфельной доски
  • All the counts on this page
  • Все цифры на этой странице
My estimate, and labelled as suchМоя оценка, и так и подписано
  • Which week each phase falls on. Jira doesn't know that, I placed them by hand
  • В какую неделю попадает каждая фаза. Jira этого не знает, я расставила руками
  • The load row: rough sizing, a signal to smooth, not arithmetic
  • Строка нагрузки: прикидка на глаз, сигнал «сгладить» — без точной арифметики
  • Not shown here: names, initiative titles, partners, and the plan-versus-fact in points
  • Здесь не показаны: имена, названия инициатив, партнёры и план/факт в поинтах
Plan by the slowest stepПланировать по самому медленному шагуEverything before it is a queue, however busy it looks.Всё, что до него, — очередь, как бы занято там ни выглядело.
Median beats averageМедиана лучше среднегоHolidays and crunches stop skewing the picture.Отпуска и авралы перестают портить картину.
Count by type, not by nameСчитать по типу, а не по имениFair to people, and the number survives handovers.Честно к людям, и цифра не ломается, когда задачу передают.
Say out loud where you guessedГоворить вслух, где догадкаOn the chart, next to the number. Not in a footnote nobody reads.На самом графике, рядом с цифрой. Не в сноске, которую никто не читает.

People are shown as roles, initiatives as types, and partners as "external partner". The counts are real and come from the page the team actually used.

Люди показаны ролями, инициативы типами, партнёры — «внешним партнёром». Цифры настоящие, с той самой страницы, которой пользовалась команда.