"Pengujian" papan tulis selama wawancara: cara yang sah untuk membuat cadangan kode (papan tulis) Anda? [Tutup]

15

Ketika saya mendapatkannya, memiliki kesalahan (bahkan salah ketik atau hilang ";") dalam kode papan tulis Anda akan sering dikenakan biaya beberapa poin wawancara. Menghindari itu pasti akan membuat satu kode pembacaan bukti berulang-ulang (kehilangan waktu dan mungkin energi / konsentrasi saraf) atau bahkan menggunakan algoritma yang lebih sederhana (dan dengan demikian kurang efektif) - dan kedua cara ini "mahal" lagi!

Jadi, mengapa tidak hanya menulis kode secepat elegan dan efektif seperti Anda akan memiliki kerangka kerja (unit) yang Anda inginkan dan kemudian hanya mengujinya (hanya di papan tulis)?

Adakah yang mencoba / melihat pendekatan ini? Apakah seluruh gagasan itu layak?

[Ini juga berlaku untuk kasing dan kertas tentunya]

mlvljr
sumber
23
Jika saya ingin seseorang menulis kode di papan tulis atau kertas selama wawancara, saya tidak akan berharap 100% benar secara sintaksis - itu membuat mereka terlalu banyak tekanan. Ya itu harus benar secara luas, tetapi kehilangan titik koma atau bahkan mendapatkan nama metode / profil parameter yang sedikit salah adalah (atau seharusnya) OK.
ChrisF
17
Saya penggemar coding papan tulis dalam wawancara, tetapi siapa pun yang mengharapkan kode papan tulis Anda sempurna secara sintaksis melakukan kesalahan. Intinya adalah untuk melihat bagaimana Anda menyerang masalah, bukan untuk melihat bahwa Anda dapat menghasilkan kode yang sempurna secara sintaksis dalam lingkungan yang sama sekali tidak realistis.
Tim Goodman
3
Anda harus dapat mengetahui mana yang dengan meminta mereka untuk memberikan komentar tentang apa yang mereka lakukan misalnya atau mendiskusikan solusi dengan mereka setelah mereka selesai.
ChrisF
6
Terlalu khawatir tentang sintaks dan pengejaan yang tepat akan membuat poin pewawancara di buku saya mahal.
JeffO
2
ini adalah apa kode psuedo untuk
jk.

Jawaban:

49

Saya benar-benar ingin Anda menguji kode papan tulis yang saya minta Anda tulis. Saya ingin Anda berbicara dengan lantang saat Anda menulisnya, memeriksanya, menemukan sebagian besar kesalahan sintaksis yang Anda buat, dan menunjukkan bagaimana itu bisa lebih efisien. Bahkan, itulah gunanya melakukannya di papan tulis. Ini bukan jenis sekali tembak, tulis-habis-habisan, uh-huh-you-get-70/100 semacam itu. Ini adalah percakapan, dimediasi oleh kode dan diadakan di papan tulis, bukan di meja saya.

Berikut ini beberapa cara bagus untuk gagal dalam tes "Pengkodean papan tulis":

  • tolak itu
  • jangan ajukan satu pun pertanyaan klarifikasi (bahasa, platform, sesuatu tentang persyaratan) DAN jangan katakan asumsi Anda tentang semua itu DAN buat asumsi yang jauh dari apa yang akan saya jawab

(misalnya: tulis di Fortran, tafsirkan "tampilan" atau "cetak" sebagai "tulis ke log peristiwa", hal semacam itu. Saya mungkin mengizinkannya jika Anda memberi tahu saya sebelumnya bahwa itu adalah asumsi Anda)

  • tanyakan pada saya bahasa apa yang saya inginkan, terima jawaban yang ada di deskripsi pekerjaan, dan kemudian tulis dalam bahasa yang berbeda karena Anda tidak nyaman dengan bahasa yang saya minta.

