Bagaimana cara mewawancarai seorang ilmuwan alami untuk posisi dev? [Tutup]

30

Pertanyaan Asli

Saya sudah melakukan beberapa wawancara untuk perusahaan saya, kebanyakan ilmuwan komputer untuk posisi dev tetapi juga beberapa penguji dan manajer proyek. Sekarang saya harus mengisi lowongan di grup penelitian kami di dalam departemen R&D (catatan: "penelitian" berarti bahwa kami mencoba menyelesaikan masalah dalam domain / ceruk pasar profesional kami menggunakan perangkat lunak dalam proyek penelitian bersama dengan universitas, perusahaan lain, pusat penelitian dan organisasi pengguna akhir. Ini bukan penelitian ilmu komputer; kami tidak akan menyelesaikan masalah P = NP).

Sekarang kami mengundang seorang pria yang memegang gelar MSc dalam bidang kimia (dengan banyak fisika di CV-nya juga), yang tidak pernah memiliki pelajaran ilmu komputer. Saya sudah berbicara dengannya sekitar setengah jam di hari-hari karir universitas lokal dan tidak diragukan lagi pria itu cerdas. Juga nilainya sangat bagus dan dia lulus dengan perbedaan. Untuk gelar BSc, dia perlu belajar pemrograman di Mathematica dan memberi tahu saya bahwa dia sangat menyukai pemrograman. Dia juga memecahkan beberapa masalah kimia fisik yang saya mungkin tidak mengerti menggunakan perangkat lunaknya sendiri, diimplementasikan dalam Mathematica, untuk tesis MSc-nya. Ini termasuk GUI dan ukuran penting 8.000 LoC. Dia tampaknya sangat tertarik dengan apa yang kami lakukan di grup riset kami dan jujur ​​saja itu cukup sulit bagi UKM seperti kami untuk mendapatkan orang baik. Saya juga sangat tertarik untuk mempekerjakannya karena dia dapat membantu saya dalam menulis proposal proyek, laporan, melakukan presentasi dan sebagainya. Dia mungkin akan cocok untuk tim kami juga.

Satu-satunya pertanyaan yang tersisa adalah: Bagaimana saya bisa memeriksa apakah dia akan mendapatkan keterampilan pemrograman yang dia butuhkan untuk melakukan implementasi perangkat lunak dalam proyek-proyek kami karena ini akan menjadi bagian penting dari pekerjaan?

Tentu saja saya akan bertanya kepadanya apa itu, yang membuatnya tertarik tentang pemrograman. Saya juga akan bertanya bagaimana ia mulai menulis perangkat lunak ilmu alamnya dan bagaimana ia menyusunnya. Saya akan bertanya tentang bagaimana ia berhasil memperoleh keterampilan dan informasi tentang pengembangan perangkat lunak yang ia butuhkan. Tetapi apakah ada hal lain yang bisa saya tanyakan? Mungkin ada sesuatu yang lebih konkret? Haruskah saya memintanya untuk menjelaskan solusi Mathematica-nya?

Untuk lebih jelasnya: Saya tidak mencari pengetahuan dalam bahasa atau tumpukan teknologi tertentu. Kami adalah .NET shop dalam pengembangan produk tetapi saya ingin memiliki pilihan gratis untuk proyek penelitian kami. Jadi saya tertarik pada kompetensi meta untuk dapat mempelajari apa pun yang sebenarnya dibutuhkan.

Saya harap pertanyaan ini dapat dijawab dan tidak terbuka karena saya benar-benar ingin tahu apakah ada cara standar untuk memeriksa kemampuan untuk mendapatkan keterampilan pemrograman lebih lanjut di tempat kerja. Jika ada sesuatu yang tidak jelas bagi Anda, tolong beri saya beberapa komentar dan biarkan saya meningkatkan pertanyaan saya.

Pembaruan untuk mencerminkan jawaban yang diberikan hingga 2011-12-01

Apa jawaban yang saya terima dan mengapa

Terima kasih atas jawaban Anda, sebagian besar dari mereka sangat membantu, jadi saya sangat banyak mendapat peningkatan! Meskipun jawaban Tom Squires mendapat suara terbanyak, saya akan menerima jawaban yang diberikan oleh Pangeran Goulash . Tentu saja Tom secara objektif benar, tetapi jawaban Pangeran hanya lebih membantu bagi saya dan saya memeriksa ulang FAQ bahwa ini adalah kriteria untuk menerima jawaban.

