Perbaiki dulu alatmu
(ochagavia.nl)- Saat menelusuri bug pada library open-source, muncul masalah debugger tidak berfungsi
- Meskipun kode sudah dijalankan, breakpoint diabaikan, sehingga dicoba cara lain untuk menemukan masalahnya
- Berbagai upaya diagnosis tidak langsung, seperti menambahkan output log, dilakukan, tetapi tidak memberikan insight yang diinginkan
- Pada akhirnya, setelah memperbaiki kesalahan konfigurasi debugger, perilaku program bisa diamati secara rinci dan bug pun berhasil diselesaikan
- Dari pengalaman mengabaikan cacat pada alat itu sendiri karena terlalu fokus menyelesaikan masalah, ditekankan bahwa developer perlu lebih dulu memperbaiki alat agar bisa menyelesaikan masalah secara efisien
Masalah yang muncul saat mendiagnosis bug
- Saat mencari bug pada library open-source yang sedang dipelihara, terjadi gejala debugger mengabaikan breakpoint
- Sudah jelas bahwa kode mengeksekusi baris tersebut, tetapi program selesai tanpa berhenti
- Karena terlalu fokus pada penyelesaian masalah, persoalan pada debugger diabaikan dan pendekatan lain dicoba
- Diagnosis dicoba dengan mengubah kode dan menambahkan log, tetapi tidak menghasilkan informasi yang berguna
Memperbaiki debugger dan menyelesaikan masalah
- Diputuskan untuk menyelesaikan masalah debugger, lalu perbaikannya tuntas hanya dengan perubahan konfigurasi satu baris
- Setelah diperbaiki, perilaku program dapat diamati dengan rinci
- Berdasarkan informasi ini, bug berhasil diperbaiki
Kesadaran dan pelajaran
- Disadari adanya situasi paradoks ketika semangat untuk memperbaiki bug justru membuat masalah pada alat terabaikan
- Dialami langsung bahwa ketika alat tidak bekerja dengan benar, efisiensi pemecahan masalah menurun
- Yang dibutuhkan developer adalah kebiasaan memeriksa dan memperbaiki alat sebelum masalahnya
- Ditutup dengan kalimat “Fix your tools”, sebagai pesan yang mengingatkan semua programmer akan pentingnya alat
1 komentar
Opini Hacker News
Saya sudah 30 tahun berkarier, dan belakangan ini alat pengembangan benar-benar makin rusak
Saya menulis kode di Linux dengan Clio, dan selama beberapa tahun bug-nya makin parah
Sekarang saya sering cuma menganggap “kalau tidak jalan ya sudah” lalu lanjut. Hidup ini singkat, dan saya tidak punya waktu luang untuk memperbaiki kode orang lain juga
Saat mencoba memperbaiki masalah, ujung-ujungnya sering jatuh ke
yak shavingSaat mencoba menyelesaikan masalah kecil, pekerjaan-pekerjaan detail lain terus bermunculan tanpa habis
Video terkait bisa ditonton di sini
Kadang merapikan alat dan library bisa membuat produktivitas meledak, di lain waktu justru lebih cepat kalau langsung hardcoding
AI membantu merapikan alat, tetapi pada saat yang sama cakupannya ikut membesar sehingga pada akhirnya waktu yang dihabiskan untuk mengelola alat tetap sama
Pada akhirnya ini masalah prokrastinasi emosional. Kita enggan memikirkan struktur keseluruhan lalu hanya mengulang perubahan kecil, atau sebaliknya menunda desain keseluruhan dan malah sibuk merapikan alat-alat detail
yak shavingsering disalahpahami hanya sebagai buang-buang waktuSebenarnya ini juga proses menghadapi gesekan dan ketidaknyamanan yang memang perlu
Tapi kita tetap harus selalu memeriksa apakah ketidaknyamanan itu benar-benar diperlukan
Menginvestasikan 10~15 menit untuk mengotomatisasi atau mempersingkat pekerjaan berulang pada akhirnya sama dengan membeli waktu di masa depan
Pada akhirnya utang teknis tetap harus dibayar suatu hari nanti, jadi kita perlu membiasakan diri membayarnya sedikit demi sedikit
Rekayasa pada akhirnya adalah rangkaian terus-menerus dari proses mengasah kapak
Seperti kata Kent Beck, saya suka pendekatan “buat perubahan menjadi mudah terlebih dulu, lalu lakukan perubahan yang mudah itu”
Rasanya jauh lebih memuaskan memperbaiki kode daripada sekadar menambahkan fitur
AI tidak menganggap aneh meski menulis kode yang sama berulang kali, sehingga hasilnya tidak terstruktur dan tidak dapat digunakan ulang
Dalam praktiknya, lebih realistis untuk mengasahnya lagi saat alat mulai tumpul di tengah pekerjaan
Mereka terus bekerja tidak efisien sambil berkata, “Saya sedang sibuk sekarang, tidak ada waktu untuk mengasah kapak!”
Saya terkesan dengan kalimat, “Keinginan untuk memperbaiki bug justru menutupi fakta bahwa alatnya harus diperbaiki terlebih dahulu”
Fenomena ini juga dibahas dalam Why Greatness Cannot Be Planned karya Kenneth Stanley
Ini nasihat yang sangat bagus. Saya juga berusaha mempraktikkannya setiap hari
Tapi nasihat lanjutan, “sekarang berhenti memperbaiki alat, dan perbaiki masalah yang sebenarnya,” justru sulit diikuti
Saya juga sering mengalami situasi seperti ini
Memperbaiki gesekan kecil memang menghemat waktu nanti, tetapi ada jebakan untuk terus-menerus mengutak-atik alat saja tanpa akhir
Yang benar-benar sulit adalah menentukan kapan harus berkata, “segini sudah cukup,” lalu lanjut
Alat adalah sesuatu yang memberi efek pengganda terhadap usaha
Tetapi sulit menemukan keseimbangan antara
yak shavingdan kerja manual yang tidak perluJika memang berencana memakai alat yang sama dalam jangka panjang, mungkin kita justru perlu lebih condong ke arah
yak shavingdaripada yang dibayangkan, karena perbaikan 1% pun efek akumulasinya besarPelajaran terbesar adalah bahwa alat all-in-one kebanyakan memang kurang bagus
Saya sudah mencoba berbagai alat no-code seperti Make, Airtable, dan n8n untuk pipeline konten, tetapi semuanya mulai rusak setelah melewati skala tertentu
Pada akhirnya, memanggil API langsung dengan skrip Python jauh lebih stabil
Solusi sebenarnya bukan memperbaiki alat yang rumit, melainkan menggantinya dengan alat yang sederhana dan transparan
Melihat langsung alur kode dengan debugger sangat berguna
Jauh lebih intuitif untuk dipahami dibanding analisis statis
Jika terus mengubah variabel atau breakpoint, kita jadi mudah kehilangan inti masalahnya
Debugger seharusnya dipakai hanya untuk memverifikasi hipotesis. Kalau tidak, kita mudah terjebak dalam ‘ilusi seolah sudah ada kemajuan’
Kalau Anda suka tulisan seperti ini, saya ingin bercanda dengan mengatakan: jangan pernah menginstal Emacs