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