Apa yang akan saya tanyakan kepadanya selama wawancara

  • Saya akan membiarkan dia menjelaskan beberapa tugas sederhana seperti contoh dalam The Camel Has Two Humps yang disebutkan oleh Chris Burt-Brown

  • Saya akan memintanya untuk menjelaskan beberapa aliran kontrol yang lebih maju mungkin dalam notasi grafis.

  • Saya akan memeriksa pemahamannya tentang rekursi menggunakan contoh matematika.

  • Saya akan membiarkan dia menjelaskan algoritma pilihannya dalam bahasa alami.

  • Saya akan membiarkan dia menjelaskan solusi Mathematica-nya, khususnya saya akan meminta model prosedurnya, penggunaan alat, penataan kode dan perangkat lunak secara umum serta berbagai lapisan abstraksi.

  • Untuk memeriksa motivasinya, saya akan meminta daya tarik pengembangan perangkat lunaknya.

  • Saya akan bertanya kepadanya apakah dia tahu apa yang perlu dia pelajari tentang pengembangan perangkat lunak perusahaan. Terutama saya ingin mengubah diskusi menjadi arah bekerja dalam tim, pemrograman pasangan, TDD karena saya berharap dia tidak tahu banyak tentang ini setelah bekerja pada MSc-nya saja.

Kedengarannya seperti wawancara panjang;)

Pembaruan setelah wawancara 2011-12-09

Sekali lagi terima kasih atas jawaban baik Anda. Dia lulus wawancara dengan warna-warna cerah. Saya tidak pernah lebih puas dengan pelamar. Solusi Mathematica-nya tampaknya terstruktur dengan cukup baik. Dia bisa menjelaskan di mana dia menggunakan fungsi tingkat tinggi, meskipun dia tidak tahu bahwa ini disebut seperti ini. Dia menjawab pertanyaan rekursi berbasis matematika saya serta tugas-tugas sederhana dan mengontrol berbagai hal dari The Camel Has Two Humps. Ketika dia menjelaskan beberapa algoritma saya belajar banyak tentang pemasangan non-linear;) Juga dia dengan jujur ​​mengatakan bahwa tentu saja dia tidak dapat menjamin bahwa dia akan dapat mempelajari hal-hal tentang pengembangan perangkat lunak profesional yang dia tidak ketahui sejauh ini. Tapi dia percaya bahwa dia selalu baik dalam mempelajari konsep-konsep baru - bahkan oleh dirinya sendiri - dan benar-benar tertarik pada pengembangan perangkat lunak. Dia juga meminta tumpukan teknologi proyek, dia akan diterapkan terlebih dahulu, untuk melihatnya di rumah. Dia ingin tahu tentang pemrograman pasangan dan kerja tim juga. Sekarang saya berharap kontrak kerja akan selesai.

Silas
sumber
9
Saya merasa luar biasa bahwa perusahaan bersedia mempekerjakan orang tanpa pengetahuan dalam teknologi yang mereka gunakan. Saya berharap saya menemukan perusahaan Anda sebelum saya melakukan apa yang saya lakukan untuk karier saya!
NoChance
Emmad: Itulah yang saya coba jelaskan dan maksud dengan "kompetensi-meta". Di mana manfaat perusahaan saya ketika saya sekarang mempekerjakan seorang programmer C # yang luar biasa yang tidak mampu (atau mau) belajar Scala / Lift saat dibutuhkan? Dan jujur: Sebenarnya cukup sulit untuk mendapatkan orang baik di Jerman. Terutama ketika Anda seorang UKM yang tidak berlokasi di kota metropolitan yang trendi seperti kita.
Silas
2
Minta dia untuk melakukan sedikit riset tentang aliran kendali sederhana, dan teknik-teknik dasar lainnya dalam bahasa tertentu. Kemudian ketika dia datang memintanya untuk memecahkan masalah menggunakan itu.
Darren Young
2
Saya telah bekerja dengan beberapa ilmuwan yang menjadi pengembang di posisi saya saat ini. IMHO mereka cenderung sangat baik pada aspek pemecahan masalah pembangunan dan tidak begitu hebat dalam menulis kode yang dapat dipertahankan dengan prinsip-prinsip OO yang baik. Jika Anda ingin dia melakukan lebih dari sekadar menulis alat 'cepat dan kotor', Anda mungkin perlu memiliki pengembang tradisional yang bekerja dengannya.
Jordan Bentley
2
Saya cukup banyak orang ini. Saya memiliki latar belakang fisika / kimia komputasi, dan saya telah mengembangkan banyak model / kode komputasi, bersama dengan sejumlah proyek sampingan (terkadang kompleks dan sukses). Penyesuaian utama yang harus saya buat dalam lingkungan pengembangan profesional harus dilakukan dengan metodologi pengembangan dan bekerja dalam tim. Pastikan dia mengerti apa yang diperlukan untuk bekerja bersama pada perangkat lunak. Pastikan dia mengerti metode yang kalian gunakan (TTD / integrasi kontinu semacam itu) dan apa artinya bekerja dengan mereka untuk hasilnya.
drxzcl

