До списку уроків
11 клас · Урок 10 з 14

Канбан на даних: WIP, DoD, дорожня карта

виконано0%
Крок 1

Учора був tasks.json. Сьогодні буде roadmap.html

Тема 6, урок 2 з 2. Онлайн-дошки та управління проєктами. 120 хвилин

Минулого разу ти зібрав tasks.json — беклог із дієсловами, дедлайнами й критеріями готовності. Сьогодні з цього самого файлу сторінка roadmap.html намалює дошку в три колонки.

Різниця між «у мене є список задач» і «у мене є процес» — не в кількості задач. У списку бракує трьох речей. Сьогодні ти додаси всі три.

Перше — обмеження. Це число: скільки задач тобі дозволено тримати в роботі одночасно. Більше не береш, поки не закриєш одну зі старих.

Друге — критерій завершення. Це список умов, за яких задачу можна назвати зробленою. Поки хоч одна умова не виконана, картка лишається на місці.

Третє — горизонт. Це поділ задач на три купки: що ти робиш зараз, що відкладено на потім і що не робитимеш ніколи. Третя купка потрібна не менше за перші дві.

Після уроку ти вмієш

Слова WIP-ліміт, Definition of Done і burndown поки нічого не означають — розберемо кожне тоді, коли воно знадобиться.

Хід уроку

ЕтапХвЩо ти зробиш
Вхідний зріз беклогу10Порівняєш свій tasks.json із класом: скільки задач, епіків, який розподіл пріоритетів
Канбан і WIP-ліміт20Побачиш на числах, чому пʼять задач одночасно повільніше, ніж по одній
Канбан на даних15Вставиш свій JSON у тренажер, потягаєш картки й упрешся у власний WIP-ліміт
Definition of Done і віхи15Напишеш, що означає «готово», і позначиш три віхи запуску
Практика: roadmap.html35Зверстаєш сторінку, у якій немає жодної назви задачі — усе приходить із JSON
Симулятор спринту20Прокрутиш 10 робочих днів свого беклогу з подіями з реального життя
Автоперевірка5Запустиш check11 6 — і закриєш тему 6 повністю
Артефакт сьогоднішнього уроку Файл ~/www/roadmap.html: дошка в три колонки плюс блок віх. Усі назви задач сторінка забирає з tasks.json сама. Другий файл — оновлений tasks.json зі справжніми статусами задач. Перевірка підмінить назву однієї задачі в JSON і подивиться, чи змінилася сторінка.
Крок 2

Канбан: колонка — це стан задачі, а не етап життя

Найчастіша помилка першої дошки — колонки «Понеділок / Вівторок / Середа»

Слово канбан (看板) японською означає «сигнальна картка». На заводах Toyota така картка була дозволом на роботу. Ділянка не бралася за нову деталь, поки не отримувала картку далі по конвеєру.

Картка приходила тоді, коли на наступній ділянці звільнялося місце. Тобто правило звучало не «роби скільки встигнеш», а «роби стільки, скільки сусід здатен узяти». Сучасна канбан-дошка — та сама ідея, тільки для розумової праці.

Звідси головне правило колонок. Колонка описує стан, у якому зараз перебуває задача. Кожен перехід між колонками означає, що з задачею щось сталося. А от тиждень, людину чи розділ проєкту колонкою робити не можна. Тоді картка ніколи нікуди не рухається, і дошка стає кольоровим списком.

КолонкаЦе стан?Чому
todo · doing · doneТакЗадача справді переходить із одного в інший, і перехід видно
«Беклог → В роботі → На перевірці → Готово»ТакТе саме, але з окремим станом очікування чужої дії
«Понеділок / Вівторок / Середа»НіЦе календар. Задача не «переходить у середу» — вона просто там лежить
«Ваня / Оля / Максим»НіЦе список виконавців. Виконавець — поле картки, а не колонка
«Лендинг / Форма / Аналітика»НіЦе епіки. У тебе вони вже є полем epic у tasks.json
Перевірка колонки одним питанням Спитай себе: «що має статися з задачею, щоб вона переїхала звідси праворуч?» Якщо відповідь є — це стан. Наприклад: «я дописав код» або «рецензент подивився». Якщо відповіді немає або це «настане четвер» — це не колонка.
Питання

