Apa cara terbaik untuk mengevaluasi pemrogram baru? [Tutup]


52

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.


Saya menghargai kreativitas, seperti yang Anda katakan tentang kode monyet. Saya tidak suka pendekatan brute force, jika generasi programmer sebelumnya telah menggunakan pendekatan yang diberikan, itu mungkin berarti itu hebat, atau hanya bahwa itu telah diabadikan untuk waktu yang lama. Juga pendidikan tidak seharusnya berfokus pada keterampilan perdagangan, dan saya akan mengatakan itu super penting tetapi menempatkan nilai aktual yang diperoleh di luar tingkat kompetensi dasar sebagai tidak begitu penting. Saya ingin melihat lebih banyak sistem gaya Khan Academy dari banyak modul lulus / gagal kecil dengan dependensi lulus modul lainnya dan periode pendinginan sebelum diizinkan untuk mengambil kembali modul.
alan2di sini

Jawaban:


52

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.


4
Saya setuju pada pertanyaan pengkodean dan pertanyaan pengetahuan, saya tidak pernah setuju untuk meminta kandidat untuk membawa sepotong kode. Menurut pendapat saya itu tidak mudah untuk menemukan sepotong kode substansial yang: menunjukkan sesuatu yang tidak sepele, tidak memerlukan terlalu banyak pengetahuan tentang sistem yang lebih besar dan bahwa Anda diizinkan untuk menunjukkan kepada orang lain.
Andrea Zilio

Saya akan mengatakan review kode. FizzBuzz terlalu sering digunakan. Dan Anda mungkin menakuti orang. Saya sudah menjadi programmer dalam layanan kesehatan dan keuangan, dan hal-hal seperti fizzbuzz tidak berguna. Anda harus dapat memahami interaksi yang jauh lebih rumit. Minta mereka untuk sampel kode, bahkan jika itu FPS di pygame. Jika mereka tidak memiliki sampel kode, mereka bukan coders.
Christopher Mahan

1
@ChristopherMahan Nilai dari FizzBuzz (dan juga pengodean yang sepele) adalah sebagai penjaga gerbang sederhana. Jika mereka tidak dapat mengimplementasikan FizzBuzz, dalam bahasa pilihan mereka, dapatkah mereka menulis kode APA SAJA?
Vatine

@Vatine FizzBuzz menguji kemampuan penalaran yang logis, bukan keterampilan pemrograman. Memang, orang harus bisa melakukannya. Pertanyaan pemrograman sederhana adalah: menampilkan di layar daftar item yang diurutkan dengan cara yang menarik. Mereka harus membuat kode, tetapi mereka akan dapat memanfaatkan pengalaman untuk menghasilkan sesuatu untuk ditulis, dan tidak harus juga mencoba untuk mencari tahu penggoda otak. Saya pernah gagal dalam sebuah wawancara karena mereka ingin saya menggunakan regex dan saya menjawab bahwa untuk masalah itu regex adalah kerja keras dan python memiliki kemampuan bawaan untuk melakukan ini. Kurasa aku tidak mau bekerja di sana.
Christopher Mahan

Peninjauan Kode adalah ide yang buruk, dan sanggahan JohnFX tidak cukup. Saya tahu banyak pengembang yang hebat tetapi tidak mengerjakan apa pun di luar basis kode milik majikan mereka. Ini adalah orang-orang dengan keluarga dan hal-hal yang harus dilakukan di luar pekerjaan. Namun, ketika mereka bekerja, mereka sangat produktif.
MrFox

20

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.


1
Saya kira itu tergantung pada level programmer yang Anda wawancarai. Walaupun mungkin tidak apa-apa untuk mengakses kemampuan perekrutan di tingkat junior, saya akan mempertimbangkan pertanyaan-pertanyaan seperti itu dalam sebuah wawancara sebagai indikator yang jelas bahwa ini bukan perusahaan yang ingin saya tangani.
jfrankcarr