(Kami adalah konsultan di sini. Saya menguji perilaku konsultan sebanyak coding. Meminta klien hanya benar jika klien benar-benar punya pilihan. Mengontrol percakapan dengan orang-orang yang akan membayar Anda sulit. Ini adalah pelajaran 1. Ini adalah pelajaran 1. Ini adalah tandai melawan Anda pada topik apa pun, tetapi untuk spesifik "Anda menyewa seorang programmer X tapi saya tidak ingin menulis dalam X untuk Anda" Anda sekarang memiliki dua tanda hitam besar.)

  • tunjukkan kepada saya apa astronot arsitektur Anda dengan mengisi dua papan tulis dengan antarmuka, pola pabrik, abstraksi, suntikan, dan tes ketika saya ingin Anda "mencetak angka dari satu hingga 5".

(Anda pikir saya melebih-lebihkan tetapi saya memiliki seorang pria yang menggeneralisasikan masalah saya secara dramatis - berpegang pada contoh di atas katakanlah alih-alih 1 sampai 5 solusinya akan melakukan urutan bilangan bulat sembarang (dapatkan dari mana? Saya bertanya-tanya) dan berusia 5 tahun. kali selama orang lain - dan dia lupa untuk benar-benar memanggil fungsi yang melakukan pekerjaan. Berulang kali mendorong dan menyarankan bahwa dia berjalan melewatinya seolah-olah dia adalah debugger tidak menyebabkan dia memperhatikan bahwa fungsi itu tidak pernah dipanggil.)

Saya selalu berkata, "Apakah kamu suka itu?" "Bisakah kamu memperbaiki itu?" "tuntun aku melalui itu" dan sejenisnya. Biasanya, titik koma yang hilang terlihat, atau yang tidak diketahui, dalam percakapan itu. Jika tidak, saya biasanya menandai saraf.

Hal-hal lain yang mungkin menurut Anda tidak penting di papan tulis yang penting bagi saya:

  • setelah selesai, apakah saya masih bisa membacanya? Sudahkah Anda mencoreng, mencoret-coret, mengganti warna, menggambar panah, mencoret, dan umumnya meninggalkan kekacauan yang sekarang tidak dapat digunakan? Atau apakah Anda sadar bahwa papan tulis dapat dihapus, menunjuk ke baris kode di udara alih-alih melingkari / panah mereka, dan meninggalkan saya sesuatu yang bisa saya ambil dan simpan dalam file desain?
  • berapa banyak yang kamu tanyakan padaku sama seperti kamu melakukannya? Apakah Anda suka ditinggal sendirian dan tidak membahas kode Anda, atau apakah Anda melihat kode sebagai hal yang kolaboratif? Bagaimana Anda merespons ketika saya menanyakan sesuatu kepada Anda saat Anda masih menulisnya?
  • apakah Anda mencibir pada tugas "mudah" atau pingsan pada yang "sulit"? Apakah Anda tidak sopan diminta menunjukkan kode? Apakah Anda mudah diintimidasi oleh masalah teknis, atau sombong tentang kemampuan Anda menghasilkan algoritma yang baik?
  • apakah Anda memikirkannya, atau mengingat solusi yang Anda baca di suatu tempat? Saya biasanya bisa tahu masalah sulitnya.
  • apakah Anda berencana ke depan tentang di mana Anda mulai menulis? Orang-orang yang kehabisan papan tulis biasanya mulai terlalu rendah atau menulis terlalu besar - Saya tahu mereka tidak tahu ini akan menjadi 20 baris kode dan hanya menyisakan ruang untuk 5 orang - percaya atau tidak detail kecil ini dicerminkan dalam tugas estimasi yang lebih besar juga.
  • Apakah Anda sudah memeriksanya sebelum mengatakan bahwa Anda selesai? Apakah saya melihat Anda menunjuk atau memanfaatkan jalan Anda dan mengujinya sendiri sebelum saya memintanya? Ketika saya meminta Anda, atau menanyakan pertanyaan spesifik tentang itu, apakah Anda melihatnya lagi, atau hanya pergi dari memori? Apakah Anda bersedia mempertimbangkan bahwa draf pertama Anda mungkin tidak lengkap?

Saya sangat merekomendasikan berlatih coding di papan tulis. Saya selalu memperingatkan orang yang diwawancarai bahwa mereka akan diminta untuk melakukannya. Jika Anda memiliki akses ke papan tulis yang sebenarnya maka tentukan sendiri beberapa masalah sederhana dan praktikkan melakukannya di sana. Ini akan membantu kinerja dan kepercayaan diri Anda.

