Baru-baru ini saya melakukan wawancara kerja di mana mereka memberi saya waktu satu jam untuk menulis beberapa kode nyata. Itu bukan jumlah yang besar, mungkin kurang dari 100 baris. Setelah sekitar 45 menit, saya menyusun, menjalankannya, dan mulai bekerja. Saya mungkin telah menghabiskan 5-10 menit mengerjakan kesalahan kompilasi dan beberapa bug kecil, tetapi secara keseluruhan sangat lancar. (Kebetulan, aku memang mendapat tawaran dari mereka.)
Namun, yang membingungkan saya adalah bahwa setelah saya menyerahkan kode yang lengkap, pewawancara mengatakan kepada saya bahwa satu-satunya hal yang saya lakukan salah adalah "tidak mengkompilasi saat saya melanjutkan". Saya bertanya kepadanya apa bedanya, dan dia berkata, "apa yang akan Anda lakukan jika Anda menyelesaikan kode dan tidak dapat dikompilasi tepat waktu".
Dalam pemahaman saya itu argumen yang tidak valid, karena "mendapatkan kode untuk dikompilasi" untuk panjang kode tertentu umumnya melibatkan memperbaiki jumlah kesalahan kompilasi yang konstan dan membutuhkan waktu yang cukup konstan, yang harus sama apakah Anda melakukannya setelah Anda selesai menulis kode, atau jika Anda interleave dengan waktu pengkodean Anda. Jika ada, menginterupsi kode Anda untuk mencari titik koma yang hilang mungkin akan merugikan efisiensi Anda. Kecuali dalam keadaan ekstrim ketika saya bereksperimen dengan ketidakjelasan di sekitar kasus tepi pada hal-hal seperti fungsi virtual di kelas turunan, dll. Tampaknya masuk akal untuk mengharapkan bahwa kode yang ditulis oleh pengembang yang berpengalaman akan dikompilasi, dikurangi kesalahan pengetikan sesekali, dan bahkan jika tidak, itu
Dalam kejadian serupa lainnya, saya diberi basis kode tidak lengkap dalam sebuah wawancara, dan diminta untuk menyelesaikannya dan membuat modifikasi yang diperlukan untuk membuatnya berjalan. Saya mulai dengan membaca kode yang ada, dan kemudian setelah beberapa menit (bahkan sebelum saya selesai melihat kode), pewawancara mengatakan itu sudah cukup. Ketika saya bertanya kepadanya apa yang akan dia lakukan (yaitu "apa yang saya lakukan salah"), dia mengatakan kepada saya bahwa dia akan mulai dengan segera mendapatkan kode untuk dikompilasi.
Mengapa itu bahkan relevan? Menurut pendapat saya dan pengalaman saya, apakah kompilasi kode atau tidak pada dasarnya acak, melibatkan hal-hal seperti apakah titik koma hilang atau tidak, dan tidak ada hubungannya dengan kebenaran dari program yang mendasarinya. (Bagi saya, fokus pada kompilasi adalah seperti menjalankan artikel melalui pemeriksa ejaan tanpa proofreading untuk memeriksa tata bahasa.)
Jika Anda memberi saya sepotong kode tidak lengkap, hal pertama yang saya lakukan adalah membacanya. Saya bahkan tidak akan mencoba untuk mengkompilasinya sampai saya tahu apa yang dilakukan kode dan saya tahu algoritma itu benar.
Bagaimanapun, ini hanya beberapa insiden baru-baru ini, tetapi secara umum saya telah mendengar banyak pengembang berbicara tentang mengkompilasi kode mereka, tetapi belum ada yang bisa memberi tahu saya manfaat dari melakukannya. Saya mengerti manfaat menguji kode Anda saat Anda mulai, tetapi mengapa mengkompilasi?
Jadi pertanyaan saya adalah ini: Apakah ada sesuatu yang saya lewatkan? Apakah sebenarnya ada manfaat untuk kompilasi saat Anda melanjutkan? Atau apakah ini semacam mitos yang disebarkan oleh komunitas perangkat lunak bahwa Anda harus sering mengkompilasi kode Anda?