Я удалил 200 строк AI-кода и выучил больше, чем когда его генерировал

· 1 мин чтения
ai-coding vibe-coding technical-debt code-review productivity
Я удалил 200 строк AI-кода и выучил больше, чем когда его генерировал

Автор — iOS-разработчица Gamya — делится неожиданным открытием: afternoon удаления 200 строк кода научил её большему, чем месяц их генерации с помощью AI. Это не технический разбор, а честная рефлексия о том, как принятие сгенерированного кода без понимания создаёт скрытый технический долг, который проявляется не сразу — а через несколько недель, когда нужно что-то изменить или отладить.

Признание: я просто принимала код, не читая

Несколько недель назад Gamya работала над проектом в режиме «быстро, быстро, ещё быстрее». Цикл был простым: генерация, тест, принять, дальше. AI выдавал код, который компилировался и делал то, что нужно. Автор не читала его внимательно, не задавала вопросов, не вникала в детали. Просто «вайбила» от фичи к фиче.

Код работал. Фичи функционировали. Никто не жаловался. Но каждый раз, открывая тот самый файл, Gamya испытывала низкоуровневую тревогу — ощущение, похожее на комнату, которую «убрали», запихнув всё в шкаф. Технически чисто. Духовно — неправильно.

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

Страх перед удалением

Первое, что случилось — страх. Не тот страх, который легко отмахнуться. Gamya зависала над строками, думая: «А что, если именно эта штука держит всё вместе, а я просто об этом не знаю?»

И вот в чём разница с кодом, написанным самостоятельно. Когда вы пишете код сами — вы держите карту проекта в голове. Вы помните ночь, когда добавили ту самую защитную проверку на nil, потому что что-то взорвалось в тестах. Вы помните, почему функция устроена именно так, а не иначе, потому что переписывали её дважды. У вас есть контекст.

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

Предсказания вместо догадок

Gamya начала метод: перед каждым удалением она задавала себе вопрос: «Если я удалю вот это — что именно, по-моему, сломается?» Не теоретически, а конкретно.

Часть предсказаний сбывалась — код действительно был избыточным. Просто, чисто, удалили.

Часть — оказались неверными, и вот здесь начиналось интересное. Была функция, которую Gamya была абсолютно уверена, что та ничего не делает — просто модель добавила по привычке. Она удалила её — и очень специфичный edge case в давно забытом сценарии тихо развалился. Функция обрабатывала nil, который мог появиться только при конкретной последовательности действий пользователя, о которой автор уже не помнила.

Эта функция научила её тому, о чём она даже не знала, что не знает. Самый раздражающий, но и самый полезный вид обучения.

Итоговый счёт

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

Часть кода Gamya переписала с нуля. Не потому что оригинал был неправильным. Потому что переписывание означало, что она наконец овладела этим кодом. Есть разница между кодом, которым вы управляете, и кодом, который вы понимаете — и этот разрыв нужно закрыть, прежде чем доверять себе работать с ним дальше.

Часть кода она оставила как было. Потому что, глядя на пустое место после попытки удалить, поняла: эта штука действительно нужна, просто она не обращала на неё внимания. Эти «неудавшиеся» удаления оказались самыми полезными — когда пытаешься избавиться от чего-то, а проект говорит: «Нет, это нужно, давай покажу почему».

Главный урок

Каждая строка, которую вы принимаете без понимания — это маленький кредит. Проценты накапливаются тихо, пока вам не понадобится снова прикоснуться к этому коду.

Удаление кода — внимательное чтение, достаточное, чтобы сформировать мнение о том, должен ли он существовать — один из самых странных и эффективных способов погасить этот долг. Нельзя что-то удалить, не поняв этого достаточно, чтобы аргументировать за или против. Это значит, что к концу процесса вы были вынуждены действительно выучить кодовую базу, которую, как вам казалось, вы уже знали.

Что изменилось на практике

Gamya не перестала использовать AI для генерации кода — это было бы драматичным перебором, да и дедлайны никто не отменял. Но она начала относиться к принятым AI-предложениям как к долгу, который она выбирает взять на себя, а не как к коду, который она написала.

Теперь, время от времени, она открывает файл, который был сгенерирован быстро и на который давно не смотрели внимательно. Читает его так, будто это чужой код. Пытается что-то удалить. Строит предсказания о том, что сломается — и проверяет, права ли она.

Иногда — да. Иногда — нет, и именно эти случаи чему-то учат.

В любом случае, после такой сессии она знает кодовую базу лучше, чем до неё. А это — честно говоря — больше, чем можно сказать о том дне, когда этот код был сгенерирован.

Источник: https://dev.to/gamya_m/i-deleted-200-lines-of-code-i-didnt-write-and-learned-more-than-when-i-wrote-it-18dd