Maaf saya tahu saya berada di wilayah TL; DR, tetapi ada satu hal - pengkodean di papan tulis adalah tentang lebih dari pengkodean . Ini adalah ujian lebih dari pemahaman Anda tentang sintaksis. Ada banyak perilaku programmer yang baik yang ditunjukkan dalam respons Anda terhadap tugas ini. Jika Anda berpikir ini hanya tentang pengkodean, Anda kehilangan intinya.

Dalam percakapan lain tentang pengujian papan tulis, orang mengatakan saya mungkin menolak kandidat yang baik dengannya. Jujur, itu risiko yang bersedia saya ambil. Setiap putaran perekrutan berisi beberapa orang yang bisa saya pekerjakan. Beberapa orang dengan resume yang bagus, yang baik-baik saja di bagian tanya-jawab wawancara, berantakan di papan tulis dan jelas tidak bisa (dengan jumlah yang diminta) menulis kode sederhana dalam bahasa yang mereka klaim ketahui. Saya mungkin telah menyewa beberapa di antaranya. Alat apa pun yang mencegah itu adalah alat yang akan saya terus gunakan. Saya tidak pernah berakhir di tidak seorang pun untuk menyewa kapal karena semua kandidat saya mengacaukan papan tulis dan saya tidak berharap saya akan melakukannya.

Kate Gregory
sumber
2
Tampaknya menjadi satu jawaban yang bagus (dan sejujurnya jauh lebih menarik yang awalnya saya harapkan terima). Terima kasih banyak.
mlvljr
9
@KingOfHypocrites apakah Anda benar-benar membaca jawabannya? Saya tidak peduli tentang kehilangan titik koma. Lihat apa yang dikatakannya aku peduli. 20 menit di papan tulis memberi tahu saya banyak tentang Anda.
Kate Gregory
7
Saya ingin tahu apakah ada penelitian yang mengesahkan wawancara papan tulis. Pengungkapan penuh: Saya menjadi penasaran setelah gagal dalam wawancara papan tulis, sulit. Saya belum mewawancarai dalam beberapa tahun, tidak pernah menjadi pemain / presenter yang baik dan cukup banyak membeku. Wawasan Anda sangat bagus dan seandainya saya membaca ini dulu, saya akan berpikir tentang bagian dari proses wawancara yang jauh berbeda (dan berbicara lebih banyak). Yang mengatakan, banyak orang memiliki pendapat kuat tentang topik ini, tetapi itu tampaknya semua. Saya berasumsi ada pembenaran obyektif untuk praktik ini, didukung oleh data pendukung. Disana?
Suboptimus
3
+1 Sejujurnya, saya akan mendekati papan tulis sebagai proksi untuk latihan pemrograman berpasangan, berharap untuk mengikuti alur percakapan tentang tugas seperti yang disarankan Kate - meskipun saya lebih suka memiliki mesin dan benar-benar memasangkan program dengan kandidat (atau menjadi kandidat pasangan pemrograman dengan pewawancara). Bagaimana Anda membuat kode bersama sama pentingnya dengan bagaimana Anda membuat kode sendiri, dalam suatu organisasi dengan ukuran berapa pun.
Julia Hayward
4
Saya tahu ini sudah tua tetapi saya baru saja terhubung dengannya, dan saya ingin menunjukkan: salah satu ciri dari gangguan pemrosesan visual adalah kurangnya kemampuan untuk memperkirakan ruang tempat Anda menulis dan karena itu akhirnya kehabisan ruang. . Jika orang yang Anda evaluasi tidak hanya kehabisan ruang untuk lebih banyak baris, tetapi juga memiliki karakter yang semakin kecil menjelang akhir baris karena mereka menyadari mereka sudah mulai terlalu besar, mereka mungkin hanya memiliki ketidakmampuan belajar daripada tidak memahami berapa lama kodenya. Minta mereka untuk memperkirakan sesuatu yang non-spasial dan Anda mungkin mendapatkan hasil yang lebih baik.
Yamikuronue
17

