"> ?>
Наверх

Эти 10 уроков я понял слишком поздно при работе с Claude Code

Создание iPhone-приложения оказалось не таким простым, как казалось. Малые шаги, бэкапы и тесты спасают проект от провала.

Опубликовано 16.12.2025 в 14:58
Как работать с ПО Claude Code: стиль Vibe | DGL.RU

Основные идеи

Пишите код маленькими шагами для удобного тестирования и доработки
Документируйте ход работы с помощью ИИ для понимания прогресса
Используйте Git и резервные копии для защиты проекта
Добавляйте функции импорта/экспорта на ранних этапах

Мнение автора

Программирование с Claude Code в стиле Vibe показывает, что маленькие шаги и тщательная документация важнее, чем полное ТЗ. Постоянные записи, контроль версий и резервные копии позволяют работать даже в коротких сессиях. Swift и SwiftUI обеспечивают гибкость и совместимость для будущих платформ Apple.

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

Это не первый мой опыт работы с Vibe Code. Ранее я успешно реализовал проект с использованием OpenAI Codex. Однако масштаб был другой: тогда я добавлял новые модули для плагина WordPress. Теперь я использую Claude Code, чтобы с нуля создать полноценное и сложное приложение для iPhone.

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

Если коротко, мое приложение использует NFC-метки и фотографии для управления филаментом для 3D-принтеров в моей лаборатории. Оно отслеживает более 100 катушек на 20 полках хранения, восемь станков с 26 отдельными держателями и еще примерно пять рабочих поверхностей. Я разработал его для сверхбыстрого рабочего процесса. Если катушка перемещается с одного станка или места на другое, базу данных можно обновить простым касанием iPhone к катушке и месту назначения.

Только один из этих советов специфичен для Apple. Остальные применимы к программированию Vibe с помощью Claude независимо от платформы. Давайте начнем.

1. Пишите код маленькими шагами

В статье «10 секретов Codex» я рассказывал, почему не следовал часто рекомендуемой практике. Обычно советуют создать документ с требованиями к продукту, а затем передать полную спецификацию искусственному интеллекту.

Теперь я гораздо больше убежден, что передача всей спецификации ИИ за один раз — это безумная идея. Вы точно не хотите, чтобы ИИ взял 20-страничный документ и создал 20 000 строк кода. Вам придется их просматривать, тестировать и подтверждать взаимодействие. На бумаге идея звучит хорошо, но в итоге приведет к созданию проблемных продуктов.

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

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

На начальных этапах я не давал ИИ никаких указаний относительно общего видения продукта. Мы смогли перейти к следующему этапу только после того, как эти элементы заработали. Преимущество такого подхода в том, что я мог тщательно тестировать каждую новую возможность или функцию. Я дорабатывал ее вместе с Claude до тех пор, пока она действительно не начинала работать.

2. Поручите Claude делать записи

Пожалуй, самый ценный совет касается рабочего процесса, который я использовал в начале и в конце каждой сессии. В самом начале я попросил Claude создать документы для записи полученных знаний о работе с NFC. Это было необходимо, так как на первых попытках система давала сбой, но потом все же разобралась. Я хотел, чтобы она запомнила выясненные детали.

Эта практика распространилась и на мою команду в конце каждой сессии. Я заканчиваю работу с Claude (неважно, длилась она два часа или 15 минут) и даю ему команду задокументировать все сделанное. Он должен записать все, чему мы научились, и отслеживать наши дальнейшие действия. Я требую сделать это так, чтобы и я, и ИИ могли всесторонне понимать полученный опыт, принятые решения и наши следующие шаги.

Контент, такой как архитектурные шаблоны, система миграции, дизайн пользовательского интерфейса и прочее, записывался в файлы .MD. Они формировались на протяжении всех наших сессий на основе этих явных запросов. Каждый раз я просил Claude записывать ход работы и заметки, и он добавлял все важное для сохранения: новые шаблоны, принятые решения или обнаруженные рабочие процессы.

Это не автоматическое поведение. Файл CLAUDE.md вместе с другими файлами .MD превратился в исчерпывающее руководство по проекту благодаря моим подсказкам. По умолчанию Claude никогда не создает файлы документации самостоятельно, это даже прописано в его системных инструкциях.

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

Мне потребовалось время на осознание этого, но такая практика привела к следующему неожиданному уроку и преимуществу программирования в стиле Vibe с Claude.

3. Мне удалось исключить период наращивания скорости

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

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

Проблема в том, что я часто отрываюсь от кодинга на недели или месяцы ради основной работы. Мне хотелось бы посвятить программированию час-другой на выходных. Однако мне часто требовался день-два, чтобы вернуться к работе над проектом и заново все изучить, поэтому я не мог воспользоваться этими короткими перерывами.

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

Благодаря Vibe Code и моей практике документирования с Claude я могу работать над проектом даже при наличии всего 30 минут свободного времени. Я прошу Claude быстро освоиться, на что уходит около пяти минут. Я могу прочитать наши обновленные заметки, дать подсказку, попросить зафиксировать прогресс и двигаться дальше.

В моих предыдущих проектах мне требовались целые блоки времени. Новое приложение для iPhone я написал за 17 дней небольшими отрезками по одному-два часа. Я откладывал его на несколько недель, возвращался и мог продолжить работу. Для меня это кардинально меняет ситуацию.