Одинадцятикласник зробив дошку з колонками «Дизайн», «Код», «Тексти», «Публікація» і розклав по них усі 12 задач свого стартапу. За тиждень жодна картка не переїхала. Що з дошкою?

Крок 3

WIP-ліміт: чому пʼять задач одночасно — це нуль задач

Головна ідея уроку, і вона рахується на пальцях

WIP — work in progress, робота в процесі: усе, що почато, але ще не закінчено. WIP-ліміт — число, яке ти сам собі призначаєш: «у колонці “в роботі” не більше трьох карток». Виглядає як зайва бюрократія. Насправді це єдина річ на дошці, яка змушує закінчувати, а не тільки починати.

Арифметика на пʼяти задачах

Уяви пʼять задач, кожна на два дні роботи. Разом — десять днів праці. Розкласти їх можна двома способами, і сумарна праця в обох однакова.

Паралельно: почав усі пʼять одразу день 13 57 910 АБВ ГД по 1/5 дня на кожну задачу — жодна не рухається Перша готова задача — день 10. Середній час до готовності — 10 днів. Послідовно: WIP-ліміт = 1 АБВ ГД день 2день 4 день 6день 8 Перша готова задача — день 2. Середній час до готовності — 6 днів.
Обидва варіанти витрачають однакові 10 людино-днів і обидва закінчуються на десятий день. Різниця в тому, коли зʼявляється перший результат: (2+4+6+8+10) ÷ 5 = 6 днів проти 10. Це 40 % економії очікування — і нуль додаткових зусиль. Схема ілюстративна: «два дні на задачу» взято для рівного рахунку.

Тепер додай те, чого на схемі немає. Ти повернувся до задачі після перерви — і кілька хвилин просто згадуєш. Де лежав той файл? Що ти вже пробував? Чому відмовився від першого варіанта?

Ці хвилини звуться перемиканням контексту. Голова щоразу робить дві речі: наводиться на нову ціль і піднімає з памʼяті все, що ти знав про задачу.

Рубінштейн, Меєр і Еванс виміряли ці втрати 2001 року. У їхніх дослідах перемикання зʼїдало до 40 % робочого часу. Досліди були лабораторні, не про верстку лендинга. Тому бери 40 % як порядок величини, а не як точне число для себе.

Верхній варіант насправді гірший, ніж на схемі Схема намальована чесно-оптимістично: у ній сумарна робота однакова. З перемиканням контексту паралельні пʼять задач не закінчаться на десятий день — вони закінчаться пізніше. Послідовний варіант не програє нічого: він або кращий, або такий самий.
Питання

Однокласник каже: «Яка різниця, як робити, — усі пʼять задач усе одно займуть десять днів, роботи ж однаково». Що ти відповіси, щоб це був аргумент, а не думка?

Крок 4

Затор: чому «в роботі» має бути вузьким місцем

Ліміт нічого не прискорює. Він робить проблему видимою — і це його робота

Без ліміту дошка виглядає добре: у «todo» порожньо, у «doing» тісно, усі зайняті. Саме тому вона й небезпечна — відчуття зайнятості і результат перестають бути одним і тим самим. Задача, яка тиждень стоїть у «в роботі», нікому нічого не дала. Її не можна показати, не можна перевірити, не можна викинути. Вона просто займає голову.

Без ліміту WIP-ліміт = 3 до роботи2 готово в роботі 7 0 порожньо сьомий день Усі зайняті. Замовник не отримав нічого. до роботи2 в роботі 3 з 3 готово 4 місць немає: щоб узяти нову, закрий стару Зайнятих менше. Готового — чотири штуки.
Ліворуч ліміту немає, і колонка «в роботі» перетворилася на склад. Праворуч ліміт 3: щоб узяти нову картку, спершу треба звільнити місце — тобто щось закінчити. Числа на схемі ілюстративні.

