Apa cara terbaik untuk mengevaluasi kandidat terbaik untuk mendapatkan pekerjaan baru (berbicara hanya dalam hal keterampilan pemrograman)? Di perusahaan saya, kami memiliki banyak pengalaman buruk dengan orang-orang yang memiliki nilai bagus tetapi tidak memiliki keterampilan pemrograman yang nyata. Keahlian mereka hanyalah seperti monyet kode, tanpa kemampuan untuk menganalisis masalah dan menemukan solusi.
Lebih banyak hal yang harus saya perhatikan:
Sistem pendidikan di negara saya menyebalkan - sangat menyebalkan. Orang-orang yang pandai dalam pekerjaan semacam ini baik karena mereka memiliki bakat untuk itu atau benar-benar mencoba untuk belajar sendiri.
Tingkat universitas / pascasarjana / pascasarjana tidak berarti bahwa Anda tahu persis bagaimana melakukan hal-hal tersebut.
Sertifikasi juga tidak ada artinya di sini karena orang yang bertanggung jawab atas kursus sertifikasi juga tidak memiliki keterampilan (atau memiliki pekerjaan dengan upah rendah).
Kami benar-benar perlu mendapatkan kandidat yang baik yang fleksibel dan tidak memiliki pemikiran mekanis (karena orang-orang seperti ini memiliki kinerja yang rendah).
Kami berada di lembaga pemerintah dan orang-orang yang menjadi kandidat tidak harus datang dari luar, tetapi kami memiliki kemungkinan untuk menerima atau tidak menjadi kandidat sampai kami menemukan yang benar.
Saya harap saya tidak terdengar terlalu agresif dalam pertanyaan saya; dan BTW saya sendiri seorang programmer.
sunting: Saya tahu yang menanyakan sesuatu yang sangat rumit di sini. Saya akan membatalkan "jawaban yang benar" hanya untuk membiarkan diskusi berjalan lancar, tanpa bias apa pun.
Jawaban:
Mengenai pemilihan kandidat, saya biasanya pergi dengan rencana tiga pukulan:
Tes reguler dengan pertanyaan pengkodean seperti FizzBuzz dan banyak pertanyaan pengetahuan di mana mereka harus memberikan contoh kode. Bergantung pada posisi, itu bisa berupa prinsip OO, prinsip desain SQL, dll. Saya menambah kesulitan pertanyaan di tes untuk melihat sejauh mana mereka bisa melangkah. Idenya adalah tidak benar-benar memiliki semua pertanyaan dijawab (jika mereka melakukannya, semakin baik), tetapi juga untuk melihat apakah mereka dapat mengakui ketika mereka tidak tahu sesuatu. Kepercayaan itu penting, dan saya tidak ingin ada orang yang membohongi saya di tim saya.
Kembali pada tes dengan kandidat, dan diskusikan jawaban. Kemungkinan perpanjangan pertanyaan untuk mencapai batas kandidat. Ini bisa luas, dan semakin luas, semakin baik.
Bagian terakhir tetapi tidak sedikit, Ulasan Kode . Saya meminta kandidat untuk membawa sepotong kode (saya biasanya memberi ruang pada tes / diskusi sebelumnya dan ulasan ini beberapa hari, untuk membiarkan mereka menulis dan memoles sepotong kode). Kemudian kami melakukan tinjauan kode secara teratur dengan dua orang: satu orang yang akan langsung bekerja dengan kandidat dan orang yang meninjau tes dengan kandidat sebelumnya. Mengenai ulasan kode Anda dapat membaca artikel ini dari JohnFX .
Di akhir semua ini, Anda harus dapat memutuskan apakah Anda ingin kandidat ini menjadi bagian dari tim Anda atau tidak.
sumber
Mulailah dengan memberi mereka FizzBuzz untuk dipecahkan. Itu harus menyingkirkan yang terburuk dari mereka.
Kemudian sesuatu yang sedikit lebih sulit - misalnya, cara membalikkan string tanpa built in fungsi perpustakaan. Minta mereka untuk berbicara sambil menyelesaikan untuk melihat apa proses pemikiran mereka.
Anda dapat terus memberikan masalah yang lebih sulit jika mereka menemukan ini sangat mudah, sampai Anda yakin mereka dapat berjalan dan tidak hanya berbicara.
sumber
Hanya mencari hasrat tentang pekerjaan itu.
Mengutip Joel, cari orang yang " Cerdas, dan selesaikan semuanya. "
Sisanya tidak masalah
sumber
Berdasarkan pada 25 tahun pemrograman saya (yang, diakui hanya mencakup 5 atau 6 contoh mempekerjakan programmer lain):
Indikator positif:
Bergairah tentang teknologi
Program sebagai hobi
Akan membicarakan masalah teknis Anda jika didorong
Proyek sampingan pribadi yang signifikan (dan seringkali banyak) selama bertahun-tahun
Pelajari teknologi baru sendiri
Diakui tentang teknologi mana yang lebih baik untuk berbagai penggunaan
Sangat tidak nyaman dengan ide bekerja dengan teknologi yang dia yakini tidak "benar"
Jelas pintar, dapat melakukan percakapan hebat tentang berbagai topik
Memulai pemrograman jauh sebelum universitas / pekerjaan
Memiliki beberapa "gunung es" tersembunyi, proyek pribadi besar di bawah radar CV
Pengetahuan tentang berbagai macam teknologi yang tidak terkait (mungkin tidak ada di CV)
Indikator negatif:
Pemrograman adalah pekerjaan harian
Tidak benar-benar ingin "berbicara toko", bahkan ketika didorong untuk melakukannya
Pelajari teknologi baru dalam kursus yang disponsori perusahaan
Senang bekerja dengan teknologi apa pun yang Anda pilih, "semua teknologi baik"
Sepertinya tidak terlalu pintar
Mulai pemrograman di universitas
Semua pengalaman pemrograman ada di CV
Berfokus terutama pada satu atau dua tumpukan teknologi (mis semuanya terkait dengan pengembangan aplikasi java), tanpa pengalaman di luarnya
Selain itu, saya sarankan:
Sebagian besar ringkasan di atas adalah dari Bagaimana menemukan programmer yang baik , yang merupakan artikel yang bagus, lebih fokus pada indikator rentang yang lebih panjang. Ini jelas menegaskan intuisi dan pengalaman saya. Ini juga banyak hal (seperti "hasrat") yang biasanya tidak disebutkan dalam daftar "apa programmer yang baik".
sumber
Mengevaluasi kecerdasan pemrograman adalah bentuk Turing Test. Dengan demikian (saat ini) tidak ada prosedur evaluasi bentuk tertutup yang dijamin untuk bekerja. Dibutuhkan pemrogram cerdas untuk mengenali pemrogram cerdas lainnya, tetapi hanya dengan beberapa kemungkinan yang masuk akal.
Peluang Anda akan lebih baik jika Anda memiliki pewawancara di tim Anda yang dapat mencium pekerjaan salju, dan secara naluriah tidak suka bekerja dengan orang-orang bodoh (bahkan orang-orang yang berpenampilan menarik, memiliki resume yang mengesankan, dan dapat memuntahkan semua solusi kalengan yang biasa dari ingatan) .
(Satu kemungkinan metodologi yang akan membantu kualitas stackoverflow sebagai efek sampingnya adalah menggali pertanyaan stackoverflow lama, yang terkait dengan beberapa cara dengan persyaratan pekerjaan Anda, tetapi menurut Anda memiliki jawaban yang lebih rendah; tanyakan kepada orang yang diwawancarai bagaimana mereka akan menjawab, dan minta mereka mempostingnya jika itu jawaban yang bagus. Mirip dengan recapcha untuk OCR yang berasal dari kerumunan.)
sumber
Beri mereka masalah, lebih disukai yang terkait dengan domain masalah yang akan mereka kerjakan, dan minta mereka untuk mendiskusikan bagaimana mereka akan mendekatinya. Anda dapat meminta mereka hanya mendiskusikan, pseudo-code atau menulis bit dari kode aktual tergantung pada seberapa percaya diri Anda pada tingkat keahlian mereka
Misalnya, jika organisasi Anda melakukan konferensi, minta mereka untuk menguraikan bagaimana mereka akan membuat kode sistem pendaftaran online yang aman. Mereka harus dapat membahas beberapa dasar-dasar dan mengajukan pertanyaan bagus tentang apa yang perlu diimplementasikan. Saat Anda berinteraksi, Anda harus dapat menentukan apakah mereka akan cocok untuk organisasi Anda dan peran yang Anda butuhkan untuk diisi.
Saya bukan penggemar pemrograman tes trivia dan permainan asah otak. Meskipun mereka bisa menyenangkan bagi beberapa orang, mereka juga dapat mengganggu dan / atau membuat stres orang lain, termasuk orang-orang yang mungkin paling cocok untuk tim Anda. Plus, info tentang banyak tes semacam itu sudah tersedia online dan akan mendorong penjejakan untuk tes dan taktik lain yang akan menumpulkan kelayakan mereka untuk mengukur kemampuan programmer.
sumber
Membaca pertanyaan ini dan beberapa jawaban yang diterimanya mendorong saya untuk menulis sebuah artikel yang menurut saya mungkin menarik:
Praktik rekrutmen aneh ketika mempekerjakan pengembang perangkat lunak
Ok, jadi judul artikelnya adalah sampah, tetapi artikel itu sampai ke inti masalahnya. Bukan masalah kandidat yang Anda pilih untuk mewawancarai mereka, tidak peduli seberapa tidak pantasnya mereka untuk peran yang Anda pikirkan. Jika Anda belum berhasil menentukan prosedur perekrutan yang diperhitungkan dengan baik untuk memungkinkan Anda menemukan permata dalam keadaan sulit, maka Anda hanya harus hidup dengan konsekuensinya, dan ya, ini berarti mendapatkan beberapa kandidat yang bisa jangan pernah bertemu dengan harapan Anda. Memfilter kandidat Anda berdasarkan surat-surat mereka dan resume mengharuskan Anda terlebih dahulu, minta pelamar Anda untuk menulis surat tentang diri mereka sendiri dan apa yang mereka inginkan dari peran itu, dan kemudian lihat bagaimana resume ditulis. Jika Anda hanya memiliki satu atau dua kandidat potensial untuk diwawancarai, maka Anda mungkin telah melakukan pra-penyaringan dengan benar.
Ketika Anda akhirnya menemukan 1 atau 2 kandidat yang Anda anggap benar-benar sepadan dengan waktu Anda, jangan hanya mengajukan beberapa pertanyaan penguji yang gila, tetapi menginvestasikan waktu untuk mengenal orang-orang ini, dan untuk terlibat dalam diskusi terbuka tentang perangkat lunak rekayasa secara umum. Anda akan belajar lebih banyak dari pendekatan biasa tentang kandidat daripada yang pernah Anda lakukan dalam situasi wawancara tradisional (dan agak bermusuhan). Selain itu, jangan hanya puas dengan satu wawancara, tetapi perlakukan kandidat kunci Anda ke beberapa pertemuan di mana diskusi terbuka digunakan, dan di mana kandidat dapat bertemu dengan calon rekan kerja mereka. Waktu tidak pernah sia-sia, karena kandidat yang tidak pantas tidak akan berkembang dengan baik dalam diskusi yang sangat teknis, dan akan menunjukkan kelemahan mereka dengan sangat cepat saat mereka lengah.
sumber
Anda belum mengatakan untuk bahasa apa, tetapi cukup mudah untuk menguji pengetahuan seseorang. Ini juga tergantung pada level yang Anda cari, tetapi ada kumpulan pertanyaan yang cukup besar mengenai pertanyaan wawancara.
Bagaimanapun Anda memutuskan untuk mengadakan wawancara, jangan ajukan pertanyaan wawancara "puzzle berpikiran lateral" itu .
sumber
Saya sarankan Anda pergi dengan pertanyaan FizzBuzz dan menyewa yang pertama yang lulus. Tes lebih lanjut cenderung cacat karena tidak setiap programmer yang baik akan mendekati masalah seperti Anda, atau menangani wawancara tanpa gagap, atau tahu bahasa yang Anda inginkan atau pedulikan atau kekonyolan seperti bertukar bilangan bulat tanpa variabel ketiga (siapa yang butuh itu? Saya maksudnya, karena RAM melebihi 128 byte?).
Pikirkan tentang itu. Jika pertanyaan FizzBuzz menghilangkan 199 dari 200, maka itu hanya menghilangkan ratusan wawancara. Apakah Anda benar-benar akan mewawancarai ratusan prospek?
Sepertinya pengembalian berkurang setelah FizzBuzz. Itu dengan asumsi bahwa 199/200 bahkan mendekati. Dan saya kira waktu ANDA juga berharga ...
sumber
Saya tidak yakin apakah ini komentar atau jawaban tetapi pada dasarnya apa yang dikatakan Matthieu. Anda ingin pertanyaan mudah bodoh yang membutuhkan satu atau dua menit (tetapi tidak lebih dari 5) menit untuk dilakukan dan itu harus tentang bidang yang berbeda.
Contoh pertanyaan mudah bodoh semacam itu adalah pertanyaan tentang rekursi seperti Anda memiliki daftar dan Anda harus mencetaknya urutan terbalik tanpa menggunakan lingkaran. Sebuah pertanyaan regex sederhana jika regex biasanya dilakukan dalam pengembangan Anda. Sebuah pertanyaan tentang bit dan byte jika menggunakan C ++ (tulis template yang menerima char terlalu lama dan mencetak representasi biner. Spesialisasi tidak diperlukan, cukup gunakan sizeof () untuk mencari tahu panjang bitnya)
Itu akan membawa Anda sekitar <= 3 menit per pertanyaan
sumber
Tanyakan kepada mereka tentang tantangan pemrograman yang paling menarik yang pernah mereka coba selesaikan tetapi tidak bisa, pendekatan apa yang mereka gunakan saat menyelesaikannya, mengapa mereka tidak bisa menyelesaikannya dan pendekatan apa yang menurut mereka dapat menyelesaikannya.
Ini cukup bagi saya untuk menilai kemampuan seorang programmer sebagai seorang programmer.
sumber
Bisakah mereka mempelajari sesuatu yang baru? Bicara tentang aspek tingkat tinggi dari teknologi yang Anda gunakan atau sesuatu yang khusus untuk domian bisnis tempat Anda bekerja dan lihat apakah mereka dapat memahami subjek. Apakah mereka mengajukan pertanyaan cerdas? Bisakah mereka membuat analogi? Apakah mirip dengan sesuatu yang telah mereka lakukan di industri atau teknologi lain?
Apakah mereka lebih suka pemrograman? Itu tidak harus menjadi nomor satu dalam daftar mereka, tetapi mereka harus menunjukkan preferensi untuk menulis kode. Maksud saya benar-benar menulis kode dan membuat sesuatu, tidak duduk-duduk dan membicarakannya atau menggambar di papan sepanjang hari. Bukan untuk meminimalkan perencanaan atau mempromosikan pengkodean koboi, tetapi Anda harus memiliki kode pada akhirnya. Hindari mereka yang menghindari keyboard. Ini bukan posisi manajemen.
Anda dapat melakukan penilaian pada skala satu hingga sepuluh hal atau hanya mengandalkan kemampuan mencium jenis Anda sendiri.
sumber
Jika itu membuat Anda merasa programmer yang lebih baik ada di hampir setiap negara. Bagaimana menyingkirkan mereka adalah masalahnya.
Penyiangan pertama adalah resume. Satu hal yang saya cari adalah banyak pengalaman bahasa yang diklaim dan tidak ada yang menggambarkan apa yang mereka lakukan dalam bahasa itu. Saya telah melihat resume yang cukup banyak mengklaim mereka tahu setiap bahasa yang pernah ditemukan dan namun pengalaman mereka menunjukkan mereka hanya benar-benar bekerja dengan Access dan Visual Basic. Mereka pergi tepat di tempat sampah. 10 halaman resume langsung di tempat sampah (terutama sepuluh halaman resume dari orang-orang dengan pengalaman kurang dari 2 tahun yang saya dapatkan). Dari lulusan perguruan tinggi baru-baru ini dengan sedikit pengalaman, Anda harus benar-benar pilih-pilih tentang bagaimana mereka menampilkan diri. Para kandidat terbaik berhati-hati dengan resume mereka, mereka tidak memiliki kesalahan. Apakah Anda benar-benar mencari seseorang yang sangat peduli sehingga ia tidak repot-repot mengoreksi resume-nya?
Resume yang disiapkan secara profesional juga dibuang ke tempat sampah. Setelah Anda membaca ratusan resume, Anda dapat memilihnya karena mereka menggunakan frasa yang sama persis. Anda tidak dapat mempercayai konten dalam resume yang disiapkan secara profesional dan Anda tahu orang itu tidak melakukan persiapan sendiri. Ini adalah tipe orang yang akan bergantung pada orang lain untuk menyelesaikan masalahnya, apakah Anda benar-benar menginginkan itu dalam posisi pemrograman?
Cari hal-hal yang membuat orang tersebut menonjol untuk hal-hal yang Anda pilih. Itu tentu saja lebih sulit dengan yang baru saja keluar dari sekolah, tetapi carilah prestasi, kontribusi untuk open source, dll.
Menyingkirkan berikutnya adalah wawancara telepon. Tanyakan konsep dasar yang terkait dengan pekerjaan aktual yang Anda miliki. Jika orang tidak memiliki pengetahuan dasar tentang konsep yang Anda butuhkan, mereka tidak perlu repot-repot membawa ke wawancara pribadi. Orang muda sering berpikir ini tidak adil karena mereka dapat mencari segala sesuatu di Internet, tetapi kenyataannya saya belum pernah bertemu seorang programmer yang baik yang harus mencari segala sesuatu di Internet. Anda harus memiliki pengetahuan tentang profesi Anda sehingga Anda tidak perlu melihat ke atas setiap kali.
Setelah wawancara telepon, Anda harus memilih 4-5 kandidat dan wawancara terbaik. Tentu saja jika Anda hanya memiliki 1-2 kandidat yang baik, jangan repot-repot mewawancarai orang yang sudah Anda hilangkan. Sekarang Anda akan mengajukan pertanyaan-pertanyaan sulit dan merasakan bagaimana mereka mendekati masalah. Saya tidak akan pernah menggunakan tes fizzbuzz karena terlalu terkenal sehingga jawabannya tidak memberi tahu Anda apa-apa. Alih-alih membuat beberapa masalah dari basis kode Anda sendiri. Saya mungkin memberi mereka persyaratan dan sepotong kode dan bertanya kepada mereka apakah kode tersebut memenuhi persyaratan dan jika tidak mengapa tidak dan apa yang harus mereka lakukan agar memenuhi persyaratan. Saya akan meminta mereka untuk menjelaskan masalah pemrograman yang paling sulit yang harus mereka pecahkan dan langkah apa yang mereka ambil untuk menemukan jawabannya. Saya akan mengajukan beberapa pertanyaan teknis yang lebih mendalam. Ingat Anda mencoba untuk merasakan kompetensi teknis mereka, kemampuan mereka memecahkan masalah dan debugging dan kemampuan mereka agar sesuai dengan tim yang ada. Saya juga mengajukan pertanyaan bahwa mereka mungkin tidak tahu jawaban untuk menilai seberapa baik mereka menangani stres, itu adalah pekerjaan yang membuat stres, saya tidak ingin seseorang yang terlibat dalam wawancara karena stres pekerjaan lebih besar daripada stres wawancara. . Saya mencari kekuatan di bidang-bidang yang saat ini kami lemah dan kemampuan untuk bekerja dalam tim dan untuk menampilkan diri kepada pelanggan (pengembang kami menangani banyak pengguna), daftar Anda mungkin berbeda. Saya tidak ingin seseorang yang terlibat dalam wawancara karena stres pekerjaan lebih besar daripada stres wawancara. Saya mencari kekuatan di bidang-bidang yang saat ini kami lemah dan kemampuan untuk bekerja dalam tim dan untuk menampilkan diri kepada pelanggan (pengembang kami menangani banyak pengguna), daftar Anda mungkin berbeda. Saya tidak ingin seseorang yang terlibat dalam wawancara karena stres pekerjaan lebih besar daripada stres wawancara. Saya mencari kekuatan di bidang-bidang yang saat ini kami lemah dan kemampuan untuk bekerja dalam tim dan untuk menampilkan diri kepada pelanggan (pengembang kami menangani banyak pengguna), daftar Anda mungkin berbeda.
sumber
Para kandidat harus diberikan masalah dunia nyata untuk dipecahkan dengan kebebasan untuk menggunakan teknologi apa pun.
Jika dia muncul dengan warna terbang, dia adalah In!
sumber