Найти в Дзене
Ivan-Yurievich

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

Полтора года назад я поймал себя на том, что пишу очередной CRUD на Express.js и думаю: «я уже делал это раз двадцать». Роуты, контроллеры, валидация, подключение к базе — всё это я мог делать с закрытыми глазами. И именно тогда я решил попробовать отдать эту работу ИИ. Сначала — с недоверием. Потом — с осторожным интересом. Теперь — я не представляю, как работал без этого. Но сразу скажу честно: это не история про «ИИ делает всё, а я сижу пью кофе». Это история про то, как изменился сам процесс работы. И не всё в этих изменениях — хорошее. Первый раз я попросил ИИ написать за меня код примерно в начале 2023 года. Тогда это был ещё ChatGPT-3.5. Задача была простая — написать скрипт на Python, который парсит JSON-файл и раскладывает данные по нужной структуре. Я написал задачу, получил код, запустил — заработало с первого раза. Я потратил минуту. Руками это заняло бы минут пятнадцать, из которых десять — вспоминать синтаксис работы со словарями в Python. Я подумал: «окей, интересно». И
Оглавление

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

Полтора года назад я поймал себя на том, что пишу очередной 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 — дополнительно проверяю в документации.

Что будет дальше

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

Значит ли это, что разработчики не нужны? Нет. Значит это, что профессия изменится — да, уже меняется.

Ценность разработчика смещается от «умею написать правильный синтаксис» к «умею правильно поставить задачу, выстроить архитектуру, оценить результат и взять ответственность за систему». Это другие навыки. Более высокоуровневые.

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

Итог — стоит ли переходить?

Да. Однозначно да.

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

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

Начни с малого: следующую рутинную задачу — попробуй решить с ИИ. Не просто скопировать код, а поговорить с ним как с коллегой: объяснить задачу, получить решение, разобраться как оно работает, попросить улучшить.

После первого раза всё станет понятно.

Пиши в комментарии — уже используешь ИИ в работе или пока присматриваешься? Интересно узнать у кого какой опыт.