Saya memiliki selusin wawancara dalam hidup saya (saya akan lulus) dan saya bertanya-tanya mengapa saya hanya sekali diminta untuk membaca dan menjelaskan beberapa kode. Secara kasar, 90% pekerjaan kebanyakan tentang memelihara sistem yang ada. Kemampuan IMO untuk membaca kode orang lain adalah keterampilan yang penting.
Mengapa pewawancara tidak memeriksanya? *
* Di antara teman saya, saya satu-satunya yang diminta meninjau beberapa kode.
interview
code-reviews
Lukasz Madon
sumber
sumber
Jawaban:
Ketika saya mengajukan pertanyaan wawancara pada awalnya saya melakukannya tetapi perlahan-lahan menghapusnya. Pelamar yang bisa menulis kode dengan baik dalam wawancara semua bisa membaca kode dengan baik dalam wawancara. Pelamar yang tidak bisa membaca kode juga tidak bisa menulisnya. Pertanyaan-pertanyaan yang terlibat dalam membaca kode tidak benar-benar membedakan pelamar.
sumber
Versi pendek
Jika pekerjaan terdiri dari memelihara aplikasi, keterampilan yang perlu Anda uji selama wawancara adalah:
Kemampuan untuk memahami basis kode besar dengan dokumentasinya, tes unit , dll.
Kemampuan untuk refactor kode dan membawa perubahan tanpa melanggar semuanya.
Meminta orang membaca kode tidak akan membantu Anda mengevaluasi kemampuan itu.
Versi panjang
Apakah Anda diminta menulis kode? Jika ya, seperti yang dicatat Sign dalam jawabannya , ini sudah cukup. Jika kita menggeneralisasi sedikit, orang yang menulis kode sumber yang jelas dan mudah dipahami akan dapat membaca kode sumber yang ditulis oleh orang lain.
Jika Anda tidak diminta untuk menulis kode, maka, Anda mungkin diwawancarai oleh seseorang dari departemen sumber daya manusia. Wawancara semacam itu tidak bisa terlalu teknis, dan sebagian besar tidak berharga, karena wawancara itu tidak mengasah keterampilan dan kemampuan Anda untuk bekerja dengan baik, melainkan jumlah tahun yang Anda habiskan di perguruan tinggi dan hal-hal lain yang tidak ada hubungannya dengan pekerjaan itu.
Ada beberapa alasan lagi untuk tidak meminta membaca kode untuk pekerjaan pemeliharaan:
1. Sulit dilakukan dengan andal
Konkretnya, apa yang akan Anda lakukan jika Anda seorang pewawancara? Buat kandidat Anda membaca beberapa kode. Kode apa? Dalam bahasa apa? Seberapa baik atau buruk ditulis? Dengan atau tanpa komentar? Dengan atau tanpa dokumentasi?
Lebih penting lagi, apa yang diceritakannya tentang kandidat? Seberapa baik berkorelasi dengan basis kode itu sendiri?
Katakanlah Anda memiliki aplikasi VB.NET lama untuk dipelihara. Anda tahu bahwa kode sumber sebagian besar jelek dan belum teruji, dan beberapa komentar sudah kedaluwarsa atau menyesatkan. Selama tiga bulan terakhir, Anda memiliki pengembang yang sangat terampil mengerjakan solusi; dia refactored dan unit menguji bagian-bagian paling penting dari aplikasi, menambahkan komentar di mana ada kebutuhan untuk komentar, dan, yang paling penting, menulis dokumentasi terperinci tentang arsitektur keseluruhan, bagian-bagian penting dan perangkap.
Anda sekarang merekrut seorang pengembang untuk mempertahankan basis kode ini. Selama wawancara, apakah Anda akan memberikan kode warisan (jelek yang belum teruji), atau potongan kode yang dire-refored oleh pengembang sebelumnya?
Apakah Anda akan memberikan dokumentasi? Untuk membaca dokumentasi, kandidat harus menghabiskan setidaknya beberapa jam. Ini membuatnya tidak mungkin dilakukan selama wawancara.
2. Membaca potongan kode pendek tidak sama dengan membaca kode proyek yang sudah dikenal
Ingat, tugasnya adalah mempertahankan proyek. Sulit untuk mempertahankan basis kode besar pada hari - hari atau minggu-minggu pertama ketika Anda tidak terbiasa dengan proyek. Jauh lebih mudah untuk melakukannya setelah beberapa bulan ketika Anda telah menulis semua dokumentasi dan memiliki pandangan yang jelas tentang basis kode keseluruhan.
Hal yang paling penting untuk diuji adalah apakah orang itu akan efisien bulan-bulan itu . Anda tidak peduli jika orang itu tidak akan dapat memahami apa pun dalam dua hari pertama.
Dengan meminta seseorang untuk membaca sepotong kode pendek dari awal, Anda tidak menguji bagaimana orang ini dapat menangani kode LR yang telah didokumentasikan dan didokumentasikan oleh ribuan orang .
3. Mempertahankan kode sumber tidak hanya membacanya
Saat Anda mempertahankan basis kode, Anda memodifikasinya . Pengembang yang baru saja membaca kode tidak membawa apa pun yang bermanfaat bagi perusahaannya.
Keterampilan yang berguna adalah kemampuan untuk memperbaiki kode , untuk menambahkan tes unit , untuk memprediksi dampak perubahan , dll. Anda tidak menguji keterampilan itu dengan meminta seseorang untuk membaca kode selama wawancara.
sumber
Membaca adalah asumsi berdasarkan pada kenyataan bahwa kemampuan hadir untuk menulis. Pertimbangkan konsep dalam bahasa apa pun. Pemrograman hanyalah bahasa untuk berkomunikasi antara manusia dan mesin. Pertimbangkan komunikasi antar manusia. Jika Anda mempekerjakan seseorang untuk menjadi juru bahasa Jepang, bukankah akan masuk akal jika mereka dapat menulis esai 1.000 kata tentang topik tertentu sehingga mereka dapat membacanya?
Sebagai programmer, kegiatan utama kami adalah menciptakan kode dan menerjemahkan ide-ide abstrak ke dalam implementasi konkret. Ini umumnya berarti menulis. Saya setuju bahwa membaca sama pentingnya, tetapi dalam sebagian besar kasus, di mana kemampuan menulis hadir, kemampuan membaca juga hadir. Satu-satunya kasus nyata di mana saya bisa melihat perbedaan yang dapat dibedakan adalah di lingkungan di mana ada banyak kasus yang sangat kompleks yang telah berkembang seiring waktu. Meskipun diberi ini, Anda tidak akan mengharapkan seseorang untuk dapat membacanya dan memahaminya tanpa setidaknya beberapa pembelajaran.
Juga, membaca kode dan menjelaskan apa yang menurut Anda tidak benar-benar mengungkapkan kepada pewawancara bagaimana Anda menggunakan keterampilan berpikir kritis Anda. Ini menunjukkan sedikit analisis, tetapi sebagian besar pengusaha ingin melihat apakah Anda dapat berpikir tanpa dimasukkan ke dalam kotak. Mereka ingin tahu apakah Anda dapat memahami konsep tanpa manfaat (atau bahkan kruk) dari kode yang ada untuk memberi tahu Anda apa atau bagaimana melakukan sesuatu.
sumber
Di masa lalu saya terbiasa berpikir bahwa membaca kode harus menjadi sesuatu yang ditunjukkan dalam wawancara, tetapi seiring waktu saya menyadari bahwa ini adalah buang-buang waktu baik untuk pewawancara dan orang yang diwawancarai. Mengapa? Karena bahkan coders yang buruk dapat membaca potongan kode.
Mampu menilai kemampuan seseorang untuk membaca kode hanya menjadi relevan ketika Anda melihat sesuatu yang kompleks atau kode yang mencakup banyak kelas dan file. Mampu melacak kode untuk mengetahui apa yang dilakukannya adalah sifat yang diinginkan, tetapi tidak ada cukup waktu bagi seseorang untuk memberikan contoh yang baik (bukan kode produksi) dan juga tidak ada waktu dalam wawancara untuk mengajukan pertanyaan seperti itu. .
Jadi, coders yang buruk dapat membaca kode, tetapi mereka tidak dapat menulis kode dengan baik. Meminta untuk melihat contoh-contoh dari seorang kandidat berfungsi atau meminta seorang kandidat untuk menulis kode dalam wawancara adalah indikator keterampilan mereka yang jauh lebih baik. Jika mereka dapat menulis kode singkat yang bersih, kemungkinan mereka dapat membaca kode dengan baik.
Saya meminta setiap kandidat yang saya wawancarai variasi masalah FizzBuzz . Ini cepat, sederhana dan biasanya dapat memilih coders buruk jauh lebih cepat daripada apa pun yang saya temukan. Seorang programmer yang baik akan mendapatkannya dengan sangat cepat dan mudah dan itu akan memberi Anda pandangan cepat ke gaya pengkodean dan proses pemikiran mereka.
sumber