Закон Літтла: скільки часу задача житиме на дошці

Є формула, яку не треба вигадувати: WIP = пропускна здатність × час проходження. Математик Джон Літтл довів її 1961 року для черг.

Формула працює скрізь, де щось заходить і виходить рівним потоком. Каса в супермаркеті, приймальне відділення лікарні, канбан-дошка — правило те саме.

Перевернемо її: час проходження = WIP ÷ пропускна здатність. Ти закриваєш дві задачі на тиждень. Отже:

Карток у «в роботі»Закриваєш на тижденьСкільки живе задача
10210 ÷ 2 = 5 тижнів від старту до готовності
626 ÷ 2 = 3 тижні
323 ÷ 2 = 1,5 тижня

Зверни увагу: пропускна здатність у трьох рядках однакова. Ти не став працювати швидше — ти просто менше почав. А час очікування впав утричі. Це і є вся математика WIP-ліміту.

Питання

У вашій колонці «в роботі» сім карток і жодної в «готово» вже тиждень. Що відбувається і з чого почати?

Питання

Ти закриваєш 3 задачі на тиждень і тримаєш у «в роботі» 12 карток. Однокласник питає, коли буде готова задача, яку ти щойно почав. Яка чесна відповідь?

Крок 5

Твоя дошка, намальована з твого JSON

Встав свій tasks.json — сторінка збере з нього дошку, стежитиме за WIP-лімітом і поверне змінений JSON назад

Це той самий механізм, який за півгодини ти зробиш у roadmap.html. Беремо масив обʼєктів, групуємо за полем status, малюємо три колонки. Тут він уже готовий — щоб ти спершу зрозумів поведінку, а вже потім писав код.

Канбан на даних

До роботи0
ліміту немає: сюди можна складати скільки завгодно
В роботі0
WIP-ліміт 3
Готово0
тільки те, що пройшло свій done_criteria
У роботі0
Готово0%
Задач усього0
готово в роботі до роботи
Картки тягаються мишею. На телефоні — кнопки і на картці.

Тренажер працює у твоєму браузері й нікуди нічого не надсилає. Демо-беклог складено автором сторінки за схемою з уроку 9: 12 задач, 4 епіки, дедлайни в жовтні–листопаді. Твої числа будуть свої.

Два пункти автоперевірки видно просто тут check11 6 вимагає не більше 3 задач у doing і щонайменше 40 % у done. Обидва числа тренажер показує згори. Якщо колонка «в роботі» червона — червоним буде й критерій.
Питання

Ти перетягнув четверту картку в «в роботі», колонка почервоніла. Спокуса — підняти ліміт із 3 до 4, і червоне зникне. Коли так робити чесно, а коли це самообман?

Крок 6

Definition of Done: «зроблено» — це не «я дописав»

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

Слово «готово» — найдорожче слово в проєкті, бо кожен розуміє його по-своєму. Ти вважаєш задачу готовою, коли код працює в тебе на ноутбуці. Вчитель — коли сторінка відкривається з сабдомену. Однокласник, який робить наступну задачу, — коли він може на неї спертися. Три різні «готово» на одну картку — і картка їздить із «done» назад у «doing» третій раз.

Тому «готово» домовляються заздалегідь і записують. Такий запис зветься Definition of Done, скорочено DoD. Це один перелік умов, спільний для всіх задач проєкту, а не опис окремої картки.

У Scrum Guide 2020 правило суворе. Робота, яка не відповідає DoD, не випускається й навіть не показується — вона повертається в беклог.

