Я написал Codex: "тут крякозябры". Он понял. Мне стало немного страшно

История о том, как работа с Codex перестала быть похожа на генерацию кода и стала похожа на разговор с очень быстрым, умным, но иногда самоуверенным напарником.

Я написал Codex: "тут крякозябры". Он понял. Мне стало немного страшно

Есть простой тест на человечность разработчика.

Показываешь ему экран, где вместо нормального русского текста написано:

Привет, мир!

Потом говоришь:

"Тут какие-то крякозябры. Посмотри, что случилось".

Если человек не задает лишних вопросов, а молча лезет проверять кодировку, базу, шаблоны, CSV, Excel и заголовки сервера, значит он свой.

Недавно этот тест прошел Codex.

Причем прошел красиво. Сначала сам создал крякозябры, потом сам понял, что это крякозябры.

Сегодня я переделывал один сайт на WordPress. Обычная рабочая задача: поправить структуру, привести в порядок категории, добавить описания, немного причесать сайт, чтобы он не выглядел как археологическая находка из панели хостинга.

Codex бодро взялся за работу. Создал описания категорий, разложил все по местам, сделал вид, что у нас тут серьезная инженерная деятельность.

Открываю результат.

А там описания категорий крякозябрами.

Не в старом импорте. Не в забытом CSV десятилетней давности. Не после Excel, который опять решил, что он умнее всех.

Нет.

Свежий WordPress. Свежий Codex. Свежие крякозябры.

Я написал ему примерно так:

"В описаниях категорий крякозябры. Найди, где ломается кодировка".

И он не спросил, что такое крякозябры.

Не начал объяснять основы Unicode.

Не сказал: "Пожалуйста, уточните термин".

Он просто понял. Спокойно предположил проблему с кодировкой и пошел проверять, как текст генерируется, сохраняется и попадает в WordPress.

Вот тут мне стало немного страшно.

Потому что одно дело, когда ИИ пишет функцию, SQL-запрос или компонент. Это уже почти привычно.

Другое дело, когда он сначала сам создает баг, потом понимает человеческое название этого бага, потом серьезно идет его чинить.

Сам сделал.

Сам понял.

Сам пошел исправлять.

Осталось только научить его говорить: "У меня локально работало".

Крякозябры, это не шутка. Это диагноз

Со стороны слово "крякозябры" звучит почти ласково. Как зверек из детской книжки.

На практике это обычно вечер, живой сайт и русский текст, который внезапно решил стать набором символов.

Было "Описание категории".

Стало "Описание категории".

И ты уже понимаешь: где-то по дороге текст переехал из одной кодировки в другую, потом обратно, потом его кто-то сохранил, потом кто-то вывел, и теперь вся эта красота смотрит на тебя из админки.

Раньше начинался привычный ритуал.

Открыть файл.

Проверить кодировку.

Проверить базу.

Проверить форму.

Проверить обработчик.

Проверить шаблон.

Поругаться.

Открыть еще один файл.

Понять, что проблема была вообще в третьем месте.

Теперь часть этого ритуала можно отдать Codex.

Не всю, конечно. До кнопки "сделай нормально" мы пока не дошли. Хотя уверен, что кто-то уже делает такой стартап с тарифом Pro.

Но уже можно сказать человеческим языком:

"Русский текст ломается после сохранения. Проверь весь путь от генерации до вывода. Лишнее не переписывай".

И это работает.

Вот что удивляет.

С ним можно говорить не как с машиной

Сначала мне казалось, что с Codex надо общаться как с нотариусом.

Аккуратно, строго, структурно, без эмоций.

Что-то вроде:

"Выполни модификацию программного модуля согласно следующему техническому описанию".

Но реальная работа быстро все испортила.

Потому что в жизни задачи звучат не так.

В жизни они звучат так:

"Тут все отвалилось после последней правки".

"Оно сохраняет, но потом не показывает".

"Падает молча".

"Сделай по-человечески, но не ломай текущую логику".

"Этот костыль не трогай. Он тут не просто так. Мы его боимся".

И, как выяснилось, Codex это понимает.

Не всегда идеально. Не всегда с первого раза. Но достаточно хорошо, чтобы стало ясно: ИИ научился работать не только с кодом, но и с бардаком вокруг кода.

А настоящий проект почти всегда и есть бардак.

В учебнике задача выглядит так:

"Напишите функцию, которая принимает массив чисел и возвращает сумму положительных элементов".

В реальном проекте задача выглядит так:

"После вчерашней правки в админке перестали сохраняться настройки, но только у части пользователей, и еще в описаниях категорий появились крякозябры. Посмотри аккуратно, сайт живой".

Вот здесь Codex уже не игрушка. Уже напарник.

Очень быстрый.

Очень уверенный.

Иногда слишком уверенный.

Напарник быстрый, но с характером

Codex полезен не только тем, что пишет код. Код сейчас пишут многие.

Он полезен тем, что может залезть в проект, посмотреть файлы, сопоставить куски логики и предложить правку в контексте.

Это уже не "сгенерируй мне функцию".

Это ближе к разговору:

"Вот проект. Вот проблема. Вот что нельзя ломать. Разберись".

И он разбирается.

Но оставлять его одного в комнате с боевым проектом и надеждой на чудо не стоит.

