1. Свой код читается памятью, чужой — нет
После обеда Тёма, как всегда, сходил за кофе, но пришел к Лёхе с конкретным раздражением:
— Слушай, я не понимаю. Свой код я открываю и сразу вижу, что к чему. А этот подрядческий открываю — и как в тумане. Буквы те же, а не читается. Почему?
— А ты подумай, чем ты свой код читаешь, — отвечает Лёха. — Не глазами. Памятью. Ты же сам его писал. Помнишь, где что лежит, зачем вот эта строчка, как одно с другим связано. Глаз у тебя по своему коду скользит — и это нормально, потому что карта уже в голове. Ты не читаешь, ты вспоминаешь.
— А тут карты нет, — медленно говорит Тёма.
— Ну да. Чужой код памятью не прочитаешь — её просто нет. И самое подлое: привычка «глаз скользит» никуда не делась. Ты по чужому коду тоже скользишь — и пропускаешь то, что в своём знал бы наизусть. В своём это безопасно. В чужом — нет. Поэтому чужой код читается не так, как свой. Медленно и подозрительно. Каждый кусок взвешиваешь отдельно, а не пролистываешь «вроде ок». Скорость, которая в своём доме экономит время, в чужом — закладывает мину. Олег тебе уже про это сказал, я только объясняю почему.
2. Объект чтения — не файл, а изменение
Тёма пугается практической стороны:
— Подожди. Медленно и подозрительно весь этот файл? Да я неделю буду сидеть. Он огромный, и половину я всё равно не пойму — там логика подрядчика, я в неё не залезу.
— И не надо, — успокаивает Лёха. — Вот тут главный сдвиг. Когда правишь чужой код, читать надо не весь файл. А каждое изменение.
— В смысле — изменение?
— Смотри. Прочитать и понять весь чужой файл целиком — долго, а часто вообще невозможно, ты прав. А вот проверить, что конкретно агент только что поменял, — реально. Это маленький кусок. Это дифф — список того, что изменилось. Вот его ты и читаешь — медленно, подозрительно, каждую строчку. К каждому куску изменения один вопрос: это про задачу — или «заодно»?
Тёма пробует приложить к себе:
— То есть я не пытаюсь понять весь чужой модуль. Я смотрю только на след, который оставил агент. На то, что поменялось.
— Да. Объект твоего внимания — не «весь код», а «что именно меняется». Это выполнимо — и это ровно то, что помогает работать над любой задачей. Весь файл ты в голове не удержишь. А свой собственный дифф из десяти строк — легко.
Тёма вспоминает утренний комикс — дверь и перекрашенную квартиру — и усмехается уже не как над приколом.
— Слушай, так это ж буквально та картинка из чата. Покрасить дверь, а не всю квартиру. Моя работа — оставить в диффе только дверь. А всё остальное, даже если «стало аккуратнее» и «логичнее переименовано», по умолчанию не моё.
— Вот видишь, доходит, — отзывается Лёха.
3. Три класса изменений
— А как понять, какой кусок диффа отклонять, а какой нет? — Тёма хочет сразу фундаментальное решение. — На глаз?
— Не на глаз. Есть три ящика, по которым раскладываешь каждое изменение, — Лёха разворачивает. — Первый — лишнее. Это когда агент «заодно» переформатировал, переставил отступы, причесал соседнее. Напрямую вроде не ломает. Но раздувает дифф и прячет настоящую правку — за косметикой не видно сути. В чужом коде особенно вредно: ты тонешь в причёсанном и не видишь, что реально изменилось.
— Это как раз то, что Саня мне натащил, — узнаёт Тёма.
— Оно самое. Второй ящик — опасное. Это когда он тронул не тот участок, зацепил соседний код, удалил нужное. Самый дорогой класс ошибок — потому что это то, что молча ломает работающее. Олег тебе про это только что и толковал, помнишь? Просто потом что-то перестало пахать, и ищи свищи. В чужом коде опасность выше всего: ты ведь не знаешь, что тут было важным.
— А третий?
— Третий — неожиданное. Это когда агент сделал больше, чем просили. Добавил «улучшение», которое ты не заказывал. Непрошеную анимацию, новую фичу, ещё что-то. И вот тут тонкость: это не всегда плохо. Иногда улучшение и правда дельное. Но оно всегда требует осознанного «да» — а не проскакивает само, пока ты моргнул.
Тёма складывает картину сам:
— То есть я беру дифф, иду по кускам и каждый кидаю в один из трёх ящиков. Лишнее — за борт. Опасное — наглухо за борт. Неожиданное — отдельно решаю, надо оно мне сейчас или нет.
— Вот так дифф и остаётся чистым, — кивает Лёха. — В проект идёт только нужное. А раскладывать по ящикам — это уже не философия. Это работа. И сейчас я покажу, чем это делается в Claude Code. Тут начинается самое интересное.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