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
Задача
Claude code, 16 уровень, 4 лекция
Недоступна
Снятие cost signal через /usage
Снятие cost signal через /usage
1
Задача
Claude code, 16 уровень, 4 лекция
Недоступна
Обновите verdict script с учётом rework
Обновите verdict script с учётом rework
1
Опрос
Параллельные workstreams в Claude Code, 16 уровень, 4 лекция
Недоступен
Параллельные workstreams в Claude Code
Параллельные workstreams в Claude Code
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