3
Saya tidak setuju dengan bagian pembicaraan. Apakah Anda sering berbicara dengan diri sendiri atau orang lain sambil memecahkan masalah? Bagaimana kalau memberi seseorang ruang dan membiarkannya berpikir sedikit? Jadi kecuali itu benar-benar sepele, saya pikir itu bukan praktik yang baik.
Andrey Rubshtein

1
@Andrey - Bagian pembicaraan adalah untuk mendapatkan wawasan tentang proses pemikiran mereka. Anda ingin melihat bagaimana mereka berpikir tentang suatu masalah dan pendekatan pemecahannya. Apakah Anda memiliki opsi yang lebih baik?
Oded

5
@Dilengkapi, ya, sebenarnya saya lakukan. Biarkan mereka berpikir sebentar, sendirian , seperti yang akan mereka lakukan dalam kehidupan nyata, terutama jika itu adalah masalah yang sulit, dan kemudian tanyakan sebanyak yang mereka inginkan. Seperti dalam ujian lisan.
Andrey Rubshtein

4
Bahkan sebagai petugas di sekolah yang memiliki beberapa profesional CS yang baru-baru ini dikenal, saya menemukan bahwa fizzbuzz sepele adalah filter yang bagus. Sebagian besar orang yang saya lulus mungkin tidak dapat menyelesaikannya dalam waktu yang wajar. Orang-orang itu berjuang mencari pekerjaan atau tidak. Saya pikir mengikuti joelonsoftware.com/articles/GuerrillaInterviewing3.html baik.
Rig

14

Hanya mencari hasrat tentang pekerjaan itu.

Mengutip Joel, cari orang yang " Cerdas, dan selesaikan semuanya. "

Sisanya tidak masalah


7
Masalahnya adalah Anda tidak bisa memastikan apakah mereka pintar.

4
@Chad: hasrat untuk belajar tidak "menyelesaikan sesuatu". Untuk mengetahui apakah seseorang dapat menyelesaikan sesuatu, Anda harus meminta mereka untuk melakukan sesuatu.
kevin cline

2
@kevin cline, tweak posting saya. Mereka perlu memiliki gairah tentang pekerjaan, biasanya itu ditunjukkan dengan keinginan untuk belajar. Ya, butuh beberapa pertanyaan, percakapan harus mengalir, seharusnya tidak hanya serangkaian pertanyaan. Tetapi untuk mencari tahu apakah mereka menyelesaikan sesuatu, mintalah contoh di mana mereka memiliki hambatan, dan bagaimana mereka mengatasinya. Semua orang menyentuh rintangan dalam pekerjaan mereka, baik itu dari teknologi, orang, proses, tetapi orang pintar, yang menyelesaikan sesuatu, akan menemukan cara untuk mengatasinya, dan dapat menjelaskannya, secara rinci, cukup untuk menjual Anda pada kemampuan mereka.
CaffGeek

3
@ mouviciel tidak dalam pengalaman saya. Beberapa programmer paling pintar yang saya kenal sangat ekstrovert.

4
Jika Anda tidak bisa duduk di ruangan dengan kandidat pengembang dan mencari tahu apakah mereka pintar atau tidak, cari seseorang yang bisa.
JeffO