Що бачить автор: «я дописав» Що бачить DoD: пʼять умов Зверстати секцію відгуків t7 · epic: лендинг · effort 2 · до 27.10 код написаний і працює в мене виглядає як у макеті я себе перевірив залито на сервер? хтось, крім мене, це бачив? Картка стоїть у «готово». Насправді ні. Definition of Done проєкту однаковий для всіх 12 задач, написаний до старту 1 · працює: робить те, що обіцяє картка 2 · перевірено: відкрито в іншому браузері 3 · залито: файл лежить у ~/www/ 4 · доступно: сабдомен віддає 200 5 · записано: рядок у CHANGELOG.md Тільки тепер картка має право на «готово».
Ліва картка не бракована — вона просто не дійшла. DoD не робить роботу більшою: він робить її кінець перевірним. Пʼять пунктів праворуч — приклад DoD саме для нашого модуля; свій можна зробити коротшим.

Чому DoD пишеться до роботи, а не після

Якщо перелік умов зʼявляється після того, як робота зроблена, він завжди підганяється під результат: «ну, задокументувати можна й потім». Написаний до старту, DoD виконує три функції одразу:

ФункціяЩо це дає на практиці
ОцінкаТи рахуєш час на всі пʼять пунктів, а не лише на код. Тому оцінки перестають бути втричі оптимістичними
СуперечкаПитання «це готово чи ні» вирішується списком, а не тим, хто гучніше
ЛімітЗадача звільняє місце в «в роботі» тільки коли справді закрита — інакше WIP-ліміт нічого не обмежує
DoD і done_criteria — це різні речі У твоєму tasks.json кожна задача має власний done_criteria: що саме має запрацювати в цій конкретній задачі. DoD — спільний для всіх: у якому стані будь-яка задача вважається завершеною. Картка готова, коли виконано і своє done_criteria, і загальний DoD.
Питання

Однокласник переносить картку в «готово» зі словами: «я дописав, вдома доллю». Ти відповідаєш за цей проєкт. Що не так із цим переносом із погляду процесу, а не дисципліни?

Питання

Команда закінчила спринт і аж тоді сіла писати Definition of Done — «щоб зафіксувати, як ми працювали». Що з таким DoD не так?

Крок 7

Дорожня карта — це не список задач

Беклог відповідає «що»; карта відповідає «коли й навіщо»

Беклог — усе, що спало на думку, відсортоване за пріоритетом. Дорожня карта — інший документ: вона показує, які проблеми ти берешся розвʼязати найближчим часом і в якому порядку. Тому в карті не 40 рядків, а 6–8, і кожен має причину, а не тільки назву.

Найпоширеніший формат карти сьогодні — три горизонти Зараз / Далі / Колись (now / next / later). Його ввела Джанна Бастоу з ProdPad.

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

ЗАРАЗ ДАЛІ КОЛИСЬ роблю просто зараз наступні на черзі поки що ідея Задачі з дедлайнами Проблеми без дат Тільки напрямки Форма відгуку · до 20.10 Текст «Проблема» · до 24.10 OG-превʼю · до 27.10 Люди не розуміють ціни Немає що показати на Demo Day Мобільний застосунок Англійська версія упевненість висока упевненість середня упевненість низька деталізація невизначеність Що правіше — то менше подробиць і то більше шансів, що передумаєш. Це нормально.
Три горизонти замість дат. У «зараз» стоять дедлайни: ці задачі вже почалися. У «далі» записані проблеми, а не готові рішення. «Колись» — місце для ідей, які шкода забути, але робити їх ти зараз не збираєшся.

Чому дати в шкільному проєкті орієнтовні

Кожен рядок карти спирався б на оцінку часу. А оцінка часу — це прогноз людини, яка ще не робила цієї задачі. У тебе на модуль 14 уроків, між ними тиждень. І саме в цей тиждень трапляється контрольна з хімії. Тому дата в due — це орієнтир і сигнал, а не обіцянка.

Сигнал читається так. Один перенос — буває. А коли дата зсувається вдруге, справа вже не в тому, що ти не встиг. Це означає, що задача більша, ніж здавалося, і її треба розбити.

