2 poin oleh GN⁺ 2025-01-14 | 1 komentar | Bagikan ke WhatsApp
  • Ulasan oleh David A. Wheeler

    • "Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems" karya David J. Agans dinilai sebagai buku debugging yang esensial bagi pengembang perangkat lunak dan perangkat keras.
    • Buku ini menjelaskan prinsip-prinsip dasar untuk menemukan dan memperbaiki bug, bukan teknik tertentu, sehingga sangat berguna terutama bagi pengembang pemula maupun tingkat menengah.
    • Buku ini disusun dengan berpusat pada "sembilan aturan", dan memuat penjelasan serta cara menerapkan masing-masing aturan.
  • Sembilan aturan

    • Pahami sistemnya: Penting untuk membaca manual, memahami dasar-dasarnya, dan memanfaatkan alat dengan baik.
    • Picu kegagalan: Penting untuk mereproduksi kembali kegagalan dan menemukan penyebab bug yang muncul sesekali.
    • Berhenti berpikir dan amati: Kumpulkan data terlebih dahulu dan jangan bergantung pada tebakan.
    • Divide and conquer: Selesaikan masalah dengan mempersempit ruang masalah, dan gunakan pola pengujian yang mudah diidentifikasi.
    • Ubah satu hal pada satu waktu: Isolasi elemen inti, lalu ubah pengujian satu per satu.
    • Simpan jejak audit: Catat pekerjaan yang dilakukan dan hasilnya, sambil memahami bahwa setiap detail bisa jadi penting.
    • Periksa colokannya: Ragukan hal-hal yang diasumsikan benar, dan uji alat yang digunakan.
    • Dapatkan sudut pandang baru: Penting untuk memperoleh wawasan baru dan mendengarkan suara pengalaman.
    • Kalau belum diperbaiki, berarti belum selesai: Pastikan masalah benar-benar telah teratasi dan penyebabnya sudah diperbaiki.
  • Kelebihan dan kekurangan buku

    • Buku ini berfokus pada prinsip-prinsip dasar debugging, sehingga berbeda dari buku-buku teknis lainnya.
    • Terdapat saran praktis tentang cara menangani masalah yang muncul secara intermiten.
    • Lampiran buku ini mencakup situs web terkait dan tautan unduhan poster.
    • Kekurangannya adalah tidak adanya daftar yang merangkum semua aturan dan subaturan dalam satu halaman, serta kurangnya saran yang spesifik untuk teknologi tertentu.
  • Kesimpulan

    • Buku ini berguna untuk mempelajari atau mengingat kembali prinsip-prinsip dasar debugging, dan membantu baik pemula maupun pakar.
    • David A. Wheeler sangat merekomendasikan buku ini dan menekankan pentingnya prinsip-prinsip dasar.

1 komentar

 
GN⁺ 2025-01-14
Komentar Hacker News
  • Godaan untuk memperbaiki kode yang memiliki bug memang besar, tetapi lebih mudah merusak kode yang sudah berjalan daripada memperbaiki kode yang rusak. Seperti contoh lampu Natal, memulai dari contoh kerja minimum untuk menemukan masalah adalah pendekatan yang efektif

  • Hal penting saat memecahkan masalah adalah tidak panik. Diperlukan pemikiran yang jernih, dan manajer yang baik akan membantu agar kita bisa fokus pada penyelesaian masalah

  • git bisect berguna untuk menemukan commit yang menyebabkan masalah di antara banyak commit. Ini sangat membantu untuk menemukan masalah dengan cepat, terutama di codebase besar

  • Memahami sistem itu penting, tetapi membaca semua manual tidak realistis. Diperlukan pendekatan yang praktis

  • Penting untuk mengedit file yang benar di mesin yang benar

  • Buku-buku yang direkomendasikan untuk membangun pola pikir pemecahan masalah:

    • "The Martian" by Andy Weir
    • "Zen and the Art of Motorcycle Maintenance"
    • "The Three-Body Problem"
    • "To Engineer Is Human" by Henry Petroski
    • "Surely You're Joking, Mr. Feynman!"
  • Aturan tambahan:

    • "Curigai bahwa kesalahannya ada pada diri sendiri". Perubahan kode sendiri harus dicurigai lebih dulu
    • "Jika menemukan satu bug, carilah juga masalah lain yang terkait". Masalah dengan jenis yang sama bisa muncul di tempat lain
    • "Optimalkan dengan memprioritaskan pengguna dan programmer pemeliharaan"
  • Bug harus ditambahkan sebagai test di CI untuk mencegah regresi. Perlu dipastikan bahwa CI gagal sebelum perbaikan dan berhasil setelah perbaikan

  • Pekerjaan belum selesai meskipun debugging sudah dilakukan. Untuk setiap bug, ada tiga pertanyaan yang harus diajukan:

    1. Apakah kesalahan ini juga ada di tempat lain?
    2. Bug berikutnya apa yang tersembunyi di balik bug ini?
    3. Apa yang harus dilakukan untuk mencegah bug seperti ini?
  • Penting untuk mereproduksi masalah dengan konfigurasi seminimal mungkin. Dalam kebanyakan kasus, dengan cara ini bug bisa ditemukan. Membagi kode menjadi dua untuk menemukan bagian mana yang tepatnya salah adalah pendekatan yang efektif