Kalau ada satu hal yang pasti dalam dunia pengembangan web, itu adalah: bug akan selalu datang. Bahkan ketika kamu sudah merasa menulis kode dengan rapi, selalu saja ada satu baris kecil yang bisa membuat semuanya rusak. Tapi dari semua itu, ada satu pelajaran besar yang saya dapatkan sebagai Full Stack Web Developer: bug bukanlah musuh, tapi guru yang menyamar.
Di blog ini, saya ingin berbagi cerita nyata saat saya dihadapkan pada bug yang tidak hanya membuat frustrasi, tapi juga membuka wawasan saya akan pentingnya debugging yang sistematis, kesabaran, dan keinginan untuk terus belajar.
Cerita: API Error 500 Tanpa Jejak
Beberapa waktu lalu, saya membangun aplikasi web sederhana dengan Next.js di front-end dan Express.js di back-end. Semuanya berjalan lancar… hingga suatu pagi aplikasi tiba-tiba menampilkan error 500 Internal Server Error setiap kali saya mengakses halaman dashboard.
Masalahnya? Tidak ada stack trace. Tidak ada log error di terminal. Hanya putih polos dan angka 500.
Saya sempat panik. Tapi kemudian saya ambil napas dan kembali ke prinsip dasar debugging:
Langkah-Langkah yang Saya Ambil
1. Reproduksi Masalah secara Konsisten
Langkah pertama adalah memastikan masalah terjadi secara konsisten. Saya temukan bahwa error hanya muncul jika user login, dan hanya saat data tertentu diambil dari database.
2. Periksa Log & Tambahkan Logging Manual
Karena tidak ada log berarti, saya tambahkan console.log() di setiap blok kode yang berpotensi error. Dari sini, saya tahu error terjadi saat melakukan query ke database menggunakan findOne().
3. Cek Struktur Data & Validasi Input
Ternyata, data yang dikirimkan ke query memiliki field undefined. Ketika field ini dipakai untuk filtering di MongoDB, query gagal secara diam-diam.
4. Solusi: Tambahkan Validasi dan Fallback
Saya tambahkan pengecekan untuk memastikan field tersebut tidak kosong sebelum query dilakukan. Hanya butuh dua baris kode, dan masalah pun selesai.
Pelajaran yang Saya Dapatkan
Logging itu Penting
Tanpa log, debugging adalah menebak dalam gelap. Sejak saat itu, saya mulai menggunakan library logging seperti winston untuk mencatat error dengan lebih detail.
Jangan Langsung Menyalahkan Framework
Awalnya saya curiga ini bug dari Next.js. Ternyata, itu murni kesalahan di logic saya sendiri. Framework hanya mematuhi perintah yang saya berikan—baik maupun buruk.
Pahami Alur Data dengan Jelas
Debugging seringkali bukan soal sintaks, tapi soal memahami bagaimana data bergerak di dalam aplikasi.
Sabar & Fokus Lebih Efektif daripada Panik
Butuh waktu hampir 3 jam untuk menyelesaikannya. Tapi saat saya berhenti panik dan mulai mengurai masalah satu per satu, progres pun terjadi.
Penutup
Debugging mungkin adalah bagian paling menyebalkan dalam coding, tapi juga bagian yang paling mendidik. Setiap bug mengajarkan kita untuk lebih teliti, lebih terstruktur, dan lebih memahami aplikasi yang kita bangun.
Jadi lain kali kamu bertemu bug aneh dan menyebalkan, jangan langsung kesal. Bisa jadi, di balik error itu ada pelajaran penting yang akan membentukmu jadi developer yang lebih matang.