4. Сжатие означает конец сессии

Claude выполняет процесс под названием «сжатие». Это позволяет ему сжимать и индексировать токены в текущей сессии. В первый раз я получил уведомление о сжатии без дополнительных подробностей. Затем мое взаимодействие с ИИ просто прекратилось. Казалось, он завис примерно на 15 минут. Я подумал о поломке, но все оказалось в порядке.

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

Мой совет вам (и я придерживаюсь этой практики с момента первого уведомления): используйте сообщение о сжатии как будильник. При его появлении я жду возобновления возможности взаимодействия с Claude. Затем я даю ему команду записать прогресс и завершаю сессию.

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

5. Используйте GitHub для страховки

Даже если вы работаете в одиночку, вам рано или поздно понадобится подключить проект к GitHub. В моей статье о настройке Claude я показывал, как это сделать. После установления связи Claude сможет фиксировать вашу работу в репозитории GitHub.

Я предпочитаю создавать новую ветку перед началом работы над новой функцией, прорабатывать ее, а затем объединять ветку с основным репозиторием после проверки работоспособности. В программировании это не новость. Это лучшая практика для любого вида разработки, а не только для работы с ИИ.

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

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

6. Создавайте возможности импорта и экспорта на раннем этапе

Если ваш проект использует большой объем данных, добавьте в приложение функцию экспорта и импорта на раннем этапе.

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

Я начал добавлять функции в приложение, особенно поиск и фильтрацию, и мне понадобились данные для понимания работы. Функции фильтрации для меня являются ключевыми. Например, если я хочу увидеть все синие нити, я хочу получить их отсортированными и быстро.

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

Когда в коде возникнут ошибки (а это неизбежно), вам может потребоваться удалить приложение и переустановить его. Вы же не хотите потерять все введенные данные. Поэтому добавление возможностей импорта и экспорта — большое преимущество.

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

7. Как подходить к отладке

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

Через некоторое время ИИ начал сбиваться с пути, и мне пришлось его направлять. Одной из ключевых задач стало добавление внутренней системы логирования, а также способа копирования этих логов с iPhone в окно терминала на Mac для Claude Code. Мне также приходилось указывать Claude, что именно нужно записывать в лог, что искать, и объяснять мои цели.

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

Только после объяснения реального сценария (мне придется постучать по катушке, идти в другое место и открывать станок) система поняла проблему. Нельзя было просто оставить настройки тайм-аута по умолчанию. Ей пришлось полностью их обойти.

Итак, вот три основных правила для отладки:

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

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

Из этого урока есть простой вывод. Вам нужно тестировать. Много. Постоянно. Делать это должны вы, а не ИИ.

8. Организуйте структуру файлов

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

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

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

Недостаточно просто сказать Claude убраться. Вам придется указать желаемую структуру каталогов или взаимодействовать с ИИ для получения подсказок. После каждого изменения пройдитесь по полученному коду и протестируйте его.

Еще один совет: вы можете попросить Claude проверить весь код и сообщить о несоответствии фрагментов текущей структуре. Он это сделает и сможет выявить ошибки, но это не гарантирует 100% точности и полноты. Используйте его как инструмент, но также проверяйте каждое изменение.

9. Claude вам не начальник

Время от времени Claude Code решает, что он здесь главный. Вместо выполнения работы он начинает указывать вам, как делать то, что нужно. Это может касаться работы с файлами, изменения настроек или даже написания подпрограмм в рамках проекта.

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

Скажите Claude, что хотите, чтобы он выполнил работу. Он может возразить (убедитесь, что у вас есть резервная копия), но если вы будете настаивать, он действительно сделает то, за что вы ему платите.

Эх. Роботы в наше время. Правда?

10. Используйте Swift и SwiftUI

Swift — это язык программирования с открытым исходным кодом от Apple для разработки приложений в их экосистеме. SwiftUI — связанный с ним инструмент для создания компонентов пользовательского интерфейса. Хотя существуют и другие инструменты для разработки под iOS, я настоятельно рекомендую начать с чистого Swift и SwiftUI.

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

Я разработал свое приложение на Swift. Вполне возможно, что использование большей части существующего кода окажется практичным, если я в конечном итоге захочу создать нативное приложение для Mac или Apple Watch.

А вы?

Вы пробовали создавать приложения или важные функции с помощью ИИ, например Claude Code или ChatGPT Codex, используя метод vibe-coding? Какие этапы процесса у вас хорошо работали, а где возникали проблемы?

Согласны ли вы с идеей работы очень маленькими шагами, а не с предоставлением ИИ полного технического задания? Как вы организуете документацию, контроль версий и отладку, когда ИИ в основном сам набирает текст?

Если вы разрабатывали приложения для платформ Apple, считаете ли вы Swift и SwiftUI подходящей основой для разработки с использованием ИИ? Или у вас были лучшие результаты с другими подходами? Поделитесь своим мнением в комментариях.

Обзор Google Pixel Watch 4: лучшие умные часы на Android?

Источник: Zdnet
Подпишитесь на наши новости:
Нажимая кнопку «Подписаться», вы принимаете «Пользовательское соглашение» и даёте согласие с «Политикой обработки персональных данных»