JavaRush /Курси /Claude Code SELF /Повний цикл від ТЗ до здачі

Повний цикл від ТЗ до здачі

Claude Code SELF
Рівень 16 , Лекція 4
Відкрита

1. Гілка й точкова подача — один безперервний жест

План узгоджено — Тьома йде далі, а Льоха, спостерігаючи за ним, раптом помічає:

— Слухай, а ти звернув увагу, як ти зараз працюєш? Жодного разу не зупинився подумати «а що тепер». Постановку написав, вікно почистив, план підняв і підправив — і далі йдеш, ніби на одному диханні.

Тьома прислухається до себе — і справді.

— О. Та це ж справді так. Раніше кожен крок доводилося розучувати окремо, як гами. Гілка — згадай. Перевірка — згадай. А зараз усе само собою тече одне з одного. Один жест.

— Ось це і називається — набив руку, — хмикає Льоха. — Ну, показуй свій жест.

Насамперед він не лізе правити main. Будь-яку правку порталу він веде в гілці — рука сама, рефлекс відтоді, як розніс проєкт і привчився тримати експерименти осторонь. Пише агенту словами:

Перед фіксом створи гілку fix-reward-flow і працюй у ній, main не чіпай.
● git checkout -b fix-reward-flow      # гілку створено — робота осторонь від main

Main цілий, експерименти — окремо. Тепер — файли. І тут він не повторює стару дурницю «прочитай увесь портал, розберися» — бо це знову забʼє щойно вичищене вікно. Він подає рівно ті два файли, що стосуються нарахування, — ті самі, що Льоха показував:

Зроби фікс нарахування, спираючись на @src/reward-flow.js і @src/rules.md. Решту порталу не читай.

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

2. Диф, тест і зелена пастка

Агент віддає фікс. І Тьома не пускає його в проєкт на віру — спочатку дивиться на правку власними очима:

/diff       # построково: що змінилося в reward-flow, чи не зачепило зайвого

Зміни лише в логіці нарахування. /legacy і сусідні зони не зачеплені — рівно так, як він відрізав у плані. Якби вліз зайвий хвіст, він би відхилив його й залишив тільки цільову правку. Але хвоста немає, усе чисто. Тільки тепер — перевірка.

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

Проганяй тест нарахування.
● npm test        # тест нарахування зелений на фіксі

Зелений. Але Тьома вже знає: зелене саме по собі нічого не доводить — може, тест просто сліпий і зеленіє завжди. Тому він ловить зелену пастку — перевіряє сам тест. Відкочує фікс і ганяє тест на зламаній версії: той має впасти, інакше він марний.

● git stash       # тимчасово прибрати фікс — повернути зламане нарахування
● npm test        # на зламаному тест МАЄ впасти

Коротка мить — і тест чесно червоніє. Баг є, тест його бачить, нарахування бреше. Не «мені здається», а ось, чорним по червоному. Тьома всміхається — дожили, червоному вже радієш. Повертає фікс:

● git stash pop   # повернути фікс назад

Червоне — на зламаному, зелене — на виправленому. Баг був — баг зник, і це видно не на його обличчі, а на повторюваному результаті, який будь-хто може прогнати й побачити те саме. Чесне зелене, а не пастка. Ось вона, вся різниця між ним теперішнім і собою з вайб-епохи: тоді він вірив, що готово, бо виглядало готовим. Зараз він це доводить.

3. Доказ у EVIDENCE_LOG і звіт про здачу

Поки факт свіжий, Тьома складає його в лог — не окремою паперовою сценою, а однією реплікою агенту прямо з роботи:

Зафіксуй в EVIDENCE_LOG: симптом, падіння тесту на зламаній версії, виправлення й чесний зелений результат.

У EVIDENCE_LOG лягає короткий слід одного циклу: що було й що стало з нарахуванням, підтверджене реальним прогоном. Не для паперу — як доказ, що все виправлено по-справжньому, який потім можна мовчки предʼявити. Core fix прийнято в гілці.

І ось тепер у папку submission/ збирається дорослий пакет: постановка, цей самий лог доказів, звіт про здачу і той самий опис арсеналу. Останній документ, звіт про здачу, Льоха на ходу називає DELIVERY_REPORT — коротка підсумкова записка про закритий цикл. І, як увесь день, майже не розжовує: Тьома форму вже чує.

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

— Лог накопичує факти у процесі, — відповідає Льоха. — А звіт про здачу зводить їх в одну спокійну точку для того, хто приймає. Лог — це щоденник. Звіт — фінальна зведена довідка.

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

# DELIVERY_REPORT — фікс нарахування нагород
ЩО ЗДАЮ:     виправлено нарахування очок у reward-flow (множник рівня брехав)
ЧИМ ДОКАЗАНО: тест червоний на багу → зелений на фіксі; скриншот правильного лідерборда
ЗА МЕЖАМИ:   живі дані в радар — окремим коротким проходом (поза цим fix)
ДЕ ДИВИТИСЯ:  TASK_SPEC + EVIDENCE_LOG в submission/

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

4. Швидкість повертається з дисципліною

Core-цикл закрито, результат доведено, вікно почищено. І ось тепер — те, чого він чекав увесь ранок.

— Ну, тепер можна й для душі, — каже Тьома вголос і потягується.

Він відкриває свіжу сесію й на секунду замислюється: як він це робив тоді, на радарі? Живі дані замість заглушки… Рука згадує раніше, ніж голова.

