Daftar periksa debugging
Kerjakan ini secara berurutan. Melompat langsung ke "perbaiki" adalah hal yang membuat AI berputar-putar tanpa arah.
- Reproduksi secara konsisten. Temukan langkah-langkah persis yang membuat bug terjadi setiap kali. Bug yang tidak bisa kamu reproduksi adalah bug yang tidak bisa kamu konfirmasi telah diperbaiki — kamu hanya akan menebak-nebak apakah bug itu sudah hilang. Jika terjadi sesekali (intermittent), cari variabel yang menjadi pemicunya: input tertentu, status sudah login versus belum login, jaringan yang lambat.
- Baca error yang sebenarnya. Jangan hanya sekilas. Pesan error dan bagian atas stack trace biasanya menyebutkan file dan baris tempat masalah terjadi. Pemula sering melewatkan kalimat paling berguna di layar karena tampak menakutkan.
- Kumpulkan konteksnya. Kumpulkan teks error, stack trace, kode yang relevan, dan deskripsi satu baris tentang apa yang kamu harapkan.
- Berikan gambaran lengkap kepada AI. Tempelkan semua hal di atas dalam satu pesan. Biarkan AI membentuk hipotesis.
- Bentuk hipotesis, bukan perbaikan. Tanyakan "apa yang bisa menyebabkan ini?" sebelum "perbaiki ini." Perbaikan yang salah berdasarkan teori yang salah membuang waktu — dan terkadang menambahkan bug kedua di atas bug pertama.
- Tambahkan logging untuk menguji hipotesis. Konfirmasi apa yang sebenarnya dilakukan kode sebelum mengubahnya.
- Lakukan binary search pada masalahnya. Persempit di mana masalah terjadi dengan memotong area yang dicurigai menjadi setengah, berulang kali.
- Perbaiki akar masalah, bukan gejalanya. Pastikan perbaikan mengatasi mengapa masalah terjadi, bukan hanya gejala yang terlihat.
- Verifikasi perbaikan dan periksa regresi. Jalankan ulang langkah-langkah reproduksi. Lalu pastikan fitur-fitur di sekitarnya masih berfungsi — regresi adalah ketika sebuah perbaikan diam-diam merusak sesuatu yang tadinya berfungsi, seperti menambal satu kebocoran tapi malah membuat pipa di sebelahnya pecah.
Daftar periksa itu sebenarnya adalah satu putaran (loop) yang kamu jalani sampai bug hilang. Setiap kotak menyerahkan bukti ke kotak berikutnya, dan verifikasi yang gagal hanya mengirimmu kembali berputar dengan apa yang sudah kamu pelajari:
┌──────────────┐
│ REPRODUCE │ make it happen every time
└──────┬───────┘
▼
┌──────────────┐
│ READ ERROR + │ what does it actually say?
│ GATHER │ collect trace + code + context
└──────┬───────┘
▼
┌──────────────┐
│ HYPOTHESIS │ "what could cause this?"
└──────┬───────┘
▼
┌──────────────┐
│ CONFIRM w/ │ add a log, get evidence
│ LOGGING │
└──────┬───────┘
wrong│ correct
┌──────┘ guess ▼
│ ┌──────────────┐
│ (new │ FIX root │ not the symptom
│ theory) │ cause │
│ └──────┬───────┘
│ ▼
│ ┌──────────────┐ fails / regression
└────────────┤ VERIFY │──────────┐
│ + regressions│ │
└──────┬───────┘ │
│ passes │
▼ ◀───────┘
✔ DONE (loop back around)
Urutan ini tidak sembarangan. Setiap langkah menghasilkan bukti yang dibutuhkan langkah berikutnya. Mereproduksi memberimu sesuatu untuk dibaca; membaca memberimu konteks untuk dikumpulkan; konteks memberi AI sesuatu untuk dijadikan hipotesis. Lewatkan satu langkah dan kamu memberi langkah berikutnya sebuah lubang.