AI серія інтерв'ю 14: Різниця між vibe coding та spec coding?
Це проблема, з якою стикається більшість програмістів. Vibe Coding та Spec Coding — це два різні робочі парадигми при програмуванні з використанням великих мовних моделей (LLM). Їх основна відмінність полягає в тому, чи даєте ви AI «введення» у вигляді нечітких відчуттів, чи точних специфікацій.
1. Просте пояснення на прикладі приготування їжі
- Vibe Coding = Ви кажете другу «хочу гострого», друг на око готує страву, ви пробуєте і кажете «додай солі», він додає. Смак може бути чудовим, але інший друг приготує зовсім інакше.
- Spec Coding = Ви пишете рецепт: «20 г соусу Дубань, 150 г яловичини, 50 г селери, обсмажити на сильному вогні 2 хвилини, перед зняттям додати 3 г цукру». Різні кухарі за рецептом готують однаково.
2. Визначення
| Аспект | Vibe Coding | Spec Coding |
|---|---|---|
| Альтернативна назва | Програмування, кероване відчуттями, імпровізація за підказками | Програмування, кероване специфікаціями, документація перш за все |
| Форма введення | «Зроби мені гарну сторінку входу, щоб було технологічно» | «Сторінка входу повинна містити поля для введення електронної пошти/пароля, прапорець Запам'ятати мене, кнопку відправки; фронтенд використовує React + Tailwind; правила перевірки форми: формат електронної пошти, довжина пароля ≥8; у разі помилки показувати червоне сповіщення...» |
| Спосіб використання AI | Діалоговий, ітеративний: надати загальний напрямок → побачити результат → налаштувати | Інженерний: спочатку написати детальний PRD/технічну специфікацію → AI генерує код на основі специфікації |
| Рівень участі людини | Низький: покладається на креативність AI, людина лише перевіряє «чи правильно відчувається» | Високий: людина спочатку виконує проектування/архітектуру, AI в основному виконує |
| Типові сценарії | Швидке прототипування, особисті інструменти, дослідження інтерфейсу, креативне написання коду | Виробничі системи, командна робота, код, який потребує підтримки/тестування |
3. Порівняння робочих процесів
Процес Vibe Coding
- Нечітка ідея: «Хочу написати скрапер, щоб зібрати топ теми з Zhihu».
- Написати перший промпт: відразу попросити AI згенерувати код.
- Запустити → помилка → вставити помилку назад → AI виправляє.
- Відчуття, що інтерфейс некрасивий → «Зроби цю кнопку круглішою, фон зміни на градієнт синього» → AI змінює.
- Не вистачає функціоналу → «Додай можливість збереження в CSV» → AI додає.
- Цикл 3-5, доки «відчуття, що достатньо».
Процес Spec Coding
- Написати специфікацію: чітко визначити вхід/вихід, структури даних, обробку помилок, вимоги до продуктивності, нефункціональні вимоги (наприклад, логування, обмеження швидкості).
- Розбити специфікацію на завдання: наприклад, завдання 1: реалізувати функцію
fetch_hot_topics(), дотримуючись сигнатури API зі специфікації. - Реалізувати кожне завдання за допомогою AI: промпт містить сигнатуру функції, коментарі, очікувані тестові випадки.
- Людська перевірка та валідація: переконатися, що відповідає специфікації, запустити модульні тести.
- Інтеграція та регресія.
4. Порівняння переваг і недоліків
| Характеристика | Vibe Coding | Spec Coding |
|---|---|---|
| Швидкість освоєння | Дуже швидка, прототип за кілька хвилин | Повільна, потрібно писати документацію, розбивати завдання |
| Якість коду | Низька (може бути надлишковим, непослідовним, приховані помилки) | Висока (читабельний, тестований, відповідає архітектурі) |
| Підтримуваність | Погана, наступні розробники не розуміють «чому так написано» | Добра, специфікація є документацією |
| Залежність від LLM | Дуже висока, зміна моделі може кардинально змінити результат | Середня, за умови чіткої специфікації різні моделі можуть виробляти подібні структури |
| Складність налагодження | Складна, невідомо звідки взялася логіка коду | Легка, перевірка за специфікацією |
| Підходить для командної роботи | Майже неможливо | Так (специфікація як контракт для комунікації) |
| Визначеність результату | Низька, результат кожного діалогу може відрізнятися | Висока, однакова специфікація дає стабільний результат |
5. Практичні рекомендації
«На роботі vibe coding та spec coding не є взаємовиключними, вони використовуються в поєднанні — застосовуйте відповідний підхід у відповідній ситуації:
- На етапі дослідження (коли не визначилися з технологією або стилем UI) використовуйте Vibe Coding для швидкої перевірки різних варіантів, наприклад, «напиши компонент картки за допомогою Tailwind, подивимося, як виглядає».
- Як тільки рішення прийнято, одразу переходьте на Spec Coding: перетворіть успішний прототип у чітку специфікацію (вхід/вихід, граничні умови, обробка помилок), а потім доручіть AI або людині переписати продуктивний код строго за специфікацією.
Чистий Vibe режим підходить лише для одноразових скриптів або внутрішніх інструментів; для систем, які потребують довгострокової підтримки та використовуються багатьма людьми, Spec Coding є обов'язковою вимогою.»
评论
暂无已展示的评论。
发表评论(匿名)