Saya pikir Anda membuat asumsi yang salah di sini. Tidak mungkin saya berharap seorang kandidat menulis kode di papan tulis untuk bisa mendapatkan setiap ';' sempurna di tempat. Jika Anda mewawancarai di tempat yang menghukum Anda untuk itu maka saya sarankan mereka bukan organisasi yang ingin Anda bekerja :-).

Martijn Verburg
sumber
2
Saya gagal dalam satu wawancara karena, seperti yang mereka katakan, saya belum menulis kode yang dioptimalkan dengan sempurna pada tes pertama pada tes pena-dan-kertas (berasal dari sekolah get-it-working-with-unit-test-kemudian-optimalkan) ). Kemudian lagi, mereka tidak memiliki kerangka kerja pengujian, mereka hanya berasumsi mereka memiliki coders yang melakukannya dengan benar pertama kali!
Julia Hayward
3
@JuliaHayward - Pelarian yang beruntung untuk Anda oleh suara! Tidak percaya orang masih melakukan itu.
Martijn Verburg
7

Tes kertas atau papan tulis sangat tidak efektif. Saya ingat suatu kali saya melakukan wawancara di mana saya harus mencari kesalahan dalam beberapa kode di atas kertas. Salah satunya adalah bahwa kelas diwarisi dari antarmuka tetapi tidak ada implementasi anggota. Saya tahu ini kemungkinan merupakan salah satu kesalahan, saya mencarinya dan untuk alasan apa pun di tempat saya tidak bisa melihatnya (walaupun saya menyebutkan bahwa saya sedang mencari itu sebagai salah satu masalah).

