🚀 Nick Dobos
Vibe coder, YouTuber (NickScambi), специалист по rapid prototyping через AI. Nick доказал что можно строить работающие продукты за часы — если правильно итерировать через результат, а не через спецификацию. Ship first, refactor later — CC делает это возможным.
"Ship first, refactor later — CC делает это возможным." Традиционная разработка: спека → архитектура → код → тест → деплой. Vibe coding: описание результата → итерация через демо → рефакторинг того что понравилось. Порядок меняется. Скорость к первому user feedback — в 10 раз быстрее.
Vibe coding — это принципиально другой workflow. Вместо того чтобы думать "как реализовать" — ты описываешь "что хочу увидеть". CC строит. Ты смотришь на результат и говоришь что нужно изменить. Итерируешь через демо, а не через код.
Принципиальное отличие от обычного промптинга:
# ТРАДИЦИОННЫЙ подход: работа со спецификацией
"Реализуй UserService с методами:
- create(UserDTO $dto): User
- update(int $id, UserDTO $dto): User
- delete(int $id): void
Используй Repository pattern, валидацию через FormRequest,
events UserCreated/UserUpdated/UserDeleted."
# Результат: точная реализация спеки. Но: правильная ли спека?
# VIBE CODING: работа с результатом
"Мне нужна страница где менеджер видит список пользователей,
может добавить нового, отредактировать имя/email,
и отключить аккаунт (не удалить, а именно отключить).
Сделай это."
# Результат: working prototype. Потом: "вот здесь кнопка не там",
# "добавь поиск", "статус должен быть цветным".
# Итерация через ДЕМО, а не через спеку.
# Когда vibe coding лучше: ранние этапы, прототипы, unclear requirements
# Когда traditional лучше: чёткие требования, refactor существующего
Твой артефакт на каждой итерации — демонстрация, а не код. Ты смотришь на результат и итерируешь по нему. Это работает потому что пользователи реагируют на демо, не на спецификации. Ты быстрее узнаешь что нужно — ещё до того как написал "правильный" код.
Nick демонстрирует на YouTube: полный рабочий прототип за 2-4 часа. Это возможно если следовать правильному порядку. Ключевой инсайт: не рефакторить то что выбросишь.
# Промпт для быстрого прототипа (Nick Dobos стиль)
"Мне нужен рабочий прототип за сегодня. НЕ production код —
рабочая демонстрация.
Что делает приложение:
[описание на языке пользователя, не технические детали]
Стек: Next.js + Tailwind CSS + Supabase
(или: Laravel + Livewire + Tailwind)
Приоритет: работает в браузере > качество кода
НЕ нужно: авторизация, error handling, тесты, документация
Начни с главной страницы. Я скажу что менять."
# Потом итерируешь через: "вот что не так:"
# - "кнопка должна быть справа"
# - "добавь поиск"
# - "нужен тёмный фон"
# - "убери это поле, оно не нужно"
# Каждая итерация: CC меняет → ты смотришь → следующее замечание
Nick популяризировал паттерн: показываешь CC скриншот нужного UI — получаешь рабочий код. Это не только для Figma — работает с любым сайтом, мобильным приложением, эскизом на бумаге.
# Базовый промпт для скриншота
"Сделай точно как на этом скриншоте.
Используй Tailwind CSS.
React + TypeScript.
Все интерактивные элементы должны работать."
# Для Figma дизайна
"Вот дизайн из Figma [скриншот].
Шрифт: Inter (Google Fonts).
Цвета из скриншота — определи по визуалу.
Адаптивность: mobile-first."
# Для существующего сайта (референс)
"Хочу страницу похожую на [скриншот чужого сайта].
Не копируй — вдохновись структурой и расположением.
Мой контент: [что нужно показать].
Мой стек: Vue 3 + Tailwind."
# Для эскиза
"Вот мой набросок [фото скетча].
Реализуй это как веб-страницу.
Добавь интерактивность по смыслу."
Как подготовить скриншот для максимального результата:
# Что делает скриншот более эффективным:
✓ Обрезать только нужную область (не весь экран с браузером)
✓ Убрать личные данные (replace с placeholder'ами если нужно)
✓ Добавить стрелки/аннотации для неочевидных элементов:
"→ это dropdown с вариантами"
"→ здесь поиск должен быть живым"
"→ этот блок фиксированный при скролле"
✓ Если несколько состояний — дать оба скриншота:
"Вот состояние по умолчанию и вот после клика на кнопку"
✓ Указать что НЕ нужно реализовывать:
"Блок с рекламой справа — не нужен"
"Footer — оставь пустым пока"
# Чего избегать:
✗ Скриншот с очень маленьким текстом (CC может не прочитать)
✗ Слишком большой скриншот целой страницы — лучше разделить на блоки
✗ Тёмные/плохо контрастные изображения
Nick разработал серию из 5 промптов которые строят полный MVP с нуля. Каждый промпт — отдельный шаг с чёткой целью. Порядок важен: следующий шаг зависит от результата предыдущего.
Один большой промпт "сделай всё" даёт непредсказуемый результат с ошибками которые сложно локализовать. Пять шагов позволяют проверить каждый уровень отдельно и скорректировать курс до перехода к следующему. Если БД неправильная — лучше поправить до того как пишется UI.
Vibe coding — для прототипов и ранних итераций. Nick честно признаёт: был момент когда его vibe-проект вырос до серьёзного продукта с реальными пользователями и деньгами — и подход пришлось менять. Он описывает признаки что пора переходить.
# Стоп-сигналы: пора переходить к structured development
## Признаки технические
✗ Один баг требует изменений в 5+ файлах
(нет архитектуры, логика разбросана)
✗ CC начинает давать противоречивые решения для похожих задач
(нет единого стиля, каждый промпт — отдельный мирок)
✗ Добавление новой фичи ломает существующую
(нет тестов, нет архитектурных invariants)
✗ Нельзя объяснить коллеге как работает ключевая часть
(ты сам не понимаешь что CC сделал)
## Признаки продуктовые
✗ Реальные пользователи платят деньги (ответственность выросла)
✗ Данные пользователей в production БД
✗ Нужна команда — ещё один человек должен работать с кодом
✗ SLA или договорённости с клиентами о надёжности
## Признаки процессные
✗ Невозможно вернуться на неделю назад (нет git истории с смыслом)
✗ Деплой = "надеюсь что ничего не сломалось"
✗ Починить один баг → появляется два новых
Что делать при переходе — передать CC для рефакторинга:
# Промпт для Nick-стиля рефакторинга из vibe в structured
"Этот код был написан как быстрый прототип.
Теперь это production-приложение.
Задача: рефакторить по слоям, начиная с [самый критичный модуль].
НЕ менять функциональность — только структуру.
Требования для нового кода:
- Чёткое разделение: controller / service / repository
- Каждый метод делает одно (SRP)
- Все зависимости через параметры/DI (не глобальные)
- Нет логики в контроллерах (только вызовы сервисов)
Начни с создания интерфейсов и классов — БЕЗ реализации.
Я утвержу структуру перед тем как начнёшь переносить логику."
Nick описывает свой проект инструмента для контент-создателей: стартовал как vibe-прототип за выходные, вырос до 200+ платящих пользователей. В тот момент когда серверные расходы превысили $500/месяц — он понял что надо остановиться и переписать по-человечески. Vibe-код работал но был неоптимален и хрупок. Переписал ключевые части за 2 недели с нормальной архитектурой.
Nick подчёркивает: vibe coding — это не "делай что хочешь". Это итерация через демо при минимальных ограничениях. Минимальных — не нулевых. Даже для прототипа есть правила которые нарушать опасно.
# CLAUDE.md — для vibe-проекта (Nick Dobos подход)
## Стек (зафиксировано, не менять без явного запроса)
- Frontend: Next.js + Tailwind CSS
- Backend: Next.js API Routes
- БД: Supabase (PostgreSQL)
- Деплой: Vercel
## Жёсткие запреты (даже в прототипе)
- Никогда не хранить пароли в plaintext
- Никогда не выводить ошибки с stack trace пользователю
- Никогда не делать SQL через template strings (только параметры)
- Env variables для всех секретов — не хардкодить
## Мягкие правила (можно нарушать с пометкой TODO)
- Валидация input — добавить потом, TODO: validate
- Error handling — минимальный, TODO: proper errors
- Тесты — не сейчас, TODO: add tests
- TypeScript типы — any допустим, TODO: proper types
## Приоритет при конфликте решений
1. Работает в браузере прямо сейчас
2. Безопасно (жёсткие запреты выше)
3. Читаемо
4. Оптимально (наименее важно для прототипа)