~/VibeHandbook
PDF Gratis

Bab 06 · 03

Siklusnya: maksud → generate → review → perbaiki

Semua isi buku ini bermuara pada satu siklus. Resapi ini baik-baik.

Siklus ini berputar terus sampai hasilnya memenuhi standar Anda — dan review adalah gerbang yang harus dilewati setiap kali:

   ┌──────────────────────────────────────────────┐
   │                                               │
   ▼                                               │
┌────────┐    ┌──────────┐    ┌────────┐    ┌──────────┐
│ INTENT │ ─▶ │ GENERATE │ ─▶ │ REVIEW │ ─▶ │  REFINE  │
│ (spec) │    │  (AI)    │    │ (you)  │    │  (you)   │
└────────┘    └──────────┘    └───┬────┘    └──────────┘
                                  │
                            pass? ▼
                            ┌──────────┐
                            │   SHIP   │
                            └──────────┘
  1. Maksud (Intent). Nyatakan apa yang Anda inginkan dan batasan-batasan yang penting — input, output, kasus-kasus tepi ( case), stack teknologi, gaya penulisan kode. Maksud yang samar menghasilkan kode yang samar.
  2. Generate. Biarkan model menulis implementasinya. Jangan menuntun sintaksnya kata per kata; deskripsikan perilakunya.
  3. Review. Baca apa yang dihasilkan. Apakah itu benar-benar melakukan hal yang dimaksud? Apakah ia menangani daftar kosong, nilai null, panggilan jaringan yang gagal? Apakah ini versi paling sederhana yang berhasil?
  4. Perbaiki (Refine). Tunjukkan bagian yang salah, berikan koreksi yang konkret, lalu generate ulang. Ulangi sampai memenuhi standar Anda.

Kebanyakan pemula melewatkan langkah 3. Mereka generate, kodenya jalan, lalu mereka lanjut. Kemudian kode itu rusak di produksi pada kasus yang tidak pernah mereka deskripsikan. Langkah review adalah tempat pekerjaan rekayasa (engineering) sesungguhnya terjadi.

Berikut contoh awal yang baik dalam siklus ini:

Write a TypeScript function `parseDuration(input: string): number`
that converts strings like "1h30m", "45s", "2d" into total seconds.

Requirements:
- Support units: d (days), h (hours), m (minutes), s (seconds).
- Multiple units can combine: "1h30m" = 5400.
- Reject invalid input (empty, unknown units, negative) by throwing
  an Error with a clear message.
- No external libraries. Include 5 unit tests covering the edge cases.

Show the function and tests only.

Perhatikan strukturnya: signature yang presisi, aturan yang eksplisit, kasus-kasus tepi yang disebutkan, batasan yang dinyatakan, dan permintaan untuk pengujian (test). Anda tidak berharap model menebak dengan benar — Anda menghilangkan ambiguitas yang biasanya menghasilkan tebakan buruk.

Langkah refine sama pentingnya sebagai sebuah keterampilan seperti prompt pertama tadi. Umpan balik yang samar menghasilkan perbaikan yang samar. Bandingkan dua koreksi berikut:

Bad:  "this is wrong, fix it"

Good: "parseDuration('1h30m') returns 90 instead of 5400 — you're
       summing the numbers but ignoring the unit multipliers. Multiply
       each value by its unit's seconds (d=86400, h=3600, m=60, s=1)
       before summing. Also add a test for the combined case '2d3h'."

Versi yang baik menyebutkan gejalanya, penyebabnya, dan perbaikannya. Anda sedang meninjau seperti Anda meninjau seorang kolega — dan semakin presisi Anda menunjukkan masalahnya, semakin sedikit putaran yang Anda habiskan. Setiap siklus seharusnya mengerucut menuju solusi. Jika Anda merasa berputar-putar di tempat, itu sinyal bahwa maksud Anda kurang jelas ditentukan sejak awal; berhentilah generate ulang dan tulis ulang spesifikasinya.

Mau versi offline?

Unduh seluruh buku sebagai PDF atau EPUB — gratis.