— А, точно. Ті самі поштовхи, що я тягнув у радар. Тоді, на радарі, я чіпляв їх через MCP-міст — спеціальний кабель до сервісу. А тут простіше: сторінка сама тягне їх напряму, звичайним fetch за адресою.

І кличе агента — не сухою командою, а з тим самим азартом, за яким скучив:

Напряму через fetch дістань свіжі землетруси з USGS і оживи блок-радар на порталі живими даними.

Джерело він памʼятає напамʼять — публічний USGS-фід, той самий, що й на радарі, без ключа:

https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.geojson

Агент іде до зовнішнього API прямим fetch, тягне реальний GeoJSON, вбудовує блок. І портал оживає — на карті спалахують справжні свіжі поштовхи, магнітуда й місце підтягнулися з реального світу, а не з заглушки. Той самий смак: не «намалював красиво», а «дістався до живого світу і притяг його на екран». Тьома ловить знайомий кайф — за ним він і справді скучив за дні суворої дисципліни.

І тут Льоха його підловлює:

— Помітив, що ти зараз зробив? Точніше, чого не зробив. Гілку не завів, диф не проганяв. На фіксі ганяв усе на повну, а тут — ні.

Тьома завмирає, відмотує назад — і справді.

— Слухай, а рука навіть не сіпнулася. І не тому, що забув.

— А тому, що вага інша, — киває Льоха. — Дисципліну ти вже відпрацював на core fix, там вона й була потрібна. А це вже премія зверху: на чистому вікні вимоги до неї менші — сам відчуваєш, де закрутити гайки, а де відпустити. Звʼязка ж знайома, ще з радара: джерело, запит, відповідь, екран. Кабель тільки інший — там міст, тут прямий fetch, — а суть та сама.

— Тільки тепер магія не замість процесу, — договорює Тьома. — А після нього.

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

5. Роботу приймають без запитань

Тьома відправляє результат Антону й чекає. За старою памʼяттю всередині напружується: зараз прилетить розбір — «а ти перевірив? а тут точно не відвалиться? покажи, я не вірю». Так було завжди. Він навіть заготовив, чим відповісти.

У відповідь — мовчання. Хвилина. Дві. Жодного розбору. Жодного контрольного запитання. Антон просто прийняв роботу — і все.

І ось тут до нього доходить, що це за мовчання.

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

Антон не перевіряє не тому, що махнув рукою. А тому, що до роботи додано доказ — і перевіряти вже нічого. Не через чарівність, не через везіння, не через «ну він наче нормальний». Саме з факту. І це виявилося сильнішим за будь-яку похвалу: вперше йому повірили не на слово.

За кілька хвилин від Антона все ж падає рядок. Не розбір і не похвала — коротке, по-менеджерськи:

«Прийнято. Із цим я хоч спатиму спокійно.»

І нижче, ніби між іншим:

«А то від „майже готово“ в мене вже печія. Занадто часто воно потім відвалювалося.»

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

6. Чим завершився шлях

Підходить Олег. Не з тією кислою міною, з якою весь місяць косився на «магію», — а просто, як до свого.

— Слухай, потім покажеш, як ставляться ці твої скіли й плагіни? — каже він, і вперше за весь місяць — без підколки, рівно. — Хочу глянути, що в тебе там під капотом. А я тебе підучу старій школі — завдання руками робити. Як колись код писали.

— Домовилися, — киває Тьома. — Ти мені ІІ-кухню, я тобі — ремесло руками.

— Домовилися.

І тут Тьома ставить перед Олегом коробку. Мовчки. Усередині — гумова качка, жовта, новенька, глянцева.

Олег дивиться на неї довго.

— Це не Васька.

— Та Васьки вже й немає, дядьку Олеже, — каже Тьома. — Це інша. Як назвеш — так і буде.

Олег дістає качку з коробки, крутить у пальцях. Двадцять років він тримав таку саму, тільки затерту до білих плям. Ставить на кружечок у пилюці — точно на місце; руки памʼятають.

— Васьок, — каже він.

— Чого? — не розуміє Тьома.

— Називатимемо його Васьком. — Олег посуває качку на міліметр, вирівнюючи. — Не Васька. Васька був своїм. А цей нехай спочатку підросте.

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

— Дякую, Тьомо.

Тьома завмирає над клавіатурою. Не «Артем». Тьома. Увесь місяць Олег тримав його на холодному, суцільному «Артем» — як чужого, як тимчасового, якого ось-ось винесуть звідси вперед ногами. І тут — «Тьома». Своє, тепле, так в офісі кличуть своїх. Одна літера — а ніби двері відчинили: старий впустив його до себе. У ній уся їхня дорога, від першого сухого «Артем» на інструктажі до цього тихого «дякую» через плече.

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

Він гортає в голові весь цей місяць — від того зухвалого пацана, що вломився сюди з «та що там, ІІ сам усе зробить, я кнопку натисну», до себе сьогоднішнього. Той пацан хапав поспіхом, брехав собі «готово» і одного разу за одну ніч спалив усе дотла. А цей — сьогодні, сам, спокійно, за звичкою — пройшов повний цикл від постановки до доказу, і роботу прийняли мовчки, без жодного запитання. Не тому, що пощастило. Не тому, що причарував. По ділу.

І той пацан нікуди не подівся — він усе той самий пройдисвіт, що шукає, де зрізати кут. Просто тепер він знає: зрізати можна тільки там, де під тобою фундамент. Він не перестав бути собою. Він виріс.

1
Опитування
Паралельні workstreams у Claude Code, рівень 16, лекція 4
Недоступний
Паралельні workstreams у Claude Code
Паралельні workstreams у Claude Code
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