Ketika itu terjadi, saya masih mendapatkan pekerjaan itu, tetapi itu membuat saya berpikir tentang apa yang telah terjadi. Dalam skenario realistis untuk hal semacam itu saya akan mendapatkan garis berlekuk saat ada sesuatu yang salah (ini adalah C # di Visual Studio) dan hal itu tidak akan dikompilasi. Saya tidak pernah memeriksa ini dalam kehidupan nyata karena itu tidak pernah terjadi (tidak mungkin) dan karenanya saya tidak bisa melihat hal semacam ini. Semi-titik dua yang hilang adalah contoh yang lebih ekstrem dari ini - benar-benar tidak realistis di dunia nyata kecuali jika Anda menulis di notepad dan mengirimkan kode Anda ke orang lain untuk dikompilasi!

Jika seseorang meminta untuk menggunakan papan tulis selama wawancara untuk mendukung sesuatu yang ingin mereka katakan, bagus, tetapi saya tidak akan pernah melakukannya sebaliknya.

FinnNk
sumber
2
Kisah Anda tampaknya membuktikan bahwa tes Anda efektif. Alih-alih secara umum bertanya "Bagaimana Anda meninjau kode?" mereka memberi Anda beberapa ulasan. Anda berbicara dengan lantang dan mengatakan sesuatu seperti "harus memastikan itu menerapkan segalanya" dan meskipun Anda tidak menemukan yang hilang, Anda menunjukkan kepada mereka bahwa Anda benar-benar tahu cara meninjau kode untuk kesalahan, bukan hanya menjawab pertanyaan tentang hal itu . Anda juga mungkin tidak menunjukkan banyak kesalahan yang mungkin dimiliki beberapa orang, dan mungkin Anda melihat beberapa kesalahan lain juga. Dan kemudian Anda mendapatkan pekerjaan itu. Kedengarannya efektif bagi saya, untuk semua orang!
Kate Gregory
2
Juga, kehilangan titik koma terus diberhentikan sebagai bukan negatif yang nyata. Salah ketik sintaksis dari bahasa pilihan Anda secara konsisten berarti Anda adalah pengembang yang lebih lambat daripada seseorang yang telah menginternalisasi semua sintaksis itu. Anda terus-menerus kembali dan memperbaiki hal-hal yang Anda lupa. Ada kemungkinan besar Anda terlempar dari ritme Anda dengan terus-menerus mengomel dari IDE. Selain itu, orang-orang yang meninggalkan semua titik koma mereka di papan tulis dan tidak melihat ketika Anda meminta mereka tidak berada pada tingkat yang sama dengan para pengembang yang baik yang sekali seminggu lupa untuk mengetikkan titik koma di IDE dan kemudian memperbaiki Itu.
Kate Gregory
2
+1 itu tidak efektif. Sama sekali tidak membuktikan apa-apa. Saya cukup yakin banyak orang yang gagal tes lebih baik daripada rata-rata pria yang lulus.
3
@ Kate - Aku tahu dari mana asalmu, tapi aku tidak setuju - terutama karena sekarang aku duduk di sisi lain meja. Jika seseorang kehilangan semi-titik dua secara teratur saya ingin melihat bahwa dalam IDE tidak dalam pengaturan buatan. Ini seperti kode kunci ke kantor saya - saya bisa mengetikkan nomor tanpa berpikir, meminta saya untuk menuliskannya dengan kepercayaan 100% dan saya akan berjuang. Wawancara tidak akan pernah 100% realistis, jadi saya tidak ingin keluar dari cara saya untuk membuatnya lebih kurang.
FinnNk
1
Saya jauh lebih kecil kemungkinannya untuk menghilangkan sintaks penting pada keyboard daripada di papan tulis, karena mengetik diperkuat oleh memori otot. Namun, salah ketik (dan cerewet dari editor saya, atau pasangan pasangan), terutama dalam situasi pemrograman pasangan, kemungkinan akan melemparkan saya ke dalam lingkaran umpan balik di mana kesalahan memperkuat saraf yang menyebabkan kesalahan. Saya pikir polyglots cenderung dirugikan daripada kandidat monolingual.
dcorking
5

Saya sudah melakukan itu. Pada sebuah wawancara saya diminta untuk menerapkan pengkodean run-length pada papan tulis, dan sementara saya memotong beberapa kode (menjelaskan apa yang saya singkatan) agar sesuai dengan papan tulis saya masih datang dengan koleksi tes untuk unit ini, dan menelusuri salah satunya untuk memvalidasi solusi saya dan menunjukkan bagaimana pengujian akan membantu. Saya ditawari posisi itu jadi saya menganggap pengujian itu membantu, atau paling buruk tidak mengganggu.


sumber
4

Saya menggunakan pendekatan ini ketika mengambil tes untuk sekolah. Saya pertama-tama menulis fungsi, lalu ke samping saya menulis tabel kecil input, output, dan vars. Saya telah menangkap beberapa kesalahan bodoh dengan cara ini. Pengujian, bahkan pengujian di atas kertas / papan tulis, selalu lebih baik daripada tidak menguji.

Saya tidak setuju dengan panik atas titik koma dalam pengaturan profesional, meskipun.

Catatan untuk memikirkan nama
sumber
4

Meminta seorang kandidat untuk menulis kode di papan tulis adalah konyol. Ada alat modern seperti snippits, jsfiddle, dan intellisense. Selain itu, tidak ada insinyur yang diminta untuk menghafal sintaksis. Sintaksnya dicari dan dirujuk. Jika Anda menghafal kode, Anda mungkin tidak menghabiskan waktu dalam karier Anda mempelajari cara membuat kode di lingkungan multantan, mengoptimalkan sintaksis atau bahkan lingkungan yang dihosting.

James Bailey
sumber
3
Siapa pun yang setengah layak dalam bahasa tertentu harus memiliki sintaksis hafal dari hanya menggunakannya banyak. Jika seorang pria menulis kode C # sepanjang hari, dan tidak tahu sebagian besar sintaks di atas kepalanya, dia akan menjadi lambat dan mengerikan. Anda juga bisa mencari tahu apa 2 ^ 8 itu, tetapi pengembang mana pun yang layak memberi tahu mereka pasti tahu apa yang ada di benak mereka hanya karena sering menjumpainya. Sama halnya dengan sintaks.
whatsisname
1
Itu tidak benar. Sintaks menghafal di hari dan usia ini tidak perlu. Untuk mengatakan pengembang yang tahu cara membuat kode dalam berbagai bahasa seperti sql, vb, c #, javascript dan menggunakan json, angularjs, telerik, dan lain-lain tidak sebanding dengan garam mereka karena mereka tidak dapat menghafal sintaksis adalah konyol. Ada lebih banyak untuk menjadi insinyur perangkat lunak yang baik daripada operator matematika seperti daftar Anda. Bagaimana dengan memahami persyaratan, struktur desain, pola, pengalaman industri? Secara harfiah ada cukup sintaks dalam bahasa dan perpustakaan untuk mengisi bagian belakang truk.
James Bailey
Ini bukan masalah menjadi "perlu". Itu jika Anda menggunakan sesuatu dengan cukup sering, Anda akan mengingatnya. Jika beberapa pria mengaku sebagai pengembang SQL tetapi tidak dapat menulis pernyataan bergabung dari atas kepalanya, itu karena dia salah satu) tidak kompeten b) berbohong tentang kualifikasinya, atau c) memiliki otak yang sangat aneh, semua tiga situasi saya tidak mau harus berurusan dengan.
whatsisname
1
"Bergabung" bukanlah yang biasanya ditanyakan di papan tulis. Seringkali teka-teki dan hal-hal yang tidak relevan dengan pekerjaan. Bagaimana jika kandidat disertifikasi, memiliki gelar dan memiliki resume yang kuat. Anda masih berpikir dia "tidak kompeten" karena dia tidak kode di papan tulis untuk mencari nafkah? Orang pemasaran tidak diminta untuk menulis strategi pemasaran triwulanan di tempat wawancara. Itu konyol. Anda harus dapat berbicara dengan kandidat dan dengan mudah menyimpulkan jika mereka dapat kode.
James Bailey
3

