Mengapa pewawancara tidak meminta pelamar untuk membaca beberapa kode? [Tutup]

13

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.

Lukasz Madon
sumber
4
Saya diminta untuk membaca beberapa kode C pada sebuah wawancara sekali, dan saya menunjukkan banyak praktik buruk dalam kode: memori dialokasikan di sini dan dibebaskan di sana, dll. Itu adalah kode produksi mereka. Saya tidak mendapat tawaran.
kevin cline
1
Memilih untuk ditutup hanya karena kami tidak dapat menjawab mengapa orang lain melakukan atau tidak melakukan sesuatu. Yang kami tahu, ia dieliminasi dari proses perekrutan sebelum mereka sampai ke tahap membaca kode sumber. Jika ini diubah menjadi 'seandainya pewawancara membutuhkan ...', itu mungkin pertanyaan yang cocok.
GrandmasterB
1
Pewawancara @GrandmasterB juga muncul di situs ini. Jika mereka sengaja tidak mencari keterampilan membaca kode, mungkin ada alasan bagus untuk itu.
Izkata
Harap hindari diskusi panjang dalam komentar. Jika Anda ingin membahas kelebihan pertanyaan ini lebih lanjut, silakan buka pertanyaan di Meta tempat diskusi tersebut berada. Terima kasih.
maple_shaft
Saya ingin menambahkan bahwa saya telah diminta membaca kode sebelumnya dan menunjukkan praktik buruk dan kesalahan apa pun.
andy

Jawaban:

10

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.

Tanda
sumber
4

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.

Arseni Mourzenko
sumber
2

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.

Joel Etherton
sumber
Baca, ya, mengerti? ... belum tentu.
jmoreno
1
@ jmoreno: Mungkin tidak, tetapi mengingat betapa berharganya waktu, jika Anda meminta seorang kandidat untuk menulis sesuatu yang serupa, Anda dapat memperoleh lebih banyak pengetahuan daripada Anda dapat menonton mereka membaca sesuatu yang kompleks.
Joel Etherton
Saya tidak setuju. Setelah Anda melampaui implementasi sepele, membaca kode jauh lebih sulit daripada menulis kode, dan ada sejumlah besar pengembang yang dapat menulis kode tetapi tidak dapat membaca kode yang ada, terutama karena kode semuanya dalam bentuk imperatif. Untuk menggunakan metafora bahasa asing, pengembang sebagian besar adalah turis kaya yang perlu cukup dipahami untuk mendapatkan apa yang mereka inginkan, tetapi tidak merasa perlu memahami apa yang dikatakan di sekitar mereka.
Dan Monego
1
@DanMonego: Saya mengerti maksud Anda, dan bukan karena saya tidak setuju sama sekali, tetapi pertanyaannya adalah mengapa sebagian besar wawancara tidak memasukkan bacaan, bukan apa nilai bacaannya. Sebagian besar wawancara tidak melibatkan lebih dari implementasi sepele apakah itu membaca atau meluruskan karena sifat waktu.
Joel Etherton
1

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.

Tyanna
sumber