Seri Wawancara AI 14: Perbedaan Vibe Coding dan Spec Coding?
Ini adalah masalah yang dihadapi sebagian besar programmer. Vibe Coding dan Spec Coding adalah dua paradigma kerja yang sangat berbeda saat ini dalam pemrograman dengan bantuan model bahasa besar (LLM). Perbedaan intinya adalah: apakah 'input' yang Anda berikan kepada AI adalah perasaan yang kabur, atau spesifikasi yang tepat.
1. Menggambarkan Perbedaan Vibe Coding dan Spec Coding dengan Analogi Memasak
- Vibe Coding = Anda berkata kepada teman 'Saya ingin makan pedas', teman Anda memasak berdasarkan perasaan, Anda mencicipi dan berkata 'tambah garam sedikit', dia menambahkan garam. Rasanya mungkin luar biasa, tetapi jika diganti teman lain, hasilnya bisa sangat berbeda.
- Spec Coding = Anda menulis resep: 'Pasta cabai Pixian 20g, irisan daging sapi 150g, potongan seledri 50g, tumis dengan api besar selama 2 menit, tambahkan gula 3g sebelum diangkat.' Koki yang berbeda mengikuti resep tersebut, hasil rasanya sangat konsisten.
2. Definisi Keduanya
| Dimensi | Vibe Coding | Spec Coding |
|---|---|---|
| Alias | Pemrograman berbasis perasaan, prompt improvisasi | Pemrograman berbasis spesifikasi, dokumen terlebih dahulu |
| Bentuk Input | 'Buatkan saya halaman login yang bagus, dengan nuansa teknologi' | 'Halaman login harus berisi input email/kata sandi, kotak centang 'Ingat saya', tombol submit; frontend menggunakan React + Tailwind; aturan validasi formulir: format email, panjang kata sandi \u22658; jika gagal, tampilkan petunjuk merah...' |
| Cara Penggunaan AI | Dialogis, iteratif: beri arahan umum \u2192 lihat output \u2192 sesuaikan | Rekayasa: tulis PRD/spesifikasi teknis terlebih dahulu \u2192 AI hasilkan kode berdasarkan spesifikasi |
| Tingkat Partisipasi Manusia | Rendah: bergantung pada kreativitas AI, manusia hanya bertanggung jawab atas 'apakah terasa benar' | Tinggi: manusia menyelesaikan desain/arsitektur terlebih dahulu, AI terutama melakukan eksekusi |
| Skenario Khas | Prototipe cepat, alat pribadi, eksplorasi UI, coding kreatif | Sistem tingkat produksi, kolaborasi tim, kode yang perlu dipelihara/diuji |
3. Perbandingan Alur Kerja Keduanya
Alur Vibe Coding
- Ide Samar: 'Saya ingin menulis crawler untuk mengambil daftar trending Zhihu.'
- Tulis prompt pertama: Langsung minta AI menghasilkan kode.
- Jalankan \u2192 error \u2192 tempelkan error kembali \u2192 AI perbaiki.
- Merasa UI jelek \u2192 'Buat tombol itu lebih bulat, ubah latar belakang menjadi gradien biru' \u2192 AI ubah.
- Fungsi kurang \u2192 'Tambahkan fungsi simpan ke CSV' \u2192 AI tambahkan.
- Ulangi langkah 3-5 sampai 'terasa sudah cukup'.
Alur Spec Coding
- Tulis dokumen spesifikasi: Tentukan input/output, struktur data, penanganan error, persyaratan kinerja, kebutuhan non-fungsional (seperti logging, rate limiting).
- Pisahkan spesifikasi menjadi tugas: Misalnya Tugas 1: Implementasi fungsi
fetch_hot_topics(), ikuti tanda tangan API dalam spesifikasi. - Minta AI implementasi tugas satu per satu: prompt berisi tanda tangan fungsi, komentar, ekspektasi kasus uji.
- Tinjauan dan verifikasi manual: Pastikan sesuai spesifikasi, jalankan unit test.
- Integrasi dan regresi.
4. Perbandingan Kelebihan dan Kekurangan
| Karakteristik | Vibe Coding | Spec Coding |
|---|---|---|
| Kecepatan Memulai | Sangat cepat, prototipe dalam beberapa menit | Lambat, perlu menulis dokumen, memecah tugas |
| Kualitas Kode | Rendah (mungkin redundan, tidak konsisten, bug tersembunyi) | Tinggi (dapat dibaca, diuji, sesuai arsitektur) |
| Keterpeliharaan | Buruk, orang lain tidak mengerti 'mengapa ditulis seperti ini' | Baik, spesifikasi adalah dokumentasi |
| Ketergantungan pada LLM | Sangat tinggi, ganti model bisa menghasilkan output yang sangat berbeda | Sedang, selama spesifikasi jelas, model berbeda bisa menghasilkan struktur serupa |
| Kesulitan Debug | Sulit, tidak tahu logika kode dari mana | Mudah, periksa sesuai spesifikasi poin per poin |
| Cocok untuk Kolaborasi Tim | Hampir tidak mungkin | Ya (spesifikasi sebagai kontrak komunikasi) |
| Determinisme Output | Rendah, hasil setiap dialog bisa melenceng | Tinggi, spesifikasi yang sama menghasilkan output stabil |
5. Saran Penggunaan di Dunia Nyata
"Dalam pekerjaan, vibe coding dan spec coding bukan pilihan satu atau yang lain, melainkan digunakan secara campuran, menggunakan pendekatan yang sesuai di situasi yang tepat:
- Pada tahap eksplorasi (saat belum pasti pilihan teknologi atau gaya UI), gunakan Vibe Coding untuk memverifikasi berbagai opsi dengan cepat, misalnya 'gunakan Tailwind untuk membuat komponen kartu, lihat hasilnya'.
- Setelah opsi ditentukan, segera beralih ke Spec Coding: susun prototipe yang berhasil menjadi spesifikasi yang jelas (input/output, kondisi batas, penanganan error), lalu minta AI atau manusia menulis ulang kode produksi sesuai spesifikasi secara ketat.
Mode Vibe murni hanya cocok untuk skrip sekali pakai atau alat internal; untuk sistem yang perlu dipelihara jangka panjang dan digunakan banyak orang, Spec Coding adalah persyaratan keras."
评论
暂无已展示的评论。
发表评论(匿名)