Віха — не задача Віха (milestone) — момент, коли можна щось показати іншій людині: «бриф готовий», «лендинг відкривається з сабдомену», «Demo Day». Віха не має виконавця й ефорту, вона нічого не робить сама — це позначка на шкалі, до якої тягнуться задачі. Три віхи запуску ти сьогодні поставиш у roadmap.html.
Питання

Ти показуєш учителю сторінку, де під заголовком «Дорожня карта» йде список із 34 пунктів, відсортований за датою створення. Він каже: «Це не карта». Чого саме тут бракує?

Крок 8

Чому сторінка тягне JSON, а не переписує його руками

Одне джерело правди. Правка в одному місці, а не в двох

Спокуса зробити roadmap.html просто гарною сторінкою з написаними руками картками величезна: так швидше й видно результат одразу. Проблема зʼявиться через тиждень, коли ти закриєш задачу. Тепер її треба виправити в tasks.json і в roadmap.html. Один із двох файлів рано чи пізно відстане — і сторінка почне брехати.

Написано руками в HTMLВідрендерено з JSON
Змінити статус задачіПравити у двох файлахПравити в одному
Додати задачуСкопіювати блок розмітки й не забути класиДописати обʼєкт у масив
Порахувати «скільки в роботі»Порахувати очимаfilter().length
АвтоперевіркаНе може відрізнити правду від версткиПідмінює JSON і дивиться, чи змінилася сторінка
Ціна помилкиСторінка показує неправду й ніхто не помічаєСторінка показує помилку розбору

Це той самий принцип, що й дизайн-токени в brand.css з уроку 5. Там колір записаний один раз у змінній, а не двадцять разів у розмітці. Тут — те саме, тільки для даних.

Каркас roadmap.html

Нижче — скелет, від якого ти відштовхуєшся. У ньому навмисно немає жодної назви задачі: усе, що бачить користувач, приходить із fetch.

roadmap.html — фрагмент
<link rel="stylesheet" href="brand.css">
<h1>Дорожня карта</h1>
<p id="err" hidden></p>

<div class="board">
  <section><h2>До роботи <span data-cnt="todo"></span></h2>
    <div data-col="todo"></div></section>
  <section><h2>В роботі <span data-cnt="doing"></span></h2>
    <div data-col="doing"></div></section>
  <section><h2>Готово <span data-cnt="done"></span></h2>
    <div data-col="done"></div></section>
</div>

// нижче — усередині <script>
fetch('tasks.json')
  .then(r => { // 404 не кидає виняток — перевіряємо самі
    if(!r.ok) throw new Error('tasks.json не знайдено: ' + r.status);
    return r.json();                // зламаний JSON кине тут
  })
  .then(draw)
  .catch(e => {                     // порожній екран — найгірша помилка
    const p = document.getElementById('err');
    p.hidden = false;
    p.textContent = 'Дошку не побудовано. ' + e.message;
  });

function draw(tasks){
  ['todo','doing','done'].forEach(st => {
    const box = document.querySelector('[data-col="' + st + '"]');
    const list = tasks.filter(t => t.status === st);
    document.querySelector('[data-cnt="' + st + '"]').textContent = list.length;
    box.textContent = '';
    list.forEach(t => {
      const card = document.createElement('article');
      const h = document.createElement('b');
      h.textContent = t.title;      // textContent, а не innerHTML
      const m = document.createElement('small');
      m.textContent = t.epic + ' · ' + t.priority + ' · до ' + t.due;
      card.append(h, m);
      box.appendChild(card);
    });
  });
}
Пастка: подвійний клік по файлу не спрацює Якщо відкрити roadmap.html подвійним кліком, адреса буде file:///…, і fetch отримає помилку CORS. Браузери вважають локальні файли різними джерелами й дозволяють fetch тільки по http і https. Перевіряй сторінку на сабдомені або підніми локальний сервер: python3 -m http.server 8000 у теці з файлами і далі http://localhost:8000/roadmap.html.
Пастка: JSON з BOM PowerShell із ключем -Encoding utf8 дописує на початок файлу три невидимі байти — їх звуть BOM. Ти їх не бачиш, а r.json() на них падає з повідомленням Unexpected token. Зберігай ось так:
збереження JSON без BOM
# PowerShell 5.1 — єдиний надійний спосіб
[IO.File]::WriteAllText("$HOME\tasks.json", $text, (New-Object Text.UTF8Encoding $false))

