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