- Dalam percakapan baru-baru ini dengan seorang CEO teknologi ternama dan seorang insinyur, saya mendengar metodologi pengembangan perangkat lunak yang menarik. Metodologi ini membuat saya memikirkan heuristik dan generalisasi lainnya.
Metodenya
- Mulai mengerjakan sebuah fitur di awal hari. Jika belum selesai hingga akhir hari, hapus semuanya dan mulai lagi keesokan harinya. Unit test yang sudah ditulis boleh dipertahankan.
- Jika setelah beberapa hari fitur itu masih belum bisa diimplementasikan, pikirkan fondasi, infrastruktur, atau refaktorisasi yang memungkinkan fitur tersebut, implementasikan itu terlebih dahulu, lalu kembali ke fiturnya.
- Metode ini mirip dengan gerakan extreme programming pada akhir 1990-an dan awal 2000-an.
Pemikiran tentang metode ini
"Tulis semuanya dua kali"
- Nasihat untuk insinyur junior: selesaikan masalahnya, simpan kodenya di branch, lalu tulis ulang.
- Saya menemukan metode ini secara kebetulan setelah laptop saya rusak. Penulisan ulang hanya memakan 25% dari waktu implementasi awal, dan hasilnya jauh lebih baik.
- Dengan waktu 1,25x, Anda bisa mendapatkan kode dengan kualitas 2x lebih tinggi. Berguna untuk proyek yang membutuhkan pemeliharaan jangka panjang.
- Metode "mulai lagi setiap hari" bahkan lebih ekstrem daripada ini. Setiap kali menulis ulang, Anda cenderung menemukan solusi yang lebih mulus.
"Kuantitas memiliki kualitas"
- Kutipan Stalin ini berlaku untuk insinyur perangkat lunak. Bagi insinyur junior, 100 ribu baris kode pertama itu penting.
- Metode "mulai lagi setiap hari" membantu Anda menulis 100 ribu baris itu lebih cepat.
- Menyelesaikan masalah yang sama berulang kali bermanfaat untuk mengingat pola.
- Dengan 5 ribu baris kode yang sempurna, Anda bisa melihat semua pola utama. Sisa 95 ribu baris menata ulang neuron melalui pengulangan.
Perbandingan dengan heuristik "senjata di kepala"
- Kepada orang yang mengusulkan solusi untuk suatu masalah, tanyakan: "Jika harus selesai dalam 24 jam, apa yang akan Anda lakukan?"
- Metode ini memecah bias framing dan anchoring. Sering kali ini dapat menghasilkan rencana yang bisa selesai dalam sehari hanya dalam beberapa menit.
- Dalam praktiknya, itu bukan rencana yang benar-benar bisa selesai dalam sehari, tetapi solusi baru tersebut sering kali bisa diselesaikan dalam beberapa hari.
- Tujuan eksperimen pikiran ini bukan untuk menghasilkan solusi yang benar-benar siap pakai, melainkan untuk menetapkan batas bawah solusi.
Menemukan jalur
- Kuncinya adalah menemukan jalur dalam ruang masalah. Setiap jalur adalah solusi, dan peran insinyur adalah menemukan jalur terbaik.
- Layak untuk memikirkan kemiripan antara heuristik semacam ini dan berbagai algoritme pencarian jalur.
- Hal yang sama berlaku untuk heuristik engineering: menjadi insinyur yang lebih baik berarti menemukan jalur yang lebih baik dalam ruang masalah.
Ringkasan GN⁺
- Tulisan ini mengeksplorasi metodologi dan heuristik yang efisien dalam pengembangan perangkat lunak.
- Metode "mulai lagi setiap hari" dan "tulis semuanya dua kali" berguna untuk meningkatkan kualitas kode.
- Pemecahan masalah secara berulang membantu pengenalan pola dan penataan ulang neuron.
- Heuristik "senjata di kepala" berguna untuk menetapkan batas bawah solusi.
- Menemukan jalur terbaik dalam ruang masalah adalah peran inti seorang insinyur.
5 komentar
Gila? Hanya orang-orang yang punya waktu segunung yang mungkin bisa melakukan ini; apakah ini masuk akal untuk dilakukan di dunia nyata?
Di lingkungan SI Korea, ini mungkin tidak bisa ya.. hehe paling cuma untuk proyek pribadi
Pendekatan ini benar-benar cara yang sama sekali tidak pernah terpikirkan.
Sepertinya saya harus mencobanya hehe
Saya sangat setuju soal menulis ulang.
Dulu saya pernah tidak sengaja menghapus kode yang sedang saya kerjakan, lalu saat menulisnya kembali
saya jadi membuatnya dengan mempertimbangkan hal-hal yang sebelumnya saya abaikan karena malas mengubah desain di tengah jalan,
dan hasilnya justru lebih baik.
Opini Hacker News
Menulis fitur baru dua kali adalah strategi yang baik. Namun, bagi developer bisnis atau manajer proyek, ini bisa terlihat sebagai penundaan yang tidak perlu
Pertanyaan seperti "bagaimana kalau harus selesai dalam 24 jam?" adalah pertanyaan yang tidak bisa diajukan manajer proyek
Kode yang baik ditulis dengan memilih abstraksi yang tepat
Jika ada rekan kerja yang kompeten, mereka bisa menunjukkan apa yang dapat dilakukan dalam waktu singkat
Saya setuju dengan pendapat bahwa perangkat lunak sebaiknya ditulis dua kali
Jika bahkan setelah beberapa hari sebuah fitur masih belum bisa diimplementasikan, maka infrastruktur atau refactor yang dibutuhkan harus dikerjakan lebih dulu
"dalam 24 jam" dan "menulis semuanya dua kali" saling berkaitan
Postingan ini adalah salah satu "nasihat pemrograman" terbaik
Terkadang perlu menjalankan thread latar belakang untuk menyelesaikan masalah
Pendekatan berikut berguna