01 — Pengantar: Vibe Coding & Mengapa Fundamental Tetap Penting¶
1.1 Apa Itu Vibe Coding?¶
Vibe coding = pendekatan development yang mengandalkan AI untuk menulis kode, sementara manusia berperan sebagai director yang mengarahkan, mereview, dan memvalidasi.
Istilah ini dipopulerkan awal 2025 dan sejak itu spektrumnya melebar. Penting untuk membedakan dua mode:
| Vibe coding murni | AI-assisted engineering | |
|---|---|---|
| Review kode | Tidak / minimal — "yang penting jalan" | Setiap output direview |
| Cocok untuk | Prototype, demo, tool internal sekali pakai | Produk yang dipakai user nyata |
| Risiko | Tinggi — bug & lubang keamanan tersembunyi | Terkontrol |
| Yang kita tuju di tim | ❌ | ✅ |
📌 Wajib paham: Yang kita adopsi adalah AI-assisted engineering — kecepatan vibe coding + disiplin review engineering. Materi seri ini ada justru untuk membuat review itu mungkin dilakukan oleh semua orang.
1.2 Pergeseran Peran¶
| Development Normal | AI-Assisted Development |
|---|---|
| Menulis kode baris per baris | Mendeskripsikan kebutuhan dengan presisi (spesifikasi → prompt) |
| Debugging manual berjam-jam | Mengarahkan AI debugging, memverifikasi hasilnya |
| Review kode rekan tim, sesekali | Review kode AI, terus-menerus dan lebih kritis |
| Keahlian utama: sintaks & tooling | Keahlian utama: konsep, arsitektur, dan judgment |
| Bottleneck: kecepatan mengetik & mencari referensi | Bottleneck: kejelasan berpikir & kemampuan memvalidasi |
Konsekuensi menarik: kemampuan menulis kode menjadi kurang langka, kemampuan menilai kode menjadi lebih langka. Materi ini fokus ke yang kedua.
1.3 Analogi: Head Chef & Sous Chef¶
AI adalah sous chef yang sangat cepat memasak apa pun yang diminta. Anda adalah head chef yang:
- Menentukan menu (requirement & arsitektur)
- Memberi instruksi resep yang jelas (prompt)
- Mencicipi setiap masakan sebelum keluar dapur (review & testing)
- Memastikan makanan aman dikonsumsi (security)
Head chef tidak harus memotong bawang sendiri, tapi harus tahu rasa yang benar itu seperti apa — dan bisa mendeteksi kalau bahannya basi.
1.4 Karakteristik & Batasan AI Coding Assistant¶
Memahami cara AI gagal sama pentingnya dengan memahami cara AI membantu:
- AI mengoptimalkan "terlihat benar", bukan "benar". Model dilatih meniru pola kode di internet — termasuk pola yang buruk, usang, atau tidak aman.
- AI sangat percaya diri saat salah. Tidak ada nada ragu di outputnya. Kode salah dan kode benar sama-sama disajikan dengan meyakinkan.
- AI bisa "menghalu" (hallucination). Mengarang nama fungsi, package, atau API yang tidak pernah ada.
- AI kuat di happy path, lemah di edge case. Fitur jalan saat input sempurna, rusak saat input aneh (kosong, negatif, duplikat, unicode).
- AI tidak tahu konteks yang tidak Anda berikan. Ia tidak tahu konvensi tim, struktur project, atau keputusan arsitektur lama — kecuali diberi tahu.
- Kualitas output = kualitas input. Prompt ambigu → hasil ambigu. Garbage in, garbage out.
1.5 Workflow AI-Assisted Development yang Sehat¶
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 1. SPESIFIKASI │→│ 2. PROMPT │→│ 3. GENERATE │→│ 4. REVIEW │→│ 5. TEST │
│ Apa yang mau │ │ Instruksi │ │ AI menulis │ │ Baca, pahami, │ │ Happy path + │
│ dibangun? │ │ presisi + │ │ kode │ │ cek checklist │ │ edge case │
│ Edge case apa?│ │ konteks │ │ │ │ (bab 06) │ │ │
└─────────────┘ └─────────────┘ └─────────────┘ └──────┬──────┘ └──────┬──────┘
│ │
┌───────────────────┘ │
▼ tidak lolos ▼ lolos
kembali ke 2 (perbaiki prompt/minta revisi) MERGE/DEPLOY
Kesalahan paling umum: melompat dari 3 langsung ke merge. Langkah 4 dan 5 tidak boleh dilewati — di sanalah fundamental Anda bekerja.
1.6 Anatomi Prompt yang Baik¶
Prompt teknis yang efektif punya 5 komponen:
| Komponen | Contoh |
|---|---|
| Konteks | "Project Laravel 11 dengan MySQL, mengikuti struktur repository pattern yang sudah ada" |
| Tugas spesifik | "Buat endpoint POST /v1/orders" |
| Constraint | "Wajib pakai transaction, validasi lewat FormRequest, jangan pakai raw query" |
| Format output | "Sertakan file migration, controller, dan contoh response JSON" |
| Edge case | "Tangani kasus stok tidak cukup (response 422) dan produk tidak ditemukan (404)" |
Bandingkan:
❌ "buat fitur order dong"
✅ "Di project Laravel 11 ini, buat endpoint
POST /v1/orders. Requirement: butuh auth Bearer token; validasiproduct_id(wajib, harus ada di tabel products) danquantity(wajib, min 1); bungkus pembuatan order + pengurangan stok dalam satu transaction; response201saat sukses,422saat stok kurang,404saat produk tidak ada. Jangan pakai raw query."
Setiap istilah teknis di prompt ✅ (endpoint, auth, validasi, transaction, status code, raw query) akan Anda pelajari di bab-bab berikutnya. Itulah gunanya fundamental: memberi Anda kosakata untuk presisi.
1.7 Kapan TIDAK Menyerahkan ke AI¶
Beberapa hal tetap keputusan manusia:
- Keputusan arsitektur besar — monolith vs microservice, pilihan database, pilihan framework. AI bisa memberi pertimbangan, keputusan tetap manusia (karena manusia yang menanggung konsekuensinya bertahun-tahun).
- Trade-off bisnis — "fitur ini dikorbankan demi deadline?" bukan pertanyaan teknis.
- Kode yang menyentuh uang, data pribadi, atau akses — boleh dibantu AI, tapi review-nya wajib berlapis (AI review + human review).
- Menempelkan secret/credential asli ke prompt — jangan pernah (detail di bab Security §5.9).
1.8 Etos Kerja Baru¶
- AI mempercepat, bukan menggantikan judgment.
- Kode jalan ≠ kode benar ≠ kode aman. Tiga hal yang berbeda; demo yang sukses hanya membuktikan yang pertama.
- Kalau tidak paham kodenya, jangan merge. Minta AI menjelaskan baris per baris dulu — itu juga cara belajar tercepat.
- Setiap orang yang men-generate kode bertanggung jawab atas kode itu, sama seperti kalau menulisnya sendiri.
🧪 Latihan: 1. Ambil satu fitur kecil yang Anda pahami (misal: form kontak). Tulis prompt lengkap dengan 5 komponen di §1.6, lalu minta AI membuatnya. 2. Setelah AI selesai, minta: "Jelaskan kode ini baris per baris untuk orang non-teknis." Perhatikan bagian mana yang tidak Anda pahami — itu petunjuk topik yang perlu didalami.