← 返回列表

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

  1. Нечітка ідея: «Хочу написати скрапер, щоб зібрати топ теми з Zhihu».
  2. Написати перший промпт: відразу попросити AI згенерувати код.
  3. Запустити → помилка → вставити помилку назад → AI виправляє.
  4. Відчуття, що інтерфейс некрасивий → «Зроби цю кнопку круглішою, фон зміни на градієнт синього» → AI змінює.
  5. Не вистачає функціоналу → «Додай можливість збереження в CSV» → AI додає.
  6. Цикл 3-5, доки «відчуття, що достатньо».

Процес Spec Coding

  1. Написати специфікацію: чітко визначити вхід/вихід, структури даних, обробку помилок, вимоги до продуктивності, нефункціональні вимоги (наприклад, логування, обмеження швидкості).
  2. Розбити специфікацію на завдання: наприклад, завдання 1: реалізувати функцію fetch_hot_topics(), дотримуючись сигнатури API зі специфікації.
  3. Реалізувати кожне завдання за допомогою AI: промпт містить сигнатуру функції, коментарі, очікувані тестові випадки.
  4. Людська перевірка та валідація: переконатися, що відповідає специфікації, запустити модульні тести.
  5. Інтеграція та регресія.

4. Порівняння переваг і недоліків

Характеристика Vibe Coding Spec Coding
Швидкість освоєння Дуже швидка, прототип за кілька хвилин Повільна, потрібно писати документацію, розбивати завдання
Якість коду Низька (може бути надлишковим, непослідовним, приховані помилки) Висока (читабельний, тестований, відповідає архітектурі)
Підтримуваність Погана, наступні розробники не розуміють «чому так написано» Добра, специфікація є документацією
Залежність від LLM Дуже висока, зміна моделі може кардинально змінити результат Середня, за умови чіткої специфікації різні моделі можуть виробляти подібні структури
Складність налагодження Складна, невідомо звідки взялася логіка коду Легка, перевірка за специфікацією
Підходить для командної роботи Майже неможливо Так (специфікація як контракт для комунікації)
Визначеність результату Низька, результат кожного діалогу може відрізнятися Висока, однакова специфікація дає стабільний результат

5. Практичні рекомендації

«На роботі vibe coding та spec coding не є взаємовиключними, вони використовуються в поєднанні — застосовуйте відповідний підхід у відповідній ситуації:
- На етапі дослідження (коли не визначилися з технологією або стилем UI) використовуйте Vibe Coding для швидкої перевірки різних варіантів, наприклад, «напиши компонент картки за допомогою Tailwind, подивимося, як виглядає».
- Як тільки рішення прийнято, одразу переходьте на Spec Coding: перетворіть успішний прототип у чітку специфікацію (вхід/вихід, граничні умови, обробка помилок), а потім доручіть AI або людині переписати продуктивний код строго за специфікацією.
Чистий Vibe режим підходить лише для одноразових скриптів або внутрішніх інструментів; для систем, які потребують довгострокової підтримки та використовуються багатьма людьми, Spec Coding є обов'язковою вимогою.»

评论

暂无已展示的评论。

发表评论(匿名)