Teknik apa yang Anda gunakan saat mewawancarai pengembang? [Tutup]

28

Saya menyadari telah ada banyak diskusi tentang hal semacam ini dan mereka sering berpindah ke dogma seputar apakah Anda menanyakan jenis pertanyaan "100 bajak laut logis" atau apakah Anda meminta mereka untuk menulis "desis desis".

Saya tertarik pada teknik dan pertanyaan apa yang efektif bagi Anda ketika mewawancarai pengembang potensial untuk pekerjaan.

Satu teknik per jawaban sehingga kami dapat memberikan suara untuk mereka.

Paddyslacker
sumber

Jawaban:

21

Selain pertanyaan teknis nyata, dan biasanya pada akhir wawancara saya mencoba untuk memahami tingkat minat mereka dalam industri dan budaya dengan pertanyaan seperti:

  • Pernahkah Anda melihat sesuatu yang berhubungan dengan pemrograman baru-baru ini yang menurut Anda menarik dan ingin merekomendasikan kepada sesama programmer? Bahasa baru, alat, platform, teknik, situs web?

  • Bisakah Anda menyebutkan nama orang terkenal di industri kami yang pekerjaannya Anda sukai atau menginspirasi dan mengapa? (pengembang, pendiri situs web, penulis, pembicara, dll)

  • Apa yang Anda baca sekarang atau apa buku terkait perangkat lunak terakhir yang Anda baca?

  • Apa situs pemrograman terkait yang sering Anda kunjungi?

Meskipun gagal menjawab pertanyaan-pertanyaan ini sama sekali (sayangnya hal itu sering terjadi) tidak berarti 'tidak ada mempekerjakan' bagi saya, mereka mengatakan banyak tentang cara seseorang mendekati profesi pengembangan perangkat lunak.

Sergio Acosta
sumber
4
Saya mungkin akan mengatakan bahwa ini adalah hal yang paling penting untuk diukur dalam setiap wawancara perangkat lunak. Anda bisa berargumen bahwa menulis kode lebih penting, tetapi orang-orang yang meliput sesuatu yang serupa baru-baru ini atau di universitas dapat menebaknya, sedangkan sangat sulit untuk memalsukan minat nyata dan tulus.
Mike B
5
Saya tidak terkejut bahwa ini adalah jawaban populer di situs web ini. Penonton di sini adalah definisi yang menghargai "budaya programmer". (Saya setuju dengan jawabannya, tetapi telah bertemu dengan beberapa programmer yang luar biasa yang akan gagal dalam ujian ini, terutama yang ada di lebih dari 40 kerumunan)
AShelly
2
@ Ashelly: Ya, saya setuju. Itu sebabnya saya tidak menganggap pertanyaan ini penting untuk menolak atau menerima seorang programmer. Ini hanyalah teknik lain yang dapat Anda gunakan saat wawancara.
Sergio Acosta
16

Buat mereka menulis kode, kode asli.

Pewawancara dapat membiarkan Anda memilih bahasa pemrograman yang paling Anda sukai, baik itu C ++, Java, C # atau apa pun dan meminta Anda untuk memecahkan masalah sederhana, misalnya melakukan beberapa pekerjaan dengan string atau daftar yang ditautkan ganda atau apa pun. Jika Anda mengalami kesulitan dalam menggunakan bahasa terbaik Anda memecahkan masalah sederhana maka ada masalah. Silakan lihat posting blog Steve Yegge dan terutama bagian "Persiapan Mental".

grokus
sumber
6
Ya, tapi tidak terlalu banyak.
Damovisa
Menulis kode nyata akan membantu Anda masuk ke pintu perusahaan perangkat lunak elit (Google, Amazon, Microsoft, ...) dan merasa bebas untuk memilih yang lain.
grokus
3
Tolong uraikan jawaban Anda. Apa yang Anda maksud dengan kode "nyata"? Kode apa yang tidak "asli"?
MAK
+1 @MAK: Setuju, apa kode sebenarnya? Jika itu kode yang akan Anda gunakan dalam perangkat lunak produksi Anda ...
Steven Evers
1
Saya akan mempertimbangkan 'kode nyata' seperti meminta orang yang diwawancarai untuk menulis fungsi 'strdup ()'. Ini memiliki penggunaan nyata dan memperlihatkan pengalaman dan sikap mereka terhadap hal-hal seperti manajemen memori dan penanganan kesalahan.
JBRWilkinson
11

Mintalah beberapa orang dari tim Anda mewawancarai mereka secara independen. Bagikan pemikiran Anda setelah itu, jangan bicara di antaranya sebelum mewawancarai mereka. Berbicara di antara keduanya akan mempengaruhi penilaian Anda dan Anda tidak akan memiliki penilaian independen.

Untuk orang-orang teknis yang mewawancarai mereka membuat mereka menulis kode. Untuk yang tidak teknis, jangan mencoba menanyakan hal-hal yang tidak Anda alami. Pastikan Anda memiliki setidaknya beberapa orang teknis yang melakukan wawancara.

Wawancara tidak boleh dilakukan hanya oleh manajer, itu harus sangat penting bagi setiap pekerja yang akan bekerja dengan mereka di masa depan.

Brian R. Bondy
sumber
2
+1 untuk "wawancara tidak boleh dilakukan hanya oleh manajer". Jika karyawan baru tidak dapat memotong kode serta kolega mereka, akan ada keresahan di antara tim.
JBRWilkinson
7

