Почему я перестал писать код вручную и что из этого вышло
Полтора года назад я поймал себя на том, что пишу очередной CRUD на Express.js и думаю: «я уже делал это раз двадцать». Роуты, контроллеры, валидация, подключение к базе — всё это я мог делать с закрытыми глазами. И именно тогда я решил попробовать отдать эту работу ИИ.
Сначала — с недоверием. Потом — с осторожным интересом. Теперь — я не представляю, как работал без этого.
Но сразу скажу честно: это не история про «ИИ делает всё, а я сижу пью кофе». Это история про то, как изменился сам процесс работы. И не всё в этих изменениях — хорошее.
Как это началось
Первый раз я попросил ИИ написать за меня код примерно в начале 2023 года. Тогда это был ещё ChatGPT-3.5. Задача была простая — написать скрипт на Python, который парсит JSON-файл и раскладывает данные по нужной структуре.
Я написал задачу, получил код, запустил — заработало с первого раза. Я потратил минуту. Руками это заняло бы минут пятнадцать, из которых десять — вспоминать синтаксис работы со словарями в Python.
Я подумал: «окей, интересно». И начал экспериментировать дальше.
Что изменилось в работе — конкретно
Не буду говорить абстрактно. Вот реальные изменения, которые я заметил за полтора года.
Рутина исчезла
Самое очевидное изменение — рутинный код я больше не пишу руками. Вообще. Имею в виду вещи типа:
- Написать типы TypeScript для структуры данных
- Сделать валидацию формы
- Написать SQL-запрос с несколькими JOIN'ами
- Настроить базовую конфигурацию webpack/vite/eslint
- Написать unit-тесты для готовой функции
Всё это я теперь описываю словами и получаю готовый код. Проверяю, правлю если нужно — и двигаюсь дальше.
Сколько времени это экономит? По моим ощущениям — от 30 до 50% рабочего времени на типичных задачах. На некоторых задачах — больше.
Я начал делать больше проектов
Раньше у меня была куча идей, которые я не реализовывал — потому что «долго настраивать». Поднять новый проект, настроить инфраструктуру, написать базовый каркас — это несколько часов работы до того, как начнётся что-то интересное.
Сейчас этот порог сильно снизился. За вечер я могу поднять рабочий прототип с авторизацией, базой данных и базовым API. Раньше это был минимум день-два.
Конкретный пример: я поднял свою платформу на Next.js с Prisma, NextAuth и Anthropic SDK примерно за неделю активной работы. Без ИИ-помощи это заняло бы месяц. Большая часть бойлерплейта — схемы Prisma, API-роуты, компоненты форм — была сгенерирована и потом доработана.
Отладка стала другой
Раньше процесс отладки выглядел так: смотришь на ошибку, гуглишь, читаешь Stack Overflow, пробуешь, ошибаешься, гуглишь снова.
Сейчас: копируешь ошибку и контекст в Claude или ChatGPT, получаешь объяснение и варианты решения. Иногда первый вариант работает. Иногда нет — но понимаешь направление и уже знаешь что искать.
Stack Overflow я открываю теперь примерно в десять раз реже. Не потому что перестал сталкиваться с проблемами — просто первая инстанция теперь другая.
Я начал использовать технологии, которые раньше избегал
Это неожиданный эффект. Раньше я старался работать с тем стеком, который хорошо знаю — потому что изучение нового занимает время. Теперь барьер входа в новую технологию сильно снизился.
Хочу попробовать Go для написания небольшого сервиса? Раньше — «надо сначала почитать книгу, потом туториал, потом...» Теперь — описываю задачу, прошу объяснить незнакомые конструкции по ходу, и через пару часов у меня работающий код и базовое понимание синтаксиса.
Это не значит, что я «знаю Go». Но для конкретной задачи — справляюсь.
Инструменты, которые я использую
За полтора года перепробовал много всего. Вот что осталось в реальном использовании:
Claude (claude.ai)
Основной инструмент для работы с кодом. Особенно хорош когда задача нетривиальная — нужно не просто написать функцию, а разобраться в архитектуре, найти проблему, объяснить почему что-то не работает.
Контекстное окно большое — можно скинуть весь файл или несколько файлов и он держит в голове весь контекст. Очень важно когда проект большой.
ChatGPT
Использую для быстрых вопросов и когда нужен поиск актуальной документации. Хорош для объяснения концепций простыми словами — если изучаю что-то новое, часто прошу объяснить «как будто я не знаю этой технологии».
GitHub Copilot
Встроен в редактор и работает прямо в процессе написания кода. Это другой паттерн использования — не «напиши мне это», а «продолжи что я начал». Иногда угадывает настолько точно, что просто жмёшь Tab и идёшь дальше.
Хорош для автодополнения и для повторяющихся паттернов внутри одного файла. Менее хорош для сложных задач — там лучше идти в чат.
Cursor
Это редактор кода с встроенным ИИ. Фактически VS Code, но с возможностью общаться с ИИ прямо в контексте проекта — он видит всю файловую структуру, может редактировать несколько файлов одновременно.
Пробовал, впечатлён. Особенно функция Composer — описываешь задачу, он сам решает какие файлы менять и вносит изменения. Для рефакторинга — очень мощно.
А теперь честно — что пошло не так
Было бы нечестно рассказывать только про плюсы. За полтора года я набил несколько шишек, о которых стоит предупредить.
Код, который ты не понимаешь
Первые месяцы я иногда вставлял сгенерированный код, который работал — но я не до конца понимал как. «Работает — хорошо». Это плохая практика.
Проблема вылезла, когда нужно было этот код дебажить или дорабатывать. Ты смотришь на свой же код и не понимаешь, что там происходит. Это неприятное ощущение.
Сейчас у меня правило: если вставляю сгенерированный код, который не понимаю полностью — прошу объяснить построчно. Занимает пару минут, но потом код становится «своим».
Галлюцинации в критических местах
ИИ иногда выдумывает. Несуществующие методы, неправильные версии API, конфигурации которые «звучат правдоподобно» но не работают.
Я потратил однажды два часа, пытаясь понять почему не работает код с использованием метода, которого нет в документации. ChatGPT назвал его так уверенно, что я не подумал проверить.
Теперь правило: всё что касается внешних API, версий библиотек, специфичных конфигов — проверяю в официальной документации. Всегда.
Зависимость от инструмента
Поймал себя однажды на том, что без доступа к ИИ (был плохой интернет) я работал заметно медленнее, чем год назад. Некоторые вещи, которые раньше делал автоматически — теперь надо было вспоминать.
Это звоночек. ИИ — инструмент, усилитель. Не костыль. Поэтому периодически намеренно пишу код руками, без помощи. Чтобы не терять форму.
Сгенерированный код не всегда идиоматичный
ИИ пишет рабочий код. Но не всегда — красивый или идиоматичный. Иногда он решает задачу в лоб, хотя есть более элегантное решение. Иногда игнорирует специфику проекта — соглашения по именованию, архитектурные паттерны.
Код нужно ревьюить. Всегда. Принимать сгенерированный код без проверки — плохая идея.
Как я выстроил рабочий процесс сейчас
После всех экспериментов и ошибок у меня сложился примерно такой процесс:
1. Думаю архитектуру сам. Как будет устроена система, какие сущности, как они взаимодействуют — это я решаю головой, без ИИ. ИИ плохо понимает контекст бизнеса и требования — это моя работа.
2. Декомпозирую задачу. Разбиваю на небольшие конкретные куски. Чем конкретнее запрос к ИИ — тем лучше результат. «Напиши мне всё приложение» работает хуже, чем «напиши функцию которая делает X, принимает Y, возвращает Z».
3. Итерирую. Получил код — проверил — попросил исправить или улучшить — снова проверил. Редко первый результат идёт в продакшн без правок.
4. Разбираюсь в том, что получил. Незнакомые паттерны или конструкции — прошу объяснить. Это не трата времени, это инвестиция.
5. Проверяю критические места. Всё что касается безопасности, работы с деньгами, внешних API — дополнительно проверяю в документации.
Что будет дальше
Я думаю, через пять лет разработка будет выглядеть совсем иначе. Уже сейчас агентные системы — когда ИИ сам пишет код, запускает тесты, видит ошибки и исправляет их — работают достаточно хорошо для простых задач.
Значит ли это, что разработчики не нужны? Нет. Значит это, что профессия изменится — да, уже меняется.
Ценность разработчика смещается от «умею написать правильный синтаксис» к «умею правильно поставить задачу, выстроить архитектуру, оценить результат и взять ответственность за систему». Это другие навыки. Более высокоуровневые.
Джуны, которые учатся только копировать код из туториалов — им будет тяжело. Джуны, которые понимают что делают и зачем — у них всё будет хорошо, просто инструменты другие.
Итог — стоит ли переходить?
Да. Однозначно да.
Но с пониманием того, что это инструмент, который требует правильного обращения. Не волшебная кнопка «сделай хорошо», а усилитель твоих собственных навыков и знаний.
Если знаешь что делаешь — ИИ делает тебя быстрее и позволяет браться за более сложные задачи. Если не знаешь — он просто даст тебе красивый код, который ты не сможешь поддерживать.
Начни с малого: следующую рутинную задачу — попробуй решить с ИИ. Не просто скопировать код, а поговорить с ним как с коллегой: объяснить задачу, получить решение, разобраться как оно работает, попросить улучшить.
После первого раза всё станет понятно.
Пиши в комментарии — уже используешь ИИ в работе или пока присматриваешься? Интересно узнать у кого какой опыт.