Инди-Хакинг Вайб-Кодинг сетап продуктового менеджера среднего возраста

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

Немного истории

Моё путешествие в vibe-кодинг началось полтора года назад. Пока я выгорал от иммиграционных заморочек и переезда, работая на своей довольно стабильной работе, я искал способ вернуть ту детскую радость от создания чего-то своими руками — не через чужие. Вдохновившись DHH, я наткнулся на Rails, и как любой junior-программист, начал с туториала по To-Do list app, который теперь стал Todero.app.

Автор за работой
Автор за работой

Самое большое изменение пришло вскоре с ChatGPT, который позволил мне тратить меньше времени на чтение доков и больше — на реальное строительство приложения. Это был первый раз, когда мне стало довольно легко побеждать прокрастинацию перед чем-то новым.

Раньше я не знал, с чего начать или что гуглить, но с приходом ChatGPT я просто начал задавать вопросы о том, как сделать то, что хочу. Ответы тогда были не очень, но пока я формулировал вопрос и получал подсказки от нашего ИИ-владыки, я обычно находил способ построить то, что хотел.

Потом вышел Sonnet 3.5, и именно тогда я разработал большую часть приложения — потому что обрёл напарника-программиста, который был достаточно хорош для полноценной работы (предполагая, что я сам не считаю себя очень хорошим программистом).

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

Через полтора года я нашёл сетап, который мне хорошо подходит. Ничего особенного, но поскольку (не вымышленные) люди продолжают спрашивать меня об этом, я решил поделиться с миром.

Настоящее время

Во-первых, я использую очень ванильный набор инструментов. На то две причины:

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

Длинная взлётная полоса. Трудный урок, который я усвоил, управляя теперь обанкротившимся и закрытым венчурным стартапом, — это то, что не нужно двигаться быстро, а нужно иметь достаточно взлётной полосы, чтобы валидировать идеи. Не важно, vibe-кодишь ты или нет, чем больше раз ты можешь бросить кубики, тем выше шанс на успех. Золотые или пластиковые кубики не имеют значения в реальной игре. Так что, будучи наёмным работником с ограниченным количеством денег на хобби-проекты, я решил выжимать максимум из каждого потраченного доллара и безжалостно оптимизировать свой бюджет на хобби — даже если речь о $10 против $0.:

Инфраструктура:

Hetzner Cloud как хостинг-провайдер (инстансы за $5 в месяц работают идеально и могут быть апгрейжены при росте парой кликов; плюс у них простой в настройке файрвол, так что не нужно учить firewalld или iptables, и еще ты получаешь очень простые бэкапы).

Netdata для мониторинга железа (у них есть homelab-план, который покрывает мои нужды за $5 на инстанс, давая все insights о сервере).

Rabata.io для S3-облачного хранилища. Hetzner S3 имеет минимальный заряд за бакет $5, а Rabata — нет; мой типичный счёт сейчас около $1 в месяц за S3, что идеально для хобби-проектов вроде моего, и я могу иметь сколько угодно бакетов. Я также не парюсь о дисковом пространстве, потому что с такой ценой это буквально не имеет значения. Они ещё не берут за запросы, как многие другие.

Honeybadger.io как сборщик ошибок и мониторинг приложения (APM). Тоже есть бесплатный план у Sentry но выглядит, на мой субъективный взгляд лучше.

Cloudflare для безопасности и кэширующего CDN (полностью бесплатно). Я использовал Hatchbox.io для деплоя ($10 за сервер), но перешёл на Kamal, который бесплатный и более гибкий. Resend для отправки email (просто проще в использовании, чем Amazon SES). Openrouter для подключения LLM.

Как технический стек, я использую:

  • Rails 8 с Solid Trifecta для всего кода, включая чатботов.
  • Встроенные в Rails Turbo и Stimulus.js для всех фронт-энд нужд.
  • Postgres как базу данных.
  • Docker (управляемый Kamal).

Мои основные инструменты для кодинга:

  • Ubuntu + Omakub как ОС.
  • Alacritty с Zellij как терминал.
  • Cursor как основной IDE.
  • Micro (потому что я слишком мягкий, чтобы учить Vim) как редактор в терминали.
  • Git + GitHub (очевидно) для контроля версий.
  • Grok для всего LLM-использования вне IDE, от исследований и написания текстов до генерации изображений (например, Grok помог мне как редактор для этой статьи).

Вайбы

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

Opus для планирования бэкенда и половины фронт-энд разработки. Opus дорого использовать для всех кодинговых нужд — мой счёт за прошлый месяц достиг $500 в основном из-за него, пока Cursor не ввёл новый план за $200, который я рекомендую всем, кто пишет много кода. С тем же использованием, как в прошлом месяце, я не вышел за лимит, включённый в этот $200-план. Я использую Opus в основном для планирования бэкенд-фич, фронтенда и написания промптов для Sonnet.