# Git Bash, macOS, Linux
cat > tasks.json

# перевірити, що файл валідний, перед заливкою
# Git Bash, macOS, Linux — тут && працює
python3 -m json.tool tasks.json > /dev/null && echo "JSON ok"

# PowerShell 5.1 && не розуміє — тільки окремими командами
python -m json.tool tasks.json | Out-Null; if ($?) { "JSON ok" }
Питання

Учитель відкрив твій roadmap.html, змінив у tasks.json назву однієї задачі на «ТЕСТ-123» і перезавантажив сторінку. Назва не змінилася, хоча дошка виглядає ідеально. Що він зараз запише в перевірку і чому це справедливо?

Крок 9

Burndown: лінія, яка майже ніколи не буває прямою

Одна діаграма, яка відповідає на питання «ми встигаємо чи ні»

Burndown (буквально «згоряння») показує одне число щодня: скільки роботи ще лишилося. Не скільки зроблено — скільки лишилося. Пряма похила лінія — це план. У спринті 10 днів і 30 одиниць роботи, отже щодня має «згоряти» по 3. Ламана — реальність.

3024 1812 60 12 34 56 78 910 робочий день спринту план: по 3 одиниці на день дні 1–3: усе «майже готово» день 4: замовник додав вимогу дні 7–10: усе закривається
Три типові форми реальної лінії. Полиця на початку — задачі почали, але жодної не закрили: класичний перевищений WIP. Стрибок угору — роботи стало більше, ніж було: нова вимога або задача виявилася вдвічі більшою. Обрив у кінці — усе закрили останніми днями, часто ціною DoD. Числа на схемі ілюстративні.

Лінія рідко буває прямою, і причина проста. Пряма означала б, що ти знав обсяг роботи наперед і нічого не змінилося. Так не буває.

Тому графік читають не на «збігається чи ні», а на форму. Рівна полиця — задачі стоять, проблема з WIP. Різкий стрибок угору — роботи додалося, проблема з обсягом. Обрив у самому кінці — усе закрили поспіхом, проблема з якістю.

Симулятор спринту: 10 робочих днів твого беклогу

Тепер найцікавіше. Візьми свій беклог (або демо) і пообіцяй, скільки берешся зробити за 10 днів. Потім прокрути ці 10 днів. Кожні кілька днів трапляється те, чого не було в жодному плані. Твоя справа — вирішити, чим за це платити.

Симулятор спринту

День0
Лишилось роботи0
Ємність спринту0
Зривів дедлайну0

Модель симулятора спрощена й оголошена повністю: швидкість 3 одиниці на день, спринт — 10 робочих днів, отже ємність 30 одиниць. Кожна подія додає роботу, якої не було в плані. Чотири рішення платять за неї по-різному.

Перекинути — робота росте, ємність та сама. Розбити — робота не росте, зате обіцяний обсяг меншає на ту саму величину. Відмовитися від could — робота не росте й MVP цілий, але could-задач у плані стає менше. Тому кнопка працює, лише поки такі задачі там ще лишилися. Зірвати дедлайн — робота росте, зате додається робочий день, тобто +3 до ємності.

Події, їхній порядок і ціни склав автор сторінки. Це навчальна модель, а не вимір реальної команди.