Saya suka orang yang diwawancarai menjelaskan proyek mereka sebelumnya dan apa yang mereka lakukan. Dari jawaban ini saya dapat memiliki pertanyaan lanjutan: mengapa mereka melakukan sesuatu dengan cara tertentu, bagaimana mereka memecahkan masalah tertentu jika mereka menyebutkan satu, tetapi yang paling penting apa tujuan proyek dan masalah bisnis apa yang dipecahkan.

Saya melakukan ini untuk melihat apakah mereka dapat mengartikulasikan dengan cara yang membuat saya mengerti apa yang mereka lakukan, dan melihat apakah mereka mengerti apa yang mereka lakukan juga.

Sangat mengejutkan bahwa pertanyaan terakhir tentang tujuan proyek dan masalah bisnis diselesaikan yang membuat banyak orang tersandung. Mereka tidak tahu MENGAPA proyek yang sedang mereka kerjakan sedang dilakukan. Jika Anda tidak tahu mengapa proyek Anda ada di tempat pertama, itu membuat saya bertanya-tanya apakah Anda berkontribusi solusi, atau hanya melakukan apa yang diperintahkan.

(Berpikir saya melempar yang ini ke sana, karena semua jawaban lain cenderung bersifat teknis. Saya ingin orang yang tahu mengapa mereka memecahkan masalah yang mereka selesaikan juga, jika tidak, mereka cenderung untuk memecahkan masalah yang salah yang tidak dilakukan oleh pengguna akhir. ' tidak peduli :)

Jay
sumber
6

Mintalah pendapat mereka tentang keputusan arsitektur yang penting

Sebagai contoh. Ini adalah program x yang menjalankan sejumlah subtugas bersamaan. Yang mana yang Anda pilih, struktur multi-proses atau threading.

Apa manfaat / kerugian keduanya. Seberapa baik mereka akan bekerja dan bagaimana mereka dapat digunakan untuk meningkatkan platform multi-core, multi-prosesor, apa preferensi pribadi Anda? Bias pribadi dapat membantu mengidentifikasi apakah mereka pernah benar-benar menerapkan pengetahuan dan memberi mereka titik lompatan untuk berbagi pengalaman mereka?

Ada banyak pertanyaan yang dapat diajukan oleh pewawancara seperti ini:

  • TCP atau UDP?
  • Bahasa dinamis atau diketik secara statis?
  • Aplikasi monolitik atau beberapa aplikasi yang lebih kecil?
  • Apa yang akan Anda gunakan untuk Komunikasi Antarproses?
  • Prosedur Tersimpan atau ORM?

Sebagian besar dari topik ini adalah tipe yang melibatkan pengetahuan mendalam tentang bagaimana / mengapa sistem komputer bekerja seperti itu. Mereka semua adalah masalah / solusi untuk masalah yang tidak memiliki jawaban pasti sehingga mereka memberikan rasa seberapa baik orang itu mampu beradaptasi atau mengatasi tantangan yang dihadapi. Bukan tipe konsep yang dapat dengan mudah diambil tanpa pengalaman nyata.

Catatan: Membuat pemohon menulis beberapa kode pesudo adalah suatu keharusan juga tetapi jawaban itu sudah diambil.

Evan Plaice
sumber
Satu peringatan yang saya tambahkan ke ini adalah untuk memastikan pertanyaannya tidak spesifik domain untuk perusahaan yang melakukan wawancara.
JBRWilkinson
1

Berikan mereka beberapa kode dasar untuk dilakukan di papan tulis - misalnya implementasi daftar tertaut, pengurutan atau sesuatu yang serupa.

Anda dapat menilai seberapa nyaman mereka dengan bahasa mereka tanpa bantuan kompiler dan Anda dapat menilai proses pemikiran mereka (terutama jika mereka tidak pernah menerapkan hal seperti itu - sebagian besar programmer "baru" tidak pernah melakukannya).

Josip Medved
sumber
8
Saya tidak setuju. Daftar tertaut dan pengurutan keduanya merupakan masalah kalengan yang cukup terkenal untuk masalah umum. Siapa pun yang telah menulis, ia tahu cara kerjanya, tetapi kebanyakan orang tidak mau repot-repot menulis sendiri karena sebagian besar bahasa sudah melakukan pekerjaannya dengan baik.
Evan Plaice
Saya setuju dengan Evan. Dalam praktiknya, seringkali cukup untuk menyadari kinerja berbagai algoritma pengurutan / pencarian dan struktur data dasar. Mengetahui cara menerapkannya rapi, tetapi pada akhirnya tidak berguna. Juga, di sebagian besar pekerjaan pemrograman, lebih penting untuk mengetahui cara memilih kerangka kerja / pustaka yang tepat untuk tugas tersebut daripada cara mengimplementasikan QuickSort di bawah tiga baris.
Alan Plum
0

Bicara, biarkan melayang dan berliku-liku di sepanjang rute teknis dan profesional dan mencari komentar berwawasan atau bodoh di sepanjang jalan. Ini memberi Anda 3/4 dari apa yang Anda butuhkan dari wawancara, penilaian atas: keterampilan dan kepribadian orang, kecerdasan umum, dan penilaian kasar keterampilan teknis.

Gunakan "pertanyaan" wawancara Anda sebagai permulaan topik dan untuk menjaga percakapan tetap terkendali dengan topik teknis - Anda mungkin perlu mengatur ulang percakapan dari waktu ke waktu (seperti melakukan latihan pengkodean) untuk menyelidiki secara memadai bidang yang menjadi perhatian / minat.

Trik sebenarnya untuk teknik ini adalah memastikan mereka melakukan semua pembicaraan, jika tidak, Anda berisiko melakukan evaluasi yang menguntungkan karena mereka membuat Anda merasa pintar dengan mendengarkan / menyetujui semua yang Anda katakan.

Mark Brackett
sumber