Sonnet 4 для повседневного кодинга большей части бэкенда и половины фронт-энд кода. Opus хорош в создании несложных UI и пишет хорошие тексты, так что я делю фронт-энд работу между Opus и Sonnet в зависимости от сложности дизайна и контента фронта.

Вот пример моих .cursorrules, которые я использую для каждой беседы.

Вот пример моего промпта для планирования, вариации которого я использую, когда нужно, чтобы Claude Opus создал набор задач для Sonnet.

Я обнаружил, что LLM пишут хорошие промпты для LLM, так что у меня нет никаких магических специфических промптов. Когда нужно разработать что-то сложное, я прошу Opus сгенерировать промпт и записываю его в Markdown-файлы, если фича требует нескольких шагов — и я понимаю, что лучше разбить это на несколько чатов из-за деградации качества вывода LLM с ростом контекста, я прошу расписать шаги в отдельных файлах.

В отличие от рекомендаций самой команды Cursor, я не смог найти o3 полезным для планирования. На моих задачах и с моими паттернами использования я нашёл, что o3 в основном бесполезен для меня, но многие мои друзья довольны им. Вы можете попробовать сами использовать o3 вместо Opus для написания промптов и планирования фич.

Почему не Claude Code?

Я слышал много положительного о Claude Code, но никогда не пробовал сам, потому что мне всё равно нужен IDE для редактирования кода, и я люблю Cursor. Платить за оба — Cursor и Claude Code — по $400 в месяц для меня перебор. Плюс, мне нравится команда Cursor после просмотра их интервью с Lex Fridman (лучшее интервью AI-команды среди всех, что он делал), и я хочу, чтобы они преуспели.

Ещё общие советы, которые никто не просил, основанные на моём ограниченном опыте:

Ты должен понимать код, который генерирует LLM. Так что используй только языки программирования и фреймворки, с которыми знаком. Искушение добавить разные красивые новые инструменты велико, пока LLM может их круто использовать, но тогда ты напишешь ещё один твит о том, что vibe-кодинг не работает для тебя.

Получи хорошее понимание, как работает твой технический стек, чтобы ты мог делать простые вещи без LLM. Если ты работаешь над веб-приложением, ты должен уметь создать сайт и задеплоить его на self-hosted веб-сервер без помощи LLM (хотя научиться этому можно с LLM, а потом попробовать повторить самостоятельно). Если мобильное приложение — то же самое: ты должен уметь создать простое приложение без помощи LLM, чтобы эффективно использовать ИИ для себя.

Если ты знаешь, как сделать вещь, делай сам и используй LLM как напарника-программиста. Если трудно начать — стартуй с LLM. Как я сказал раньше, для меня ИИ — лучший борец с прокрастинацией: когда не знаю, с чего начать, я запускаю Cursor Agent, чтобы он сделал это за меня, и после нескольких итераций я пойму, что и как хочу построить.

LLM пытаются притащить кучу сторонних библиотек в твой проект просто потому, что кто-то на Reddit упомянул их три года назад. Библиотеки могли устареть и стать неподдерживаемыми с тех пор, так что когда это происходит, останови генерацию ответа и спроси, зачем нам это нужно и какая более "простая альтернатива технологии X существует". Чем меньше кода у тебя, чем меньше сторонних библиотек, тем меньше контекста нужно обрабатывать LLM — тем умнее будут ответы.

Будущее

Я начал своё кодинговое путешествие снова после 10-летнего отсутствия в разработке — будучи менеджером и фаундером — как способ преодолеть тревогу и снова стать технически компетентным. ИИ пришел на помощь, чтобы помочь мне вернуться в строй. Я планирую кодить любые сумасшедшие идеи, которые приходят в голову, и выжимать из этого максимум. И опыт разработки своими руками помогает мне быть лучшим менеджером и лучше понимать технические вызовы, с которыми сталкивается моя команда. Так что, независимо от того, преуспеют мои проекты или провалятся, я делаю это ради мастерства и улучшения навыков с ИИ, которые могу использовать в основной работе и становиться лучше. Поэтому я рекомендую любому менеджеру начать мастерить что-то в свободное время — не чтобы стать self-made one-man billion-dollar vibe-coded startup, а как лучший способ оседлать волну ИИ-революции.

Об авторе

Иван Кузнецов, ex-fullstack dev, ex-fintech-executive, провалившийся стартап-фаундер, теперь продуктовый менеджер, vibe-кодинг и RoR энтузиаст.

8
2
1 комментарий