Иногда у него настроение: "Раз уж открыли капот, давайте переберем двигатель".

Попросил поправить вывод текста, а он уже предлагает новый слой абстракции, переименование файлов и "небольшой рефакторинг".

Небольшой. На 47 изменений.

Поэтому рамки нужны сразу:

"Не меняй структуру базы".

"Не трогай внешний вид".

"Сначала найди причину".

"Потом предложи минимальную правку".

"Не переписывай модуль целиком".

Последняя фраза особенно важная.

Потому что Codex иногда похож на мастера, которого попросили подкрутить ручку на двери, а он снял дверь, вынес коробку и объясняет, что вход лучше перенести на другую стену. Архитектурно чище.

Где он реально экономит время

Лучше всего Codex проявляет себя не в красивых демо, а в грязной бытовой работе.

Найти, где ломается логика.

Разобраться, почему форма отправляется, но данные не сохраняются.

Понять, где один формат данных превращается в другой.

Объяснить старый кусок кода, который ты сам писал ночью и теперь смотришь на него как археолог на черепок.

Собрать черновик плагина.

Добавить логирование.

Починить импорт.

Разложить большую задачу на нормальные шаги.

И да, найти, почему вместо русского текста появились крякозябры.

Раньше такие задачи съедали время не потому, что они сложные. А потому, что они липкие.

За одну зацепился, потом другая, потом третья. Сел "на полчаса", очнулся через три часа с открытым phpMyAdmin и вопросом к самому себе: "Почему я опять этим занимаюсь?"

Codex не отменяет проверку. Но он снимает часть этой липкости.

Можно попросить его пройтись по цепочке, показать подозрительные места, предложить исправление и объяснить, почему проблема именно там.

Не магия.

Просто хороший ускоритель.

Где он может устроить праздник

Если бы все было совсем просто, разработчики уже сидели бы на берегу моря и только проверяли пуши от ИИ.

Но нет.

Codex может ошибаться.

Может уверенно исправить не то.

Может удалить нужный костыль, потому что "так будет чище".

Может поменять больше файлов, чем нужно.

Может сказать "теперь все должно работать", хотя ты еще даже не запускал проект.

Может решить одну проблему и создать две новых. Зато современные.

Поэтому главный навык при работе с Codex, как ни странно, это не знание синтаксиса. Главный навык, это умение быть нормальным заказчиком и нормальным проверяющим.

Нужно давать контекст.

Ограничивать область изменений.

Смотреть diff.

Запускать проект.

Проверять руками.

Держать резервную копию.

И не принимать уверенный тон модели за гарантию результата.

ИИ пишет спокойно, подробно и убедительно. Но спокойный текст не означает, что решение правильное.

Это как с человеком. Если разработчик уверенно говорит "там мелочь, сейчас поправлю", это еще не значит, что через час у вас не будет новый интересный опыт.

Как я теперь ставлю задачи

Со временем у меня выработался простой формат.

Не надо писать роман. Но и "почини все" обычно заканчивается приключениями.

Лучше так:

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

Или так:

"Код работает, но выглядит страшно. Проведи аккуратный рефакторинг без изменения поведения. После этого перечисли, что изменил и почему".

Или так:

"В этом плагине нужно добавить фильтр регистрации по email-доменам. Сохрани совместимость с WordPress и WooCommerce. Сначала составь план файлов и хуков".

Вот тогда получается нормальная работа.

Человек держит смысл и ограничения.

Codex быстро делает техническую часть.

Потом человек проверяет, что напарник не решил заодно построить космодром.

Вайбкодинг оказался не про халяву

Сейчас над словом "вайбкодинг" любят смеяться.

Мол, человек ничего не понимает, пишет нейросети "сделай красиво", а потом удивляется, что оно горит.

Такое бывает. И, судя по интернету, довольно бодро.

Но нормальный вайбкодинг, это не отказ от понимания. Это другой режим работы.

Ты можешь не помнить все параметры функции.

Можешь не держать в голове синтаксис каждого API.

Можешь не писать руками каждый обработчик.

Но ты обязан понимать, что хочешь получить, что нельзя ломать и как проверить результат.

Codex может написать код.

Но он не знает, зачем тебе проект.

Он может предложить архитектуру.

Но он не знает, что завтра утром этим будут пользоваться живые люди.

Он может исправить крякозябры.

Но сам не догадается, что ради этого нельзя переписывать весь импорт.

Поэтому человек никуда не исчезает. Просто его работа немного сдвигается.

Меньше ручного ковыряния.

Больше постановки задачи.

Меньше поиска скобки.

Больше контроля смысла.

Финал

Я не знаю, какой момент считать точкой, где ИИ стал по-настоящему рабочим инструментом.

Когда он начал писать нормальный код?

Когда научился читать проект целиком?

Когда стал предлагать тесты?

Лично для меня маркер был проще.

Я написал ему: "тут крякозябры".

Он понял.

Причем перед этим сам их и сделал.

И это было странно приятно.

Потому что настоящий рабочий инструмент должен понимать не только идеальное техническое задание. Он должен понимать реальную жизнь, где есть старые файлы, живые сайты, WordPress, усталый владелец проекта и русский текст, который опять решил стать набором символов.

Codex пока не волшебник.

Но если он уже знает, что такое крякозябры, значит, в нашу сторону он зашел довольно далеко.

11