Друга спроба з тим самим беклогом Події в симуляторі йдуть у тому самому порядку щоразу — це зроблено навмисно. Перший прохід ти витрачаєш на те, щоб дізнатися, що взагалі буває. Другий — щоб узяти на себе менше й лишити запас. Саме тому команди, які вже працювали разом, планують точніше: не тому, що стали швидшими, а тому, що перестали обіцяти всю ємність.
Питання

На вашому burndown лінія перші чотири дні йшла майже горизонтально, а потім за два дні впала до нуля. Обсяг зробили повністю. Що ця форма насправді розповідає про спринт?

Питання

Ти рахуєш: 10 днів × 3 одиниці = 30 одиниць ємності. У беклозі рівно 30 одиниць роботи. Скільки брати на спринт?

Крок 10

Практика: збираємо roadmap.html

Виконуй по черзі. Галочки зберігаються — сторінку можна закрити.

Що робиться локально, що їде по FTP roadmap.html ти пишеш у себе в редакторі. Перевіряєш його на локальному сервері: python3 -m http.server 8000. Просто відкрити файл подвійним кліком не вийде — через file:/// fetch не працює. По FTP у ~/upload/~/www/ їдуть два легкі текстові файли: roadmap.html і оновлений tasks.json. Скриншоти дошки й результати симулятора на сервер не завантажуються — їх учитель дивиться очно на твоєму екрані.
Крок 11

Автоперевірка check11 6

Перевірка зробить реальний запит на твій сабдомен, прочитає tasks.json і навмисно підмінить у ньому назву задачі, щоб переконатися, що дошка жива. Спроби не обмежені.

Демонстраційний режим: результат згенеровано для показу. На сервері ця кнопка запускає check11 6 від імені учня і читає ~/.progress/11-6.json.

Про два обовʼязкові критерії wip блокує оцінку, бо дисципліна WIP — головна навичка цього уроку: сім карток у doing означають, що процесу немає. no_media діє наскрізно весь модуль. У ~/www/ і ~/upload/ не має бути відео й звуку: .mp4 .mov .avi .mkv .webm .mp3 .wav .flac. Файлів понад 2 МБ там теж бути не повинно.

Що вчитель дивиться на екрані

Крок 12

Шкала виконання

Це те, що бачить учитель, коли виставляє оцінку.

СкладникВагаРезультат
Виконано
0%
Рекомендований бал за 12-бальною

Що лишається з тобою після цього уроку

Домашнє завдання

  1. Доведи до done ще дві задачі — за done_criteria і за своїм DoD, а не оптом. Переконайся, що канбан оновився без жодної правки roadmap.html.
  2. Додай у ~/www/kb/ нотатку dod.md із front-matter і пʼятьма пунктами свого Definition of Done — вона підхопиться базою знань із уроків 7–8.
  3. Запиши в CHANGELOG.md один рядок про сьогоднішній день: який WIP-ліміт ти собі поставив і яку задачу довелося повернути з «готово» назад.
Анонс уроку 11 Наступного разу дошка перестане бути тільки твоєю. Ти зробиш анкету й форму збору відгуків на сайті. На сервері до неї буде програма, яка складає відповіді у файл ~/data/responses.csv. Цей файл лежатиме поза теками, які видно з інтернету, бо в ньому будуть імена живих людей. А задача «Зробити форму відгуку», яка сьогодні висить у тебе в doing, там і закриється.
Джерела

Звідки взяті факти й формули

Кожне твердження, яке можна перевірити, має посилання. Перевіряти дозволено й корисно.

Ілюстративні числа, за які автор сторінки відповідає окремо: «дві доби на задачу» у схемі паралельно/послідовно, сім карток у заторі, форма ламаної на burndown, демо-беклог із 12 задач і всі ціни подій у симуляторі спринту. Вони підібрані так, щоб арифметика сходилася на очах, і не є виміром реальної команди. Модель симулятора (3 одиниці на день, 10 днів, ціни всіх чотирьох рішень) оголошена прямо на сторінці під самим симулятором. Повний список джерел із поясненнями — у файлі urok-10-джерела.md поруч із цією сторінкою.