Процессы: Scrum · Process: Scrum · урок 2 · 13 мин
Scrum в ML-работе, Kanban и оценки
Scrum for ML work, Kanban and estimation
ТемыScrum и процессы
Зачем
После урока ты объяснишь story points, velocity и Kanban без ошибок, дашь прогноз сроков диапазоном и покажешь, как планировать ML-работу с неизвестным исходом внутри двухнедельных Sprint. Это вопросы «how do you plan uncertain AI work?» и «what's your Definition of Done for an AI feature?», которые задают AI-инженерам на поведенческом и техническом раундах.
Оценка: story points и planning poker
Story points — относительная оценка объёма работы с учётом сложности, риска и неопределённости, а не часы. Команда сравнивает элемент с уже сделанными: «это вдвое больше той задачи». Людям легче сказать «втрое больше», чем «13,5 часа». Оценивают те Developers, которые будут делать работу.
Частый приём — planning poker. Каждый молча выбирает карту (типичная колода: 0, 1, 2, 3, 5, 8, 13, 20, 40, 100), все открывают одновременно, самый высокий и самый низкий объясняют свои числа, команда оценивает ещё раз. Смысл — разговор. Одновременное открытие убирает anchoring (привязку к первому названному числу), а разброс вскрывает скрытую работу: например, что для второго языка нужен отдельный eval-набор.
Напомню из прошлого урока: ни story points, ни velocity в Scrum Guide нет, это дополнительные практики.
Velocity и прогноз диапазоном
Velocity — сумма points полностью сделанных за Sprint элементов; наполовину сделанное считается как 0. Это инструмент прогноза для самой команды.
Пример. За три двухнедельных Sprint команда сделала 31, 27 и 35 points, в среднем 31. До выпуска в Backlog осталось 124 points. Прогноз: 124 / 31 = 4 Sprint. Диапазон по лучшему и худшему Sprint: 124 / 35 ≈ 3,5 и 124 / 27 ≈ 4,6 Sprint, то есть 7–10 недель. Прогноз называют диапазоном, а не датой.
Velocity — не мера продуктивности. Шкала у каждой команды своя, поэтому сравнивать команды бессмысленно. А цель «поднять velocity с 28 до 40» решается раздуванием оценок или срезанием проверок: прогноз теряет смысл, качество падает. Ron Jeffries, который, по его собственным словам, возможно, придумал story points, пишет, что «comparing teams on quality of estimates or velocity is harmful». В AI-команде падение velocity часто честное: в DoD добавили eval gate (автоматическую проверку качества, без которой изменение не проходит), и каждый элемент стал тяжелее.
Burndown chart показывает остаток работы по дням Sprint. Burnup chart показывает две линии — сделано и общий объём, поэтому рост объёма на нём виден. Для AI-работы, где объём растёт после экспериментов, burnup честнее.
Неопределённое — в timebox, а не в points
Часть ML-Backlog — это вопросы, а не features: дотянет ли маленькая модель до качества большой? Такую работу не оценивают в points, будто исход известен. Её оформляют как spike (короткое исследование) или timeboxed experiment (эксперимент с жёстким бюджетом времени). Шаблон:
- Question: может ли модель на 8B параметров сравняться с большой моделью на нашем наборе споров по картам?
- Timebox: 3 дня, 1 инженер, бюджет GPU задан заранее.
- Method: те же 200 задач, тот же prompt и tools, 4 прогона на задачу, языки отдельно.
- Decision rule: переходим, если task success хуже не больше чем на 2 пункта и в safety-наборе ноль новых провалов; иначе остаёмся.
- Done when: решение записано с числами, каким бы оно ни было.
Главная фраза: «An experiment that answers the question is done, even if the answer is no». Sprint Goal для такой работы формулируют как решение или пригодный Increment, а не обещание «модель достигнет 90%»: этим числом никто не управляет. Гайд прямо включает в работу Scrum Team «experimentation, research and development».
Definition of Done для AI-increment
Обычный DoD — код проверен, тесты пройдены, выложено на staging. Для AI-increment добавляют проверки, которые можно запустить:
| Пункт DoD | Как проверяется |
|---|---|
| Eval suite проходит пороги, записанные до изменения | eval-job в CI, отдельные числа по языкам |
| Safety и policy: ноль новых провалов | блокирующая проверка, не усредняется с остальным |
| Версии записаны: модель, prompt, tools, eval data, harness | manifest в репозитории, run id в отчёте |
| Model card (карточка модели) обновлена | review в pull request |
| Traces и мониторинг включены | trace виден на staging, оповещения настроены |
| Rollback проверен | откат на staging сделан хотя бы раз |
Где живёт гарантия: DoD в wiki — совет, а CI gate, который блокирует merge при провале eval, — гарантия. Ещё два правила. Режь работу вертикально: один intent (тип запроса) от вопроса до ответа на одном языке, с eval и передачей человеку, а не «Sprint 1 — данные, Sprint 2 — модель, Sprint 3 — интерфейс». На Sprint Review показывай eval dashboard с провалами, а не три удачных диалога: это и есть transparency.
Если внешняя проверка (model risk, security) длиннее Sprint, отдели «Done» от «released»: Increment прошёл DoD и стоит в shadow mode, пока идёт проверка, а пакет для проверяющих — отдельный элемент Backlog.
Kanban: поток вместо Sprint
Kanban по Kanban Guide (версия 2025.5) — «a strategy for optimizing the flow of value through a process». Три практики: определить и показать workflow (поток работы), активно управлять элементами в потоке, улучшать workflow. Фиксированных Sprint нет. Четыре метрики: WIP (work in progress — начато и не закончено), throughput (закончено за единицу времени), work item age (сколько идёт незаконченный элемент), cycle time (от начала до конца). SLE (service level expectation) — прогноз срока с вероятностью, по истории: «85% запросов на разметку закрываются за 6 дней».
Little's Law (закон Литтла из теории очередей; в самом Kanban Guide его нет): средний cycle time ≈ WIP / throughput. В работе 12 элементов, команда заканчивает 4 в неделю — средний элемент идёт около 3 недель. Хочешь 1,5 недели при том же throughput — держи WIP около 6. Меньше начатого параллельно — быстрее каждое дело.
| Ситуация | Лучше |
|---|---|
| Продуктовая цель на 2–4 недели, stakeholders хотят регулярно видеть Increment | Scrum |
| Поток разнородных заявок: инциденты, разметка, поддержка платформы | Kanban |
| Продуктовой команде мешают очереди и много начатого | Scrum с Kanban-практиками (часто зовут Scrumban) |
| Исследование с неизвестным исходом | timeboxed experiments внутри любого из двух |
Схема
Термины · Key terms
- story points
- относительная оценка объёма работы, не часы
- planning poker
- оценка картами с одновременным открытием
- velocity
- сумма points полностью сделанных за Sprint элементов
- burnup chart
- график сделанного и общего объёма
- spike
- короткое исследование с вопросом и решением в конце
- decision rule
- правило решения, записанное до эксперимента
- vertical slice
- срез через все слои, дающий пользователю ценность
- WIP (work in progress)
- сколько элементов начато и не закончено
- cycle time
- время от начала до конца одного элемента
- throughput
- сколько элементов закончено за единицу времени
- SLE (service level expectation)
- прогноз срока элемента с вероятностью
- Little's Law
- cycle time ≈ WIP / throughput
Сделай сам
Напиши spike по шаблону урока для своего вопроса: например, «заменит ли reranker на 0,6B параметров текущий на нашем наборе из 100 вопросов». Пять строк: Question, Timebox, Method, Decision rule, Done when. Правило решения — с числами.
Обсуди с тьютором: покажи spike и спроси, как результат мог бы выглядеть хорошим при ложном утверждении.
Проверь себя · ответ под вопросом
1Почему velocity нельзя делать целью?
2Команда за три Sprint сделала 20, 30 и 25 points, осталось 100. Какой прогноз?
3Эксперимент показал, что маленькая модель не подходит. Провален ли Sprint?
Interview questions · US / UK
1How do you plan AI work with an uncertain outcome inside two-week Sprints?
2What's your Definition of Done for an AI or agent feature?
3Velocity dropped from 40 to 28 points and your manager wants it back to 40. What do you say?
Ключевые фразы · Say it aloud
- Velocity is a planning tool, not a productivity metric.Velocity — для планирования, а не для оценки людей.
- I give forecasts as a range, not a date.Прогноз даю диапазоном, а не датой.
- I timebox research instead of pretending to estimate it.Исследование ограничиваю по времени, а не делаю вид, что оцениваю.
- An experiment that answers the question is done, even if the answer is no.Эксперимент сделан, если ответил на вопрос, даже отрицательно.
- The eval job in the pipeline blocks the merge.Eval-job в pipeline блокирует merge.
- We slice vertically: one intent, end to end, one language first.Режем вертикально: один intent целиком, сначала один язык.
- Kanban optimises flow: limit work in progress, watch cycle time.Kanban про поток: ограничь начатое, следи за cycle time.
Материалы
- The Kanban Guide (v2025.5) — определение, три практики, четыре метрики, SLE (10 минут)
- Atlassian — Story points and estimation — как оценивают и когда points вредят (8 минут)
- Ron Jeffries — Story Points Revisited — откуда points и почему сравнивать команды вредно (6 минут)
- Continuous Delivery for Machine Learning (martinfowler.com) — три оси изменений: code, model, data (20 минут)