Dalam buku The Pragmatic Programmer , para penulis menyebutkan pemrograman dengan konsep kebetulan . Ini menjelaskan apa itu, mengapa itu disebabkan, apa bahaya yang mungkin Anda temui dan itu dibandingkan dengan ladang ranjau darat dalam perang.
Apakah Anda pernah menonton film perang hitam putih tua? Prajurit yang lelah maju dengan hati-hati keluar dari sikat. Ada pembukaan di depan: apakah ada ranjau darat, atau apakah aman untuk dilintasi? Tidak ada indikasi bahwa itu ladang ranjau — tidak ada tanda, kawat berduri, atau kawah. Tentara itu menusuk tanah di depannya dengan bayonet dan kemenangannya, mengharapkan ledakan. Tidak ada. Jadi dia berjalan dengan susah payah melalui lapangan untuk sementara waktu, mendorong dan menusuk saat dia pergi. Akhirnya, yakin bahwa lapangan itu aman, ia berdiri tegak dan maju dengan bangga, hanya untuk dihancurkan berkeping-keping.
Penyelidikan awal prajurit untuk tambang tidak mengungkapkan apa-apa, tapi ini hanya keberuntungan. Dia dibimbing ke kesimpulan yang salah — dengan hasil yang menghancurkan.
Sebagai pengembang, kami juga bekerja di ladang ranjau. Ada ratusan jebakan yang hanya menunggu untuk menangkap kita setiap hari. Mengingat kisah prajurit itu, kita harus berhati-hati dalam menarik kesimpulan yang salah. Kita harus menghindari pemrograman secara kebetulan — mengandalkan keberuntungan dan kesuksesan tak disengaja — demi pemrograman yang sengaja ...
Tetapi saya tidak benar-benar puas dengan cara mereka menggambarkan masalah "bagaimana cara mengatasinya". Ya, Anda harus berpikir dulu sebelum menulis kode, tetapi bagaimana mempraktikkannya? Satu-satunya hal yang dapat saya pikirkan adalah dengan menambahkan fitur ke proyek open source yang ada, di mana Anda harus memiliki pengetahuan tentang "apa yang saya lakukan sekarang" dan "Bagaimana cara kerja kode lain", dan itu tidak berlaku ketika Anda sedang menulis proyek Anda sendiri.
EDIT:
ringkasan dari posting Anda:
- Jangan menebak langkah Anda selanjutnya, buktikan itu benar
- Unit test dan refactor sebanyak mungkin, bila perlu
- Tambahkan fitur – compile – test sesering mungkin
- Jika Anda tidak dapat menjelaskan kode ke noob, Anda mungkin memprogram secara kebetulan.
BTW, sulit menerima jawaban, sangat sulit. Semua jawaban sangat bagus :)