Dari pengalaman saya di perusahaan tempat saya melakukan banyak wawancara, ada peluang bagus bahwa orang yang diwawancarai tidak memiliki petunjuk tentang cara melakukannya dengan benar. Jadi mereka menyiapkan serangkaian pertanyaan teknis dan menghitung skor itu dan menjadikannya sebagai resume Anda. Namun ini memiliki banyak kelemahan dan tidak boleh dilakukan karena alasan berikut:
Anda meminta pengetahuan titik. Jika programmer tidak pernah melakukan sesuatu di bidang itu, dia mungkin masih merupakan rekan kerja yang sangat baik, tetapi tidak tahu jawaban tertentu. Sebaliknya: jika seseorang telah siap untuk wawancara dan menemukan jawaban untuk pertanyaan tertentu di internet, Anda mendapatkan jawaban yang benar, tetapi orang itu mungkin tidak memiliki petunjuk tentang topik yang sebenarnya sama sekali.
Orang-orang gugup dalam wawancara kerja. Otak memiliki fitur hebat ini untuk mematikan banyak area tingkat tinggi (seperti logika) jika panik, yang berarti: jika Anda gugup, Anda mungkin tidak memberikan kualitas jawaban yang Anda akan lakukan dalam situasi sehari-hari. Beberapa orang dapat menghadapi situasi yang penuh tekanan seperti wawancara, banyak yang tidak bisa.
Dengan satu jawaban yang benar, Anda menguji keterampilan orang itu untuk menemukan jawaban tertentu. Ini adalah salah satu dari sekian banyak keterampilan yang dibutuhkan rekan kerja, tetapi bukan keterampilan yang hanya diperlukan. Oleh karena itu satu atau dua dari pertanyaan-pertanyaan itu harus cukup untuk menguji bidang pengetahuan itu, dan kemudian keterampilan lain harus ditanyakan. Wawancara yang hanya berisi pertanyaan pemecahan masalah menguji keterampilan yang sama berulang kali.
Apa pertanyaan tugas pemrograman yang baik?
Pertanyaan-pertanyaan terkenal "Bisakah Anda menulis program pendek" memiliki masalah besar yang kebanyakan programmer tidak dapat menulis satu baris kode tanpa IDE mereka membantu mereka. Tapi itu dalam situasi kerja sehari-hari tidak ada masalah sama sekali, karena programmer selalu memiliki IDE-nya yang membantunya. Jadi, menanyakan hal-hal seperti "Temukan kesalahannya", "Tuliskan 50 baris kode yang melakukan ..." atau bahkan pertanyaan sederhana perlu dipertimbangkan, bahwa pelamar tidak memiliki alatnya (IDE, Google) tersedia.
Saya misalnya dapat menjawab Anda pada dasarnya setiap pertanyaan dalam 1 menit jika saya memiliki Google membantu saya, tetapi tanpa koneksi internet saya tampaknya tidak berdaya. Saya menyebutnya memori outsourcing, dan alih-alih merintangi saya, itu sangat membantu saya untuk fokus pada apa yang benar-benar penting - memahami mekanika yang mendasari - karena segala sesuatu yang lain dapat dilihat. Tetapi jangan tanya saya tentang detail dari sembarang API, karena saya tidak tahu itu, saya punya Google untuk itu.
Yang mengatakan, pertanyaan tugas pemrograman yang baik tidak boleh fokus pada mengetahui API, atau keterampilan pengkodean khusus kecuali jika ini merupakan persyaratan mutlak untuk pekerjaan itu. Pengetahuan bisa diperoleh, jadi lebih baik untuk mengetahui seberapa baik orang itu dalam memperoleh pengetahuan daripada bertanya apa yang sudah dia ketahui.
Pertanyaan yang bagus untuk tugas pemrograman harus pendek, sederhana, dapat dikodekan dalam setiap bahasa hanya dengan beberapa baris kode dan - terutama - harus memberi tahu Anda sebanyak mungkin tentang bagaimana orang tersebut bekerja dan menemukan jawaban. Contoh:
"Tulis fungsi dalam bahasa pilihan Anda yang mengambil array bilangan bulat dan memesan ulang dengan cara yang bilangan bulat pertama adalah setelah yang terakhir, dan semua yang lain bergeser sesuai."
Pelamar pertama yang harus ditanyakan pada saat ini adalah: "Maaf ... bisakah Anda menjelaskan tugasnya?". Karena tidak ada programmer yang diberikan deskripsi yang jelas tentang apa yang harus dilakukan. Ini diikuti oleh penjelasan, bahwa kode dalam pertanyaan harus melakukan pergeseran kiri dari isi array dengan overflow yang ditambahkan ke kanan.
Tugas ini sangat sederhana, bahwa siapa pun yang lulus segala bentuk level pemrograman harus dapat menjawab dengan benar. Ini memperhitungkan bahwa programmer harus bekerja tanpa alat-alatnya dan menjadi gugup mengurangi kemampuan untuk berpikir secara logis. Namun itu masih memberi tahu Anda bagaimana orang memecahkan masalah hanya dari cara pertanyaan itu diucapkan dan dari cara orang mendekatinya, hanya karena pergeseran kiri bertentangan dengan naluri umum 'kiri-ke-kanan' dan memaksa orang untuk berpikir untuk Sebentar.
Ada banyak kemungkinan jawaban untuk pertanyaan ini, jadi mencermati cara kode dikembangkan adalah bagian yang penting, bukan jika solusi tersebut benar-benar berfungsi. Apakah tes pelamar batal? Bagaimana cara overflow disimpan? Apakah loop atau mem-set digunakan? Bagaimana pemohon memverifikasi kebenaran kode? Satu pertanyaan sederhana ini memberi tahu Anda seluruh biografi tentang bagaimana orang itu bekerja.
Apa pertanyaan pengetahuan umum yang bagus?
Pertanyaan yang baik mudah dijawab, memungkinkan sejumlah besar jawaban (disebut 'pertanyaan terbuka') dan memungkinkan Anda untuk belajar sebanyak mungkin tentang pelamar sebanyak yang Anda bisa dalam waktu singkat yang Anda miliki.
Contoh:
(Meminta programmer C ++): "Bahasa lain apa selain C ++ yang Anda ketahui?"
Ini adalah pertanyaan tingkat pemula, yang memberikan pemohon kesempatan yang adil untuk memberikan jaminan pada saat ini jika dia tidak tahu apa-apa tentang topik yang ditanyakan. 'Tidak' pada saat ini lebih baik daripada menyiksanya dengan beberapa pertanyaan lagi yang harus dijawab oleh semua orang: "Maaf, saya tidak tahu apa-apa tentang itu."
Saya juga akan memberi tahu Anda terlebih dahulu tentang semua bahasa lain yang dikenal orang, lebih jauh lagi Anda belajar betapa tertariknya orang itu untuk mendapatkan pandangan yang lebih luas tentang dunia pemrograman, atau jika Anda memiliki seseorang dengan hanya satu bahasa tunggal (dan karenanya fitur / teknik ) lihat.
(Selanjutnya setelah itu, katakanlah dia tahu Java): Apa tiga perbedaan teratas antara C ++ dan Java dalam pendapat Anda? "
Ini adalah pertanyaan terbuka yang memungkinkan banyak jawaban, sehingga pelamar memiliki peluang bagus untuk menemukan setidaknya tiga jawaban. Meminta tiga pendapat (pribadi) tidak hanya membatasi jawaban yang mungkin, tetapi juga memaksa pemohon untuk mengurutkan berdasarkan prioritas. Tetap saja (atau seharusnya) mudah dijawab.
Ini adalah pertanyaan sederhana yang menguji banyak pengetahuan mendalam tentang berbagai bahasa pemrograman. Seberapa dalam pengetahuan tentang topik-topik itu? Dari jawaban-jawaban itu Anda dapat menceritakan banyak hal tentang pengetahuan dan pemahaman aktual tentang mekanisme dasar bahasa pemrograman. Berapa banyak orang yang dihabiskan dengan rincian kotor, atau jika dia hanya seseorang yang menautkan berbagai fungsi API tanpa petunjuk nyata apa yang terjadi di bawahnya.
Konsep pertanyaan tingkat awal yang diikuti oleh pertanyaan pengetahuan mendalam yang sederhana dapat digunakan untuk sebagian besar topik lainnya juga. Selalu dalam skema ini: pertanyaan bail-out, pertanyaan verifikasi, pertanyaan mendalam. Contoh lain (dari wawancara Jawa):
- "Bagaimana Anda menilai pengalaman Anda dengan pengembangan multi-utas?"
- "Sebutkan apa yang menurut Anda tiga hal paling penting untuk dipertimbangkan saat mengembangkan aplikasi multi-utas."
- "Silakan sebutkan tiga kelas dari Java API yang dapat membantu Anda mengembangkan aplikasi-aplikasi itu dan memberikan deskripsi singkat untuk apa mereka digunakan."
Tiga pertanyaan ini akan memberi tahu Anda lebih dari pertanyaan teknis apa yang benar-benar diketahui oleh pelamar tentang topik-topik itu, sementara adil untuk menjawab dengan mempertimbangkan tingkat pengetahuan dan tingkat stres.
Jadi pada saat seseorang bertanya kepada Anda 20 pertanyaan coding berturut-turut, Anda tahu bahwa dia pada dasarnya tidak tahu bagaimana cara mewawancarai seseorang dengan benar. ;)