Jawaban:

21

Saya sangat terbebani di sini karena saya mulai sebagai pengembang perangkat lunak beberapa tahun yang lalu dengan gelar PhD dalam fisika, tetapi sangat sedikit pengalaman pengkodean (setara dengan program sarjana di Fortran). Jelas itu tergantung pada jenis perangkat lunak yang Anda kembangkan, tetapi pandangan saya adalah bahwa keterampilan pengkodean sangat mudah untuk diambil oleh siapa pun dengan keterampilan ilmiah / pemecahan masalah setengah layak. Saya tidak bermaksud itu sebagai penghinaan terhadap programmer seumur hidup yang telah mempelajari ilmu komputer: tentu saja ada aspek teknis yang mengambil pelatihan serius untuk dikuasai (misalnya arsitektur multi-threading dan sangat rendah) tetapi saya menganggap itu bukan posisi yang ingin Anda isi.

Untuk wawancara teknis saya untuk posisi saya saat ini, saya dihadapkan dengan masalah matematika yang cukup kompleks dan diminta untuk merancang program untuk menyelesaikannya. Penekanannya adalah pada penulisan algoritma yang, setelah diimplementasikan, akan menyelesaikan masalah. Saya bisa menulis jawaban murni menggunakan kata-kata untuk menggambarkan solusi saya, tetapi saya diizinkan untuk menulis beberapa kode dalam bahasa pilihan saya jika saya mau. Tes itu lebih tentang kemampuan pemecahan masalah dan apakah saya bisa "berpikir seperti seorang programmer". Jelas jika ada kandidat dengan kemampuan yang sama dan satu memiliki pengalaman pengkodean lebih langsung, maka dia akan keluar di atas, tetapi itu tampaknya cukup adil bagi saya.

Intinya adalah: memeriksa kandidat untuk keterampilan Anda mempekerjakan dia, bukan untuk cita-cita yang Anda harapkan akan dia capai.

Pangeran Goulash
sumber
2
Setelah bekerja dengan programmer yang dulunya adalah ilmuwan, bukan hanya detail level rendah yang mereka abaikan, tetapi juga hal-hal level tinggi. YMMV tentu saja, tapi itu adalah masalah umum yang kurang. Bukan berarti semua pekerjaan membutuhkan itu ...
Donal Fellows
1
@ DonalFellows: Saya tidak ragu bahwa pengembang tanpa pelatihan khusus dapat kekurangan luas dan kedalaman pengetahuan. Itu tergantung pada peran, dan pada jumlah pelatihan in-house yang ditawarkan.
Pangeran Goulash
1
@DonalFellows: mengingat bahwa OP tertarik untuk menentukan kemampuan pelamar untuk belajar, bukan pengetahuannya saat ini ...
2
@DonalFellows: seperti yang saya katakan sebelumnya, mengingat bahwa OP tertarik untuk menentukan kemampuan pelamar untuk belajar, bukan pengetahuannya saat ini ...
2
@ Mark Bannister: Ilmuwan yang baik dapat belajar, itu bukan pertanyaan yang berguna di sini. Pertanyaan yang lebih berguna adalah apakah ilmuwan akan mempelajari apa yang perlu dia ketahui. Itu lebih merupakan masalah kepribadian. Apakah ilmuwan tahu apa yang tidak dia ketahui tentang rekayasa perangkat lunak?
David Thornley
37