13

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:

  • The FizzBuzz test (atau sesuatu seperti itu untuk menguji kemampuan dasar untuk menulis sebuah algoritma.
  • Versi yang lebih sulit dari tes FizzBuzz (untuk membawanya ke titik kegagalan atau hampir gagal.)
  • Diskusikan kode mereka dan lihat apakah mereka mau mengkritik diri sendiri dan mencari peningkatan (yang mungkin tidak sempat mereka lakukan secara singkat di tempat tes) seperti:
    • nama-nama variabel yang baik (Saya sudah berpengalaman coders terampil menggunakan variabel dalam produksi seperti "flag" (WTF ??)
    • modularisasi.
    • Mengantisipasi masalah dan melakukan "coding defensif"
  • Kesediaan untuk melihat "kekurangan" sebagai peluang untuk perbaikan. Saya pikir coders terbaik selalu mencari cacat pada kode mereka sebelumnya. Mereka tidak terlalu egosentris untuk berpikir bahwa menemukan kelemahan mereka adalah penghinaan pribadi. Mereka melihatnya sebagai peluang untuk berbuat lebih baik. (Orang-orang yang tidak dapat melihat cacat tanpa cacat baik kewalahan dengan melihat cacat (dan menjadi sangat tidak percaya diri atau, untuk menghindari hal itu, mereka mengabaikan kelemahan tersebut.
  • Bisakah mereka melakukan debug?
  • Bisakah mereka Tes Unit? (Saya sudah bicara dengan terlalu banyak programmer yang mengatakan "QC melakukan itu". Saya tidak berbicara tentang Pengujian, saya berbicara tentang pengujian: Anda menulis suatu fungsi, apakah itu berfungsi? kemungkinan masalah (input NULL, dll.)? Jika Anda tidak bisa melakukan itu, bagaimana Anda tahu ketika Anda selesai?
  • Apakah mereka memiliki keterampilan komunikasi yang baik? (minimal: pemahaman yang baik dan pengetahuan diri tentang kapan mereka mengerti dan tidak mengerti serta keinginan untuk mengatakan "Saya tidak mengerti, tolong jelaskan lagi".

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".


10

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.)


7

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.


Saya setuju dengan Anda tentang kelemahan tes trivia / otak untuk pemilihan kandidat. masalahnya adalah bahwa meninjau / mendiskusikan kode dengan setiap kandidat akan memakan waktu terlalu banyak. Dan mungkin hasilnya akan lebih subyektif. tidak persis apa yang saya cari, saya lebih suka sesuatu yang membutuhkan pengawasan pribadi kurang. dan kemudian ketika saya memiliki lebih banyak kandidat yang cocok kemudian berbicara / mendiskusikan / mewawancarai mereka
Rafael

3
Terlalu memakan waktu? Seseorang harus berbicara dengan para kandidat. Tidak ada tes tertulis yang akan berhasil. Isi tes akan dengan cepat menjadi pengetahuan umum, dan para kandidat akan tiba dengan jawaban yang dihafalkan.
kevin cline

10
@kevincline: Tepat, Anda harus berbicara dengan mereka. Saya sedang wawancara di Xerox (kembali tahun 70-an) dan saya ditanya bagaimana saya akan menangani tabrakan dalam algoritma hashing. Saya tidak memiliki banyak sekolah formal dalam pemrograman, tetapi saya telah melakukannya selama sekitar 5 tahun pada waktu itu, jadi saya katakan saya tidak tahu apa itu hash. Pewawancara saya menjelaskannya kepada saya, lalu mengajukan kembali pertanyaan itu. Kami melanjutkan selama lebih dari satu jam ketika saya menemukan & memecahkan beberapa jenis masalah tabrakan. Dia mengatakan kepada saya bahwa jika saya bisa melakukan itu dalam satu jam maka saya bisa menangani apa pun yang mereka lemparkan ke saya. Saya mendapat pekerjaan. Karena dia berbicara kepada saya.
Peter Rowell

@PeterRowell Itulah yang harus terjadi. +1
Chiron

3

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.


Poin bagus. Namun, saya akan berhati-hati tentang terlalu banyak wawancara. Baik waktu kandidat dan waktu Anda berharga (terutama jika kandidat saat ini dipekerjakan di tempat lain). Dalam pengalaman saya, semakin banyak wawancara semakin berkurang, jadi saya akan membatasi satu atau dua wawancara. Wawancara telepon (tambahan) mungkin juga kompromi.
sleske

1
@sleske, saya setuju kepala sekolah, terutama jika orang yang sama menghadiri semua wawancara. Karena itu, lebih baik berbagi beban untuk menemukan yang paling cocok untuk perusahaan dan tim, dan memberi Anda kesempatan untuk belajar dari pengamatan orang lain. Wawancara yang buruk tidak akan melangkah lebih jauh, tetapi semakin banyak pemangku kepentingan yang berkepentingan dengan kandidat, semakin banyak wawancara yang mungkin Anda butuhkan, sehingga tidak jarang memiliki 3 atau bahkan 4 wawancara dalam tim yang sangat luas. Terlalu banyak lagi akan memberikan kesan sangat tidak teratur. Juga bermanfaat untuk memberi tahu kandidat tentang jumlah wawancara di muka.
S.Robins

@ s-robins pendapat menarik, hanya ingin menaruh beberapa ligth tentang beberapa aspek dari pertanyaan saya. Karena alasan di luar kendali kami, kami tidak dapat memilih kandidat kami berdasarkan proses Perekrutan yang normal, sebaliknya kandidat hanya datang dan kami perlu mengatakan apakah dia memiliki keterampilan / pengetahuan yang benar untuk mengambil pekerjaan. Mungkin dalam proses perekrutan yang normal hal-hal ini tidak terlalu sering terjadi. tetapi dalam posisi kita, kita perlu menghadapi situasi ini.
Rafael

@ Rafael, Jika saya memahami komentar Anda dengan benar, Anda mengatakan bahwa Anda mendapatkan kandidat yang diberi makan dari "tempat lain" untuk mengevaluasi dan bahwa kesulitan Anda dalam membuat penilaian objektif terhadap seorang kandidat tanpa pengetahuan sebelumnya tentang kandidat itu. Ini terdengar seperti masalah sistemik dalam organisasi tempat Anda bekerja. Saya akan menyarankan untuk bertemu dengan orang-orang yang mengirim kandidat sesuai keinginan Anda, dan bekerja dengan mereka untuk menyusun sistem untuk menyaring kandidat yang jelas-jelas tidak pantas sebelum Anda mewawancarai mereka. Mungkin bahkan meminta agar proses aplikasi yang lebih formal dilaksanakan.
S.Robins

@ s-robin kamu mengerti dengan baik ...
Rafael

1

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 .


2
saya belum menentukan bahasa yang kami gunakan untuk mengembangkan, karena kami percaya bahwa seorang programmer yang baik (dengan kursus kapasitasi resesifnya) dapat belajar untuk memprogram dalam bahasa apa pun terlepas dari sintaksnya.
Rafael

2
@Rafael norvig.com/21-days.html . Seperti yang saya katakan, itu tergantung apakah Anda mencari seorang programmer junior, atau yang senior.
BЈовић

Karena saya sedang berbicara tentang sebagian besar kandidat adalah lulusan baru. Saya merujuk pada programmer junior, tetapi pertanyaan saya masuk dalam konteks yang lebih luas bahwa proses rekrutmen pribadi saya yang spesifik
Rafael

@ Rafael Dalam hal ini Anda mengharapkan terlalu banyak dari seorang junior. Baca artikel yang saya posting di komentar di atas, di mana ia memberitahukan berapa lama waktu yang dibutuhkan untuk menguasai bahasa pemrograman.
BЈовић

Saya tidak berbicara tentang menguasai bahasa pemrograman tertentu, saya berbicara tentang mendapatkan orang terbaik dengan keahlian pemrograman generik terbaik, (itu sebabnya saya tidak menentukan bahasanya), saya tidak bisa berharap semua orang yang datang sebagai kandidat menguasai bahasa yang sedang kita pemrograman, dan itu sebabnya kita berada dalam posisi untuk membawa kursus kapasitasi jika orang tidak tahu bahasa tersebut.
Rafael

1

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 ...


2
Menakutkan bagaimana FizzBuzz adalah tes standar untuk mengevaluasi kompetensi seorang programmer. Namun, ini adalah ujian yang dicoba dan benar - saya tidak bisa memberi tahu Anda berapa banyak programmer dengan gelar CS tidak bisa melakukannya (dalam 'bahasa pilihan' mereka)
Nodey The Node Guy

0

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


0

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.


0
  1. Bisakah mereka mempertahankan apa yang mereka klaim tahu? Mereka menaruhnya di resume / CV sebagai keterampilan atau sesuatu yang mereka lakukan pada proyek lain. Lihat seberapa dalam mereka bisa membahas masalah ini.
  2. 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?

  3. 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.


0

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.


-1

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!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.