Ketika sebuah restoran ingin mempekerjakan seorang koki, pemiliknya tidak memintanya untuk memasak "pot au feu" dengan tusuk gigi dan topi.

Jangan meminta pengembang untuk menulis kode di papan tulis dalam sebuah wawancara.


sumber
3
Dan kapan ditanya?
mlvljr
Selama wawancara
3

Pengodean papan tulis sulit. Saya tidak pernah diperkenalkan dengan hal itu sampai saya diwawancarai oleh Disney. Tidak tahu apa yang diharapkan dan tidak bisa men-debug itu, saya tersandung melalui itu membicarakannya dan menyelesaikan masalah, tetapi dalam kode pseudo agak cara. Ketika mereka bertanya, bisakah itu berjalan.

Maksud saya yakin itu bisa Anda hanya perlu memperbaiki kesalahan sintaks, benar. Saya percaya mereka kehilangan kandidat yang sangat baik jika saya tidak dipekerjakan karena papan tulis. Saya melihat kualifikasi dan sepertinya saya memenuhi syarat untuk posisi itu dan dapat melakukan pekerjaan itu. Saya unggul di pekerjaan saat ini dan berharap bisa bersama mereka.

Terima kasih atas masukan Anda Kate, saya membaca setiap kata. Hanya bagi saya sebagai seorang programmer, papan tulis benar-benar tidak menunjukkan keahlian Anda. Saya seorang programmer hebat yang bekerja dalam berbagai bahasa. Saya tahu bahasa yang harus saya ikuti, tetapi di papan tulis tiba-tiba saya lupa.

Saya membangun integrasi kompleks dan pemrosesan kartu kredit, tetapi di papan tulis saya tidak dapat mengingat bagaimana melakukan sintaksis yang tepat tidak ada yang mendorong saya.

Sebagai majikan saya suka pengujian papan tulis; Namun, saya menyewa seorang programmer saya ingin melihat keterampilan mereka yang sebenarnya jika mereka melakukan pekerjaan itu. Sangat bagus jika mereka dapat berkomunikasi, tetapi saya perlu melihat mereka dapat menyelesaikan masalah.

David
sumber
1
Terima kasih atas masukannya, sepertinya benar tentang apa yang saya pikirkan ketika mengajukan pertanyaan - seseorang dapat benar-benar terjebak dalam kode papan tulis tidak tahu apakah itu (sudah) benar, dan tidak memiliki sarana untuk "benar-benar" memeriksanya. Solusi rumit - tulis tes papan tulis! ;)
mlvljr