Bagaimana saya bisa memeriksa apakah dia akan mendapatkan keterampilan pemrograman yang dia butuhkan

Anda tidak bisa . Tidak mungkin untuk secara akurat menguji keterampilan yang belum dia miliki. Anda harus membuat keputusan berdasarkan kecerdasan dan sikapnya. Pada akhirnya selalu akan menjadi risiko.

Dari pengalaman pribadi saya dapat mengatakan sangat mungkin untuk beralih dari sains ke pemrograman. Keduanya pada dasarnya mendidih menggunakan otak Anda untuk memecahkan teka-teki yang kompleks.

Tom Squires
sumber
8
+1 Untuk "Mereka berdua pada dasarnya menggunakan otak Anda untuk memecahkan teka-teki yang rumit."
joshin4colours
1
Ada apa denganmu? Pekerjakan orang itu, demi Tuhan! Ingat bahwa programmer hanyalah operator mesin bubut berteknologi tinggi. Dia antusias, pintar, dan tahu banyak chemistry. Jika Anda tidak mempekerjakannya, lain kali Anda pergi untuk mempekerjakan seseorang setahun dari sekarang Anda akan menendang Anda bahwa Anda tidak.
Pete Wilson
1
Tidak jarang lulusan CS telah memprogram sejak mereka berusia 13 tahun atau lebih. Pada saat mereka masuk perguruan tinggi, mereka sudah menjadi programmer menengah oleh sebagian besar skala. Itu tidak berarti bahwa mereka tidak belajar apa pun dari gelar mereka. Pemrogramannya mudah ... Ilmu Komputer / Rekayasa Lunak tidak. Ini bukan berarti mereka tidak akan dapat berkontribusi dan menjadi anggota yang berharga ... Tetapi itu berarti mereka mungkin tidak akan pernah memiliki landasan CS yang sama.
user606723
6

Saya tidak memiliki sumber sekunder yang memverifikasi makalah ini sehingga saya tidak dapat menjaminnya tetapi:

Unta Memiliki Dua Humps
http://www.eis.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf

Kami telah menemukan tes untuk kemampuan pemrograman, yang kami berikan detailnya. Kami dapat memprediksi keberhasilan atau kegagalan bahkan sebelum siswa memiliki kontak dengan bahasa pemrograman dengan akurasi sangat tinggi, dan dengan menguji dengan instrumen yang sama setelah beberapa minggu paparan, dengan akurasi yang ekstrim.

Chris Burt-Brown
sumber
3
Setelah membaca makalah saya percaya untuk mengingat bahwa saya sudah membaca lebih banyak tentang studi ini beberapa waktu yang lalu. Tidak dapat menemukannya lagi :( Sunting: disebutkan di Coding Horror , terima kasih atas pengingatnya
Silas
Anda mengalahkan saya untuk itu, saya akan menjawab dengan tautan Coding Horror @Silas ditambahkan
Izkata
5

Bagaimana saya bisa mengecek apakah dia akan mendapatkan keterampilan pemrograman yang dia butuhkan?

Ini sangat sederhana. Beri dia keterampilan.

Nah, itu bukan jawaban yang sangat memuaskan, tapi izinkan saya menguraikan.

Saya datang ke pemrograman setelah melakukan 3 tahun di Teknik Sipil. Itu latar belakang yang cukup solid dalam fisika dan matematika terapan . Ini bukan matematika teoretis yang akan diberikan gelar CS, tapi ini layak dilakukan. Apa yang saya dapatkan dari pengalaman teknik adalah latar belakang yang kuat dalam pemecahan masalah . Siapa pun dengan latar belakang matematika sudah menghargai konsep keanggunan ketika berbicara tentang solusi untuk suatu masalah. Mereka sudah mendapatkan pendidikan dalam refactoring karena mereka menghabiskan waktu mengambil enam halaman goresan ayam dan mengubahnya menjadi bukti setengah halaman yang elegan untuk diserahkan.

Siapa pun yang mempelajari fisika telah mengembangkan pendekatan intuitif untuk membuat solusi dari kerangka dasar.

Dan apa pemrograman di luar keterampilan ini? - Bahasa, Idiom, Pola dan Kerangka. Ini mudah untuk diajarkan. Pemecahan masalah yang tidak bisa Anda lakukan. Jika Anda dapat memberikan instruksi di bidang ini, maka Anda akan berakhir dengan pengembang yang baik.

Pertanyaannya kemudian menjadi "Berapa lama Anda bisa menunggu dia untuk mempercepat?"

tl; dr; Anda bisa mengajar mengetik. Anda tidak bisa mengajar dengan pintar.

Chris Cudmore
sumber
+1, jawaban yang sangat bagus. Saya berharap orang memiliki pandangan yang lebih terbuka tentang profesi: memiliki gelar matematika tidak berarti Anda tidak dapat melakukan pemrograman untuk mencari nafkah, juga tidak sebaliknya. Belajar belajar adalah keterampilan penting IMO.
K.Steff
2

Saya memiliki gelar BSc dalam Ilmu Material tetapi telah bekerja sepanjang karir saya dalam pengembangan perangkat lunak.

Saya akan menyarankan bahwa kandidat Anda mungkin tidak akan memiliki masalah dengan pemrograman dasar dan algoritma, tetapi ketika datang ke persyaratan jenis "rekayasa" yang lebih ia mungkin memerlukan bimbingan. Maksud saya menyusun kode dengan baik, tidak memiliki fungsi garis 500, pengujian secara efektif, merancang untuk efisiensi ...

Sebagian besar dari ini dapat diajarkan, tetapi Anda mungkin ingin merancang beberapa pertanyaan untuk mengetahui hal ini.

Jaydee
sumber
2

Dia juga memecahkan beberapa masalah kimia fisik yang saya mungkin tidak mengerti menggunakan perangkat lunaknya sendiri, diimplementasikan dalam Mathematica, untuk tesis MSc-nya. Ini termasuk GUI dan ukuran penting 8.000 LoC.

Kedengarannya bagi saya seperti kandidat sudah tahu cara memprogram, asalkan mereka mungkin tidak memiliki banyak pengalaman melakukannya sebagai pengembang yang berdedikasi tetapi mereka memiliki proyek yang dapat dibuktikan yang telah mereka selesaikan yang membutuhkan jumlah pekerjaan yang tidak sepele untuk diselesaikan. Dengan demikian, Anda mungkin dapat mewawancarai kandidat dengan cara yang sama dengan yang Anda lakukan terhadap pengembang yang menggunakan bahasa berbeda dari yang Anda gunakan, yaitu:

  • Kompetensi Inti - Apakah kandidat memahami logika programatik dasar, kontrol aliran, struktur data dasar.
  • Kompetensi Lanjut - Apakah kandidat memahami pemrograman dan desain berorientasi objek, struktur data lanjutan, antarmuka, kelas abstrak, dll.
  • Keterampilan Pemecahan Masalah - Diberi masalah, apakah kandidat menunjukkan keterampilan memecahkan masalah yang solid.

Bahasa yang digunakan Mathematica cukup maju dan seseorang yang pandai menulis perangkat lunak untuk Mathematica harus cukup kompeten di bidang lain sehingga fokus pada pengalaman itu dan menggunakannya sebagai dasar untuk pengalaman pengkodean bisa menjadi cara yang baik untuk mendekati wawancara.

rjzii
sumber
2

Berbicara sebagai lulusan Teknik Aerospace berubah menjadi programmer, tentu mungkin untuk membuat lompatan dari ilmu alam ke pemrograman. Namun, berhati-hatilah, mampu menyelesaikan masalah tidak selalu berkorelasi dengan kemampuan menulis kode. Anda sepertinya menyadari ini dan itu adalah hal yang baik.

Bagi saya, konsep yang paling penting untuk memastikan dia memahami adalah kontrol aliran dan rekursi (dan perulangan secara umum sebagai bagian dari ini). Sebelum merekrut seorang kandidat, bahkan seseorang yang jelas-jelas sangat cerdas pastikan ia dapat menulis algoritma kata-kata sederhana untuk menyelesaikan masalah. Pastikan dia dapat mengambil algoritma kata-kata sederhana dan mengubahnya setidaknya menjadi kode semu. Anda bahkan dapat menyelidiki untuk melihat apakah dia setidaknya dapat memahami konsep polimorfisme, meskipun saya tidak yakin ini adalah pengetahuan yang diperlukan dalam keadaan ini.

Waspadalah juga kemampuan untuk menyelesaikan masalah sains di Mathematica / MatLab / Apapun bukan berarti dia bisa menulis kode yang bagus. Ini hanya berarti ia mampu menerapkan prinsip-prinsip pemrograman dasar (kadang-kadang sangat mendasar), biasanya jika pernyataan lain. Belajar menjadi programmer yang baik umumnya akan mengambil komitmen pribadi dan majikan untuk seseorang pada tahap ini. Peringatan: Saya telah bertemu orang-orang yang sangat cerdas yang adalah / insinyur yang baik yang tidak dapat memprogram jalan keluar dari kantong kertas dan jujur ​​tidak dapat memahami dasar-dasar bahasa dasar.

Pengalaman pribadi

Saya lulus dari sekolah dengan gelar teknik dan sedikit pengalaman pemrograman di bawah ikat pinggang saya. Saya telah bekerja dengan jumlah C yang sangat kecil, sedikit MatLab dan beberapa VB + Access. Butuh waktu sekitar 3 bulan belajar untuk menjadi benar-benar berguna sebagai programmer di toko VB.NET. Butuh 9 bulan lagi untuk menjadi mahir. Namun, saya bisa, dengan tingkat kepercayaan yang adil mengatakan bahwa keterampilan pemecahan masalah saya lebih tinggi daripada 99% programmer lain yang saya temui dalam pekerjaan saya. Majikan saya secara konsisten menganggap saya sebagai salah satu aset mereka yang lebih berharga.

Kesimpulan

Ini adalah risiko / imbalan tetapi sering kali menghadapi seseorang yang memiliki keterampilan pemecahan masalah murni dapat membuahkan hasil dalam jangka panjang selama mereka mampu mempelajari konsep pemrograman dan Anda berdua bersedia menginvestasikan waktu dalam memperluas pemrogramannya. pengetahuan. Namun, saya sangat yakin bahwa dia harus memiliki setidaknya pemahaman dasar tentang dasar-dasar pemrograman sebelum Anda menawarkannya pekerjaan. Dalam pengalaman saya, begitu Anda berada di titik ini, Anda bisa melangkah lebih jauh dengannya.

Mike Cellini
sumber
Terima kasih untuk balasan Anda. Itu menegaskan sebagian besar pikiran saya. Saya hanya ingin menambahkan bahwa saya telah bertemu banyak ilmuwan komputer, bekerja sebagai pengembang dan arsitek selama bertahun-tahun, yang IMO tidak dapat menulis kode yang baik juga. Bahkan beberapa dari mereka yang menulis artikel teknis tentang pemrograman. Intinya: Menjadi progammer yang baik selalu mengharuskan Anda membaca banyak buku, mempelajari berbagai bahasa dan sebagainya ... tidak peduli apa pun gelar yang Anda miliki.
Silas
1

Saya akan mulai dengan beberapa pertanyaan dan dasar-dasar algoritma dasar untuk melihat apakah dia masuk ke dalam logika algoritma dan pemrograman. Jika dia mampu memahami apa itu algoritma, dia akhirnya dapat mengembangkan keterampilan yang dibutuhkan untuk melakukan hal-hal konkret sesudahnya.

LostMohican
sumber
1

Bagaimana saya bisa mengecek apakah dia akan mendapatkan keterampilan pemrograman yang dia butuhkan untuk melakukan implementasi perangkat lunak di proyek-proyek kita karena ini akan menjadi bagian penting dari pekerjaan

Jujur, saya cukup yakin Anda tidak akan mendapatkan informasi ini dari wawancara satu atau dua jam. Beri dia tugas pemrograman dalam C # (sesuatu yang tidak terlalu teknis) dan satu atau dua minggu untuk menyelesaikannya. Itu seharusnya cukup waktu untuk mempelajari dasar-dasar bahasa untuk seseorang yang telah belajar pemrograman dengan Mathematica. Kemudian buat tinjauan kode dengannya dan putuskan basis itu.

Doc Brown
sumber
1

Anda mungkin melihat Praktik untuk pemrograman dalam lingkungan ilmiah? (di Stack Overflow) untuk mendapatkan gambaran tentang seperti apa budaya pemrograman ilmu alam. Dengan begitu Anda berada dalam posisi untuk membandingkan persiapannya dengan rekan-rekannya.

Dalam hal ini, Anda mungkin memintanya untuk menjelaskan praktik pemrograman yang biasa ia gunakan untuk mengetahui apakah ia tahu ada cara lain untuk melakukannya .

Ada banyak "pemrogram yang baik" dalam bisnis saya yang kualifikasinya mampu mempertahankan cukup banyak kemampuan untuk menyatukan beberapa kode kerja, tetapi pekerjaannya cenderung tidak terstruktur dan sulit dipertahankan. Umumnya mereka dapat diajarkan, tapi ... mereka harus diajarkan.

dmckee
sumber
0

Departemen lain tempat saya bekerja menggunakan variasi pada tes standar kami. Tugas pertama adalah membalikkan kata-kata dalam string di tempat. Kemudian, gunakan kode itu untuk membalik urutan kata dalam string, masih di tempatnya. Alih-alih menggunakan bahasa pemrograman, mereka memiliki kandidat yang mendesain algoritma di atas kertas dan menjalankannya menggunakan papan Scrabble.

Peter Westlake
sumber
0

Saya akan meminta untuk menjelaskan (menggunakan bahasa alami) suatu algoritma untuk menghitung sesuatu dari fisika. Sesuatu yang sedikit lebih rumit dari formula sederhana dan kemudian saya akan bertanya bagaimana dia melihat perhitungannya dikemas dalam objek (tidak perlu pengetahuan OOP, Anda bisa menjelaskan apa yang Anda harapkan dari suatu objek). Dengan cara ini Anda bisa melihat pemikiran logisnya. Ini lebih penting daripada keterampilan pemrograman apa pun.

alinoz
sumber
0

Pertama, mereka mungkin cukup pintar, jadi skenario terburuk yang bisa mereka pelajari menjadi pemrogram yang baik dengan bimbingan. Namun, jika Anda membutuhkan mereka untuk terjun dan menjadi pemrogram yang baik sejak awal, minta mereka mengirimkan beberapa contoh kode yang telah mereka tulis.

Apakah ini satu atau dua fungsi multiguna raksasa atau apakah mereka merangkum fungsionalitas pada level abstraksi yang sesuai? Apakah angka ajaib sulit dikodekan? Apakah kode KERING? Apakah mereka memberikan variabel nama yang masuk akal atau semuanya singkatan atau huruf tunggal yang tidak dapat diuraikan? Bisakah Anda kebanyakan mengikuti logika kode mereka? Apakah mereka mengerti dasar-dasar OO?

Tanyakan apa yang mereka gunakan untuk kontrol versi (git / hg / svn / cvs / bzr, dll.). Pernahkah mereka membuat kode profil atau menggunakan debugger, dan jika ya yang mana atau apa strategi debugging generik mereka?

Jika mereka gagal dalam tes ini dan Anda membutuhkan pembuat kode yang baik dari awal, lewati orang ini. Kalau tidak, pekerjakan mereka, sarankan mereka membaca beberapa buku rekayasa perangkat lunak (misalnya, Kode Lengkap) selain pemrograman generik / buku CS.

(Sebagai catatan saya juga ilmuwan fisik yang berubah menjadi programmer.)

dr jimbob
sumber
-3

Karena dia masih di universitas atau baru saja selesai, dia terbiasa belajar. Mintalah dia membaca dan memahami buku Pola Desain dan setelah (atau selama) sebulan, berdiskusi dengan dia tentang topik-topik tersebut. (Saya pikir itu) ini bisa memberi tahu Anda banyak tentang kemampuannya (tidak hanya yang sulit (itu juga), tetapi juga bagaimana ia menangani memahami konsep-konsep baru, memahami penggunaannya, melihat pro dan kontra, dll.). Tetapi akan dikenakan biaya satu bulan waktu.

herba
sumber
8
-1 Pertanyaannya adalah tentang bagaimana cara mewawancarainya, bukan bagaimana membuatnya berhenti menginginkan posisi itu.
Peter Taylor