FizzBuzz - benarkah? [Tutup]

60

Ketika datang ke pertanyaan "tes wawancara", subjek FizzBuzz sering muncul. Ada juga pos Horor Pengodean tentang hal itu.

Sekarang, jika Anda repot-repot membaca situs seperti ini, kemungkinan besar Anda tidak akan berada dalam demografi pemrogram yang akan menemukan FizzBuzz apa pun selain sepele.

Tetapi apakah benar 99% programmer akan berjuang dengan itu?

Benarkah?

Apa bukti yang mendukung hal ini?

Beberapa contoh kehidupan nyata akan sangat membantu dalam menjawab pertanyaan ini.

DanSingerman
sumber
57
Itu bukan 99% programmer, itu 99,5% pelamar (banyak yang bukan programmer).
webbiedave
4
Saya tidak percaya sampai saya mendapatkannya di sebuah wawancara - saya kemudian mendapatkan pekerjaan itu, dan kemudian masih mengobrol dengan CEO tentang hal itu. Ternyata 99% benar. Oo
Fishtoaster
3
Saya selalu berpikir pertanyaan fizzbuzz adalah mitos, atau mungkin hanya untuk pemula yang baru lulus dari perguruan tinggi, tetapi suatu hari saya benar-benar ditanyai dalam sebuah wawancara. Ya, apakah banyak kandidat benar-benar mengalami masalah dengan ini?
DarenW
2
Saya secara rutin memberikan tes FizzBuzz di wawancara dan secara rutin membuat orang gagal. Namun satu desainer grafis melewatinya suatu hari ..... Terkejut saya sedikit :)
Brandon Wamboldt
4
@Rogue Coder - Hei, kami tidak bodoh, hanya aneh. Dan kebanyakan dari kita mengisap matematika.
Inaimathi

Jawaban:

46

99%? Tidak. Persentase yang signifikan? Iya. Dari pengalaman langsung saya sendiri dalam mewawancarai orang-orang, saya dapat memberikan kesaksian tentang hal ini. Ini mungkin tampak tidak berarti bagi Anda, tetapi ada banyak orang di bidang pemrograman yang telah memalsukan jalan mereka selama bertahun-tahun dan melamar posisi non-entry level dan gagal yang ini.

Bahkan jika Anda BISA dengan mudah menyelesaikannya, tetapi Anda memberi saya statis besar tentang diminta untuk melakukan tugas kasar seperti itu akan diperhitungkan terhadap Anda. Berada dalam tim berarti harus kadang-kadang melakukan hal-hal yang mungkin tidak Anda sukai tetapi perlu. Jika benar, sebelum kita mulai bekerja bersama, Anda pikir akan lebih baik untuk mencoba dan menegaskan status khusus Anda untuk melakukan sesuatu yang saya minta Anda lakukan maka itu akan bertindak sebagai tanda terhadap Anda.

Saya tidak peduli seberapa elegan solusi Anda (walaupun itu akan menyenangkan) tetapi melihat Anda menikamnya di papan tulis dan berbicara melalui Anda menunjukkan bahwa Anda setidaknya mau mengambil bacokan itu . Jika Anda marah dan mengatakan sesuatu seperti "Saya seorang pemecah masalah, bukan monyet kode!" maka Anda akan dijatuhkan pasak.

Saya telah meminta orang yang diwawancarai untuk menolak bahkan untuk mulai mencobanya. Cukup tolak saja. Tidak. Eh Tidak akan melakukannya Saya mengajukan satu atau dua pertanyaan sopan, berterima kasih atas waktu mereka dan menutup wawancara.

Saya mengatakan ini sebagai manajer dan sebagai pengembang.

Todd Williamson
sumber
1
Apa alasan mereka menolak mencobanya?
Jon Hopkins
3
Saya tidak pernah langsung bertanya kepada mereka. Setelah penolakan kedua mereka, saya akan mengajukan beberapa pertanyaan lagi dan kemudian menutup wawancara. Jika saya akan MENebak, itu karena mereka terlalu gugup untuk mencoba (jika saya menjadi amal) atau bahwa mereka sebenarnya tidak bisa mengetahuinya di tempat (jika saya menjadi lebih sinis).
Todd Williamson
1
Saya kenal seorang pria yang menolak kode dalam wawancara. Dia juga menolak untuk melakukan apa pun yang dapat dia cari di Googling dalam beberapa detik. Dia adalah "pemecah masalah".
kirk.burleson
4
Kemudian lagi, pengkodean papan tulis adalah masalah yang diberikan pewawancara kepada Anda ... yang perlu diselesaikan, mungkin? Bagi saya menolak kode dalam wawancara sama dengan menolak memecahkan masalah yang dimiliki pewawancara. Oleh karena itu bertentangan dengan istilah "pemecah masalah" dan itu lebih seperti orang itu adalah "penolak masalah".
Spoike
@Seperti nggak karena pemecah masalah tidak perlu tahu sintaks bahasa pemrograman apa pun, sekarang benarkah?
Pierre Arlaud
25

Saya berpikir bahwa 99% programmer yang melamar pekerjaan (dan tidak mendapatkannya) mungkin berjuang untuk itu. Tetapi tidak 99% programmer yang produktif memegang pekerjaan.

Itulah sifat dari proses pencarian kerja modern kita. Banyak orang yang mendaftar tidak memenuhi syarat.

Posting Coding Horror itu juga berbicara tentang cara kita mengajar Ilmu Komputer saat ini. Di masa lalu (khususnya di MIT), Anda diminta untuk mempelajari hal-hal seperti Lisp, yang cukup banyak mengharuskan Anda untuk memahami konsep seperti rekursi.

Saat ini orang diajarkan Java karena banyak digunakan dalam industri, dan fokusnya telah beralih ke sintaks daripada pemikiran pemrograman yang mendalam. Saya tidak suka Java; pada kenyataannya, saya pikir itu adalah bahasa pemrograman pertama yang ideal. Tetapi saya belum melihat instruktur saya mengajarkan prinsip pemrograman yang mendalam dengannya.

Robert Harvey
sumber
11
Ya saya pikir sistem pendidikan kita (setidaknya di AS) adalah bagian besar dari ini. Saya kenal seseorang yang mendapat gelar 2-tahun dalam Pemrograman Perangkat Lunak, lulus dengan pujian, dan tidak bisa membaca atau menulis kode.
Rachel
8
Argumen menentang mengajar Jawa adalah argumen yang lemah. Konsep dapat diajarkan dalam sebagian besar bahasa (recusrion mudah ditulis di Jawa misalnya). Saya tidak setuju bahwa pengajaran konsep yang diajarkan semakin lemah, tetapi saya tidak menyalahkannya secara sewenang-wenang pada bahasa implementasi.
Steven Evers
1
Oh, hal-hal seperti Rekursi diajarkan, mereka hanya tidak terbiasa. Anda mendapatkan nilai yang sama untuk menulis pernyataan 100 baris IF seperti yang Anda lakukan untuk menulis fungsi rekursif (setidaknya Anda lakukan di mana saya pergi), dan pernyataan 100 baris IF lebih mudah untuk menulis ketika Anda sedang terburu-buru (yaitu Anda sudah tidak mengerjakan pekerjaan rumah sampai 5 menit sebelum Anda perlu menyerahkannya)
Rachel
1
@SnOrfus: Saya juga tidak menyalahkan Jawa. Saya tidak membuat argumen menentang pengajaran Java. Ya, Anda dapat mengajarkan konsep-konsep ini di Jawa, tetapi saya belum melihat itu terjadi, tidak dalam kelas Java yang saya ambil. Yang mengatakan, MIT awalnya memilih Skema untuk kelas pemrograman pengantar mereka, karena memiliki sintaks yang sangat sederhana, sehingga Anda mulai berpikir tentang konsep pemrograman awal, tanpa harus banyak fokus pada sintaksis bahasa.
Robert Harvey
4
Siapa yang pergi ke universitas di mana mereka "mengajar Jawa". Memprogram sekolah bahasa kurang berguna (terlepas dari itu Java, C ++, Lisp atau apa pun); Apakah itu yang Anda miliki di AS? Di mana saya belajar CS, Anda sedikit banyak belajar sendiri bahasa prog seperti yang dipersyaratkan (pengecualian akan menjadi kelas Paradigma, saya kira). Kursus-kursus universitas mengajarkan matematika, teori CS, paradigma pemrograman berganda, kalkulus, dll. Siapa pun yang lulus dari itu dapat dengan mudah menyelesaikan FizzBuzz, karena kami harus menyelesaikan masalah yang lebih sulit hanya untuk lulus kursus.
Andres F.
20

Aku benci mengatakan ini tetapi

Alasan utama saya melihat pertanyaan pemrograman gagal dijawab adalah kesalahan penanya daripada penjawab.

Saya dapat dengan jelas mengingat satu wawancara di mana saya ditanya bagaimana membuat algoritma pencarian koleksi tertentu yang akan berjalan dalam waktu yang konstan (Jumlah pencarian yang sama terlepas dari berapa banyak item dalam koleksi). Saya meraba-raba dan menemukannya selama 20 menit sebelum menyerah. Saat itulah jenius melakukan wawancara melanjutkan untuk menunjukkan jawaban sebagai sesuatu yang beroperasi dalam waktu yang hampir konstan, tetapi masih dalam waktu yang tidak konstan. Agak seperti mengatakan "Beri aku jawaban nol" dan kemudian menerima 0,1.

Singkatnya adalah bahwa saya telah melihat terlalu banyak kasus di mana seseorang yang diwawancarai mengajukan pertanyaan yang gagal memenuhi kriteria berikut:

  1. Mereka tahu semua kemungkinan jawaban yang benar.
  2. Mereka tahu mengapa jawaban yang benar itu benar.
  3. Mereka tahu bagaimana sebenarnya menyediakan informasi yang cukup tanpa memberikan jawabannya.
  4. Pertanyaan "pemecahan masalah" tidak bergantung pada pengetahuan tentang fakta yang dirahasiakan (ini adalah masalah terbesar yang pernah saya lihat).
  5. Butuh waktu kurang dari 1 menit untuk menulis jawabannya jika Anda tidak harus mengetahuinya. Jika hanya butuh 5 menit untuk mengetik kode, itu benar-benar membutuhkan lebih banyak pemecahan masalah daripada yang bisa masuk ke bagian verbal wawancara.
  6. Pertanyaan didasarkan pada lebih dari sekadar "Masalah yang pernah saya temui atau saya pernah diberikan di sekolah sehingga Anda harus tahu bagaimana menyelesaikannya sekarang ". Saya berani bertaruh Anda memiliki lebih dari 2 menit untuk menjawabnya, mengapa Anda tidak memberi kesempatan yang sama kepada kandidat.

Serius (1), saya pikir meminta orang untuk menulis kode di bagian verbal wawancara itu bodoh.

Serius (2), saya pikir mewawancarai orang tanpa meminta mereka untuk menulis kode juga bodoh.

Serius (3), Anda harus memberi mereka "pekerjaan rumah", meminta mereka untuk membawa sampel kode, atau memberi mereka laptop dan beberapa pertanyaan dan kantor yang tenang untuk mengerjakannya. Kemudian tinggalkan mereka sendirian saat mereka mengerjakannya. Saya biasanya menggunakan pendekatan yang terakhir karena membatasi kemampuan mereka untuk mendapatkan bantuan dari luar (cheat) dan saya dapat mengatur waktu.

MIA
sumber
Apakah Anda berdiskusi dengan pewawancara menjelaskan mengapa solusi mereka bukan waktu yang konstan? Jika saya pewawancara dan Anda dapat dengan ringkas dan tanpa kebencian meyakinkan saya, saya salah saya akan mempekerjakan Anda di tempat.
Nemi
1
@Nemi - Ya saya lakukan. Orang yang dimaksud bukan orang yang mempekerjakan otoritas, tetapi saya memang mendapatkan tawaran pada posisi itu.
MIA
8
int? result; for (int i = 0; i < int.MaxValue; i++) { T item = (i < array.Length) ? array[i] : someDummyItem; if (item == whatWereLookingFor) result = i; } return result;- waktu konstan :)
konfigurator
Benar saya jika salah, tapi saya pikir tabel hash memiliki waktu akses yang konstan, dengan asumsi mereka dilakukan dengan benar dan tidak ada tabrakan. Oleh karena itu, pencarian menggunakan fungsi hash harus dimungkinkan dalam waktu yang konstan.
Trylks
Hash dapat mengalami benturan. Itu sebabnya biasanya dinyatakan sebagai waktu konstan diamortisasi.
Rig
10

Yang perlu Anda lakukan adalah mencari di FizzBuzz. Ada gelombang besar posting blog di atasnya. Secara umum, blogger mengatakan, "Saya mengatakan kepada orang-orang untuk menulisnya dalam [beberapa bahasa] dan ini adalah jenis kesalahan yang mereka buat:" dan kemudian membuat daftar beberapa jebakan. Kesenangan dimulai pada komentar di mana orang mengatakan "ha! Itu sepele dalam [beberapa bahasa lain], yang harus Anda tulis adalah ini:" diikuti oleh kode. Komentar berikutnya selalu menemukan bug di yang pertama. Sepertinya beberapa dev yang sangat baik tidak melakukannya dengan benar pertama kali, dalam bahasa apa pun. Beberapa kesalahan:

  • Saya meminta 1 hingga 100 dan Anda melakukan 1 hingga 99 atau 0 hingga 99
  • mengacaukan apakah akan mencetak nomor bersama dengan desis dan / atau buzz
  • perbedaan pendapat tentang "fizzbuzz" vs "fizz-buzz"
  • optimisasi yang terlewatkan, seperti membandingkan dua kali ketika sekali akan dilakukan
  • lebih banyak

Ketika saya merekrut, saya meminta orang-orang untuk memberi kode di papan tulis untuk saya, tidak ada yang sedekat itu (saya tahu, Anda tidak berpikir itu rumit) dan banyak kandidat gagal total. Maksud saya suka menulis vb-style If, ​​Then, End If tetapi menempatkan braces juga (hanya untuk berada di sisi yang aman saya kira) atau menulis C # (dan bertanya terlebih dahulu, C #?) Tetapi tidak memiliki satu titik koma di mana pun. Jangan mulai saya dengan kesalahan logika!

Kate Gregory
sumber
2
@ Jeff kebanyakan devs pertama menulis sesuatu yang tidak dapat dikompilasi. Yang baik melihat dan memperbaiki kesalahan sintaksis sederhana. Programmer yang baik atau tenang yang tertekan baik menulis fungsi tetapi tidak ada kode untuk menyebutnya, menulis sesuatu yang tidak super dioptimalkan, menderita (dan jangan melihat) off-by-one, atau mungkin kehilangan satu atau dua kesalahan sintaksis. Programmer yang buruk menulis kode yang hampir tidak dapat dikompilasi, melakukan hal yang sepenuhnya salah, dll. Misalnya perulangan ke 3 atau ke 5, karena mereka ada dalam pertanyaan, alih-alih perulangan ke 99 atau 100 atau 101 (ish.) Atau bahkan tidak ada kode sama sekali. Anda benar-benar tidak percaya sampai Anda melihatnya.
Kate Gregory
7
Jika {"Jika {} Lalu {} EndIf" memenuhi syarat sebagai gagal total} Kemudian {Gaya wawancara Anda rusak dan / atau Anda sangat beruntung dapat memecat kandidat berdasarkan basis sepele seperti itu} EndIf
Sparr
7
Saya memprogram setidaknya selusin bahasa setiap bulan. Dudukkan saya di depan komputer dan minta saya bekerja di komputer yang belum saya sentuh dalam sebulan dan saya akan melakukan kesalahan seperti itu selama lima menit pertama ketika saya kembali ke alur, biasanya kesalahan saya terarah. oleh kompiler atau juru bahasa.
Sparr
2
@Parr - yakin. Jadi di papan tulis jika saya meminta Anda untuk melihatnya, Anda mungkin akan melihatnya dan berkata "oops - saya menggunakan banyak bahasa." Jika tidak, saya akan mengatakan "Anda menulis bahasa apa itu?" dan kemudian kamu akan. Itu bukan pertanyaan jebakan atau jebakan. Beberapa orang sebenarnya tidak pernah menulis kode dan mengklaim bahwa mereka memilikinya. Itulah inti dari pertanyaan seperti ini.
Kate Gregory
2
Tetapi saya pikir pertanyaan-pertanyaan itu tidak baik untuk itu. Saya tidak bisa memberi tahu Anda, lima menit sebelum utas komentar ini dimulai, apakah VB membutuhkan tanda kurung di sekitar blok kode. Saya bisa memberi tahu Anda bahwa If / Then / EndIf sebagian besar tampak seperti VB [.Net]. Dan saya menulis kode dalam VB selama ... sekitar dua jam setiap tiga bulan (tugas rentacoder.com, saya tidak pernah mengambil pekerjaan VB nyata, saya benci itu).
Sparr
10

Saya telah membaca artikel Coding Horror yang Anda sebutkan, dan pendapat saya adalah bahwa Jeff benar ... tetapi kapan terakhir kali ia diwawancarai?

Ketika Anda diwawancarai, Anda biasanya dalam stres tinggi, dan Anda sering harus menjawab pertanyaan-pertanyaan teoritis (tidak ada kecerdasan, tidak ada google, tidak ada resharper, ... hanya ingatan Anda yang terganggu oleh stres). Itu sama dalam tes. Stres tidak membantu Anda.

Saya perhatikan bahwa satu-satunya cara untuk mengetahui apakah seseorang cocok untuk suatu posisi adalah bekerja dengannya untuk sementara waktu ... Ambil saja 10 orang terakhir yang Anda sewa dari 100 (mungkin lebih), berapa banyak yang benar-benar bagus mempekerjakan???

Seorang majikan harus menyewa pemecah masalah, bukan monyet kode yang tahu tentang modulos.

Anda tidak dapat menguji "untuk sementara waktu semua pelamar", jadi mewawancarai mereka diperlukan. Itu sebabnya saya memfokuskan pertanyaan saya pada hal itu (pemecahan masalah) dan melakukan pengecekan referensi sebelumnya.

Pendapat saya adalah bahwa FizzBuzz berbahaya bagi perusahaan yang mencari pengembang untuk menahan pertumbuhannya.


sumber
28
IMHO masalahnya di sini adalah bahwa FizzBuzz adalah pertanyaan rendah sehingga jika Anda tidak bisa menjawabnya bahkan di bawah tekanan Anda layak membuat orang tertawa di wajah Anda jika Anda menyebut diri Anda seorang "programmer". Jika itu sesuatu yang sedikit lebih rumit, seperti "menerapkan semacam gelembung", maka alasan dan kekhawatiran ini akan dibenarkan, tetapi tidak untuk FizzBuzz.
dsimcha
23
Fizzbuzz baik pada apa itu untuk: menyaring orang-orang yang tahu apa-apa dari orang-orang sesuatu . Dan mengetahui sesuatu mungkin masih belum cukup untuk melakukan pekerjaan itu. Ini bukan tes keputusan perekrutan, ini adalah tes "apakah Anda akan membuang-buang waktu dalam wawancara". Beberapa manajer perekrutan mencoba mengambil fizzbuzz terlalu jauh untuk melakukan pekerjaan mereka untuk mereka.
Steven Evers
31
Ya ampun, modulo bukan semacam operator esoterik. Ini adalah operasi inti yang harus dimiliki semua pengembang jika mereka ingin menyebut diri mereka pemrogram profesional. Bagaimanapun, jika seseorang dapat menulis FizzBuzz itu tidak berarti Anda mempekerjakan mereka. Ini hanya titik awal yang cepat untuk melihat apakah orang ini bahkan dapat mencoba untuk mengatur aliran kontrol yang diperlukan untuk menyelesaikan tugas.
webbiedave
12
Saya pikir FizzBuzz berguna hanya karena itu sangat sepele. Ini membutuhkan perulangan for, pernyataan if dua, modulo dan cetak. Siapa pun yang memiliki pengalaman pemrograman yang berarti harus bisa mengeluarkannya sementara hampir tidak berpikir. Jika seseorang berjuang dengan itu dalam sebuah wawancara, saya menganggap itu tes lakmus yang valid.
Adam Crossland
11
@ snorfus: Diarsipkan di bawah "masalah orang lain." Saya lebih suka ketinggalan perahu pada satu pengembang yang baik dengan melumpuhkan kecemasan sosial daripada membuang-buang waktu dan pelatihan uang yang berharga dan menunggu hasil dari seseorang tanpa bakat untuk pemrograman. Tidak bisa menangani diri sendiri di sekitar manusia lain? Lihat terapis.
Aaronaught
10

Saya baru-baru ini ditugaskan untuk mewawancarai lebih dari 50 programmer untuk posisi senior di mana mereka akan bekerja sebagian besar dengan PHP.

Saya melemparkan masalah fizzbuzz pada ujian skrining, kebanyakan untuk menghibur diri saya dan karena saya ingin sepuluh pertanyaan bagus dan hanya punya sembilan. Maksud saya, pada saat itu adalah untuk menunjukkan kepada orang-orang bahwa kita dapat bersenang-senang juga, bahkan pada pertanyaan wawancara.

80% dari pelamar memecahkan masalah, tetapi tidak menggunakan operator modulus.

15% dari pelamar tidak dapat memecahkan masalah.

5% pelamar menyelesaikan masalah menggunakan operator modulus.

Sementara pengambilan sampel saya sangat terbatas (50 pelamar dari satu negara), saya dapat memberi tahu Anda bahwa:

95% dari mereka memiliki gelar BS atau lebih tinggi dalam kurikulum CS (universitas di sini bersaing dengan mencoba membuat CS terdengar lebih spektakuler).

Saya benar-benar kagum. Yah, ketakutan .. tapi kagum. Saya tidak berpikir saya akan mendekati mereproduksi hasil, karena masalahnya menjadi sangat populer. Ini menunjukkan kepada saya bahwa 5% dari pelamar saya mungkin bukan programmer super, tetapi setidaknya mereka membaca blog terkait pemrograman.

Pos Tim
sumber
Saya akan berpikir bahwa menggunakan opertor modulous adalah yang paling jelas, saya terkejut bahwa 95% orang yang berhasil menyelesaikan masalah, menggunakan sesuatu yang lain. Mungkin itu karena mereka lulusan baru dan apakah matematika itu sendiri?
jmoreno
Saya tidak pernah belajar operator modulus di kelas saya. Jika saya tidak melakukan magang atau menghabiskan waktu berkontribusi untuk proyek-proyek open source, saya tidak akan pernah mempelajarinya sampai saya masuk ke industri. Juga, saya diajarkan di salah satu kelas ilmu komputer intro saya bahwa operator ternary adalah praktik pengkodean yang buruk karena terlalu membingungkan dan sulit dibaca.
Robert Fraser
Apa yang mereka gunakan alih-alih operator sisanya? x - (x/y)*y?
CodesInChaos
9

Dalam putaran perekrutan terakhir saya, saya memiliki 3 pekerja konstruksi dengan 0, saya ulangi nol, pendidikan pemrograman atau pengalaman berlaku untuk posisi pengembang perangkat lunak. * Jadi itu bagian bawah laras. Jika Anda mengasumsikan distribusi keterampilan yang normal, maka Anda dapat melihat bagaimana tingkat keterampilan rata-rata akan sangat rendah dan bahkan 'di atas rata-rata' (di antara pelamar) masih akan relatif buruk.

Sekarang, jika Anda hanya membuat pelamar yang memiliki kemampuan pemrograman, Anda akan menemukan bahwa Anda sekarang memiliki:

  1. pembohong
  2. penggemar kata kunci (saya pernah membaca artikel tentang .NET)
  3. programmer sebenarnya buruk
  4. orang yang menggunakan teknologi untuk menyelesaikan proyek, tetapi tidak mempelajarinya (lihat pertanyaan fizzbuzz tentang idisposable untuk mengidentifikasi ini)

Selain itu, beberapa pertanyaan 'fizzbuzz' yang saya lihat spesifik untuk domain. Anda dapat secara progresif mengembangkan dengan bahasa / kerangka x selama beberapa tahun (karenanya z tahun pengalaman dengan x) dan belum menemukan bagian-bagian tertentu darinya (pengembang perpustakaan tidak tahu banyak tentang pengembangan komponen UI untuk misalnya.)

Demikian juga, banyak pengembang melakukan pengembangan pemeliharaan hari ini, sehingga keterampilan arsitektur / desain mereka mungkin lemah di beberapa daerah.

Sekarang, saya tidak yakin apakah 99% akurat, tetapi IME masih cukup tinggi. Setidaknya dalam kisaran 80%.

* Tidak, kami tidak menelepon atau bahkan melihat kedua aplikasi ini.

Steven Evers
sumber
3
Kami memiliki situasi yang sama, tetapi karena kontrak kami dengan klien mengatakan kami akan memiliki 4 dev penuh waktu yang ditugaskan untuk proyek tersebut, dan proyek itu pada dasarnya selesai, orang yang menggantung lembaran batu itu harus belajar pemrograman pada dolar klien untuk 3 minggu tersisa di kontrak.
Tangurena
Saya juga melihat sesuatu seperti itu terjadi ketika beberapa program tunjangan pemerintah / asuransi pengangguran mengharuskan orang yang menerima tunjangan berlaku untuk sejumlah pekerjaan per minggu. Bahkan ketika program-program tersebut memiliki semacam persyaratan nominal yang berlaku bagi penerima untuk pekerjaan yang benar-benar memenuhi syarat untuk mereka, sumber daya untuk menilai pekerjaan apa yang memenuhi syarat untuk mereka dan menegakkan persyaratan tertentu dari persyaratan "melamar pekerjaan" sangat terbatas .
Daniel Martin
8

Ya benar Mungkin tidak 99% tetapi masih cukup tinggi. Saya biasa mewawancarai mahasiswa ilmu komputer untuk magang dan bekerja penuh waktu. Saya akan mewawancarai sekitar 25 siswa di sebuah perguruan tinggi. Kami diberitahu untuk tidak menanyakan pertanyaan yang sama, karena para siswa berbicara. Saya segera mengetahui bahwa itu tidak masalah, karena saya hanya akan mendapatkan 3 atau 4 siswa dari 25 yang dapat menjawab pertanyaan pertama saya. "Tulis strcmp"

Saya meminta mereka untuk menulis fungsi untuk membandingkan dua string. Mungkin menggunakan fungsi untuk mengurutkan kata-kata untuk kamus. Anda akan kagum dengan jumlah siswa yang tidak mengerti bagaimana membandingkan dua kata, apalagi tahu bagaimana menulis fungsi. Dan beberapa siswa ini mengklaim mereka mendapatkan nilai A di CSc.

Masalahnya adalah pemrograman SANGAT SULIT. Banyak orang suka berpikir mereka tahu bagaimana memprogram, tetapi mereka tidak tahu.

ChrisMcB
sumber
3
Tingkat inflasi menyebalkan, membuang waktu untuk semua orang!
DarenW
8

Beberapa pemikiran:

  • Saya tidak akan menentang seseorang jika program mereka memiliki beberapa bug tetapi mereka jelas memiliki ide yang tepat. Debugging adalah bagian dari pemrograman.

  • Saya pikir sangat menyedihkan bahwa begitu banyak orang melamar pekerjaan yang mereka tidak tahu tidak bisa mereka lakukan. Bagiku itu seperti masalah dengan ekonomi.

  • Sangat mudah untuk mengajukan pertanyaan buruk kepada orang-orang, di mana satu-satunya jawaban yang "benar" adalah yang akan diberikan pewawancara.

Mike Dunlavey
sumber
2
Tentang poin ke-2 ... setelah menghabiskan banyak waktu untuk merenungkan kepindahan karier saya berikutnya, mempelajari berbagai industri, dan mencari pekerjaan, itu adalah kesulitan besar mencoba menilai tingkat kompetensi saya sendiri pada banyak hal yang berbeda. Rupanya ini adalah masalah besar, besar bagi (hampir) semua orang.
DarenW
@ DarenW: Anda mendapatkan simpati saya. Saya pikir penting untuk mengetahui apa yang Anda sukai dan bekerja dari sana. Secara pribadi saya selalu menyukai sekolah dan tidak pernah meragukan minat saya dalam bidang teknik. Saudara-saudara saya hampir semua yakin dengan apa yang mereka lakukan. Seseorang tidak, dan mudah untuk melihat bahwa itu adalah perjuangan. Halaman beranda Anda menunjukkan minat pada persimpangan sains dan seni - itu hebat. Beberapa orang memiliki pengalaman buruk di masa muda, dan itu bisa menghabiskan seluruh energi mereka sekarang.
Mike Dunlavey
7

Tes ini dengan sangat baik mencakup beberapa hal yang ingin saya ketahui tentang seorang programmer yang mungkin saya pekerjakan:

  1. Bisakah Anda memprogram sama sekali?
  2. Bisakah Anda menulis program dari awal (karena tidak semua orang bisa !!!)
  3. Bisakah Anda memecahkan masalah tanpa terlalu memikirkannya .

Untuk menguraikan poin terakhir, ada banyak solusi untuk fizz-buzz. Apakah Anda menggunakan keterbacaan? Kecepatan? Keringkasan? Apakah Anda mencoba menyelesaikan penulisan program dengan cepat? Bagaimana seorang programmer menyerang masalah sederhana ini sangat jelas. Jika seorang programmer tidak dapat memilih solusi dan menyelesaikannya sampai akhir, apa artinya itu memberitahu Anda tentang bagaimana orang ini akan melakukan tugas nyata?


sumber
6

Sayangnya, banyak orang dengan resume yang tampak mengesankan tampaknya tidak memiliki keterampilan pemrograman dasar. Saya telah melihat banyak kasus ketika orang yang mendaftar C dan C ++ pada resume mereka tidak dapat menjawab pertanyaan dasar tentang petunjuk.

Dima
sumber
3

Ada dua tipe orang yang saya harap FizzBuzz akan membantu saya menghindari.

  1. Penyedia layanan tanpa pengetahuan pemrograman atau tanpa pengetahuan pemrograman yang relevan. Biasanya Anda bisa mengenali ini dari CV tetapi tidak selalu dan memberi mereka tugas pemrograman sederhana adalah cara yang baik untuk membuatnya jelas bahwa mereka bukan seorang programmer.
  2. Lulusan sekolah Jawa, yang telah menyelesaikan kursus atau gelar pemrograman tetapi tidak benar-benar tahu cara memprogram. Orang-orang ini dapat lebih sulit disaring karena mereka dapat berbicara tentang teori tetapi mereka tidak memiliki keterampilan praktis. Menempatkan masalah sederhana di depan mereka dan meminta solusi dan penjelasan solusinya adalah cara yang cukup bagus untuk melihat perbedaan antara Petra Java dan Paula Bean.

Dalam kedua kasus itu, saya tidak terlalu peduli dengan implementasi yang sempurna. Tes yang perlu Anda lakukan dengan orang-orang yang melamar pekerjaan pengembang adalah bahwa mereka dapat memprogram sama sekali.

Yang mengatakan, saya mungkin tidak akan repot dengan tes khusus itu karena beberapa alasan sekarang. Pertama itu sangat terkenal dan salah satu dari kelompok di atas akan cepat mencobanya. Kedua saya akan lebih suka menggunakan pertanyaan layar ponsel Steve Yegge untuk menyaring non-programmer sebelum kita sejauh membawa mereka. Jika seseorang mengenali pertanyaan-pertanyaan itu akan menyiratkan mereka telah membaca blog Steve Yegge yang akan menyarankan kepada saya mereka berada di 1% pengembang teratas yang menganggap serius profesi mereka dan tentu saja mewawancarai. Demikian juga jika seseorang memiliki perwakilan yang baik di sini atau di SO saya akan cenderung mewawancarai mereka.

glenatron
sumber
A) Seberapa baik "baik"? B) Apakah Anda merekrut? :)
Sparr
3

Sulit untuk percaya bahwa pengembang tidak dapat membuat kode FizzBuzz sampai Anda melihat "sembilan-ke-lima" yang menyalin dan menempelkan pekerjaan mereka bersama dan dengan sadar berusaha untuk tidak menulis kode. Saya tidak percaya ketika saya mendengar salah satu pengembang senior kami mengajar pengembang C #, dengan 3 tahun "pengalaman", cara menggunakan Kamus. Antarmuka? Pola desain? stdout? YAGNI? Pimpinan saya belum pernah mendengar tentang YAGNI! Sungguh menakjubkan apa yang orang-orang ini tidak tahu.

Saya percaya itu sekarang. Saya juga berpikir ada terlalu banyak pengembang yang cukup melakukan.

kirk.burleson
sumber
3

Saya pikir bagian dari mengapa ini adalah pertanyaan yang begitu populer adalah karena ada lebih dari satu cara untuk menjawabnya, dan tergantung pada cara mana kandidat memilih untuk pergi dapat memberi Anda wawasan tentang bagaimana mereka membuat kode. Beberapa contoh hebat dapat dilihat di sini jika Anda memiliki perwakilan 10K di Stack Overflow.

Mengenai statistik 99%, periksa dari mana angka itu berasal. Mungkin bias. Jika didasarkan pada pemrogram entry-level yang mewawancarai untuk pekerjaan pertama mereka, maka ya saya bisa melihat itu menjadi mungkin, terutama jika sebagian besar kandidat mereka langsung keluar dari perguruan tinggi. Saya benar-benar dapat memikirkan seseorang yang mungkin akan menulis kondisi 100 jika pernyataan sebagai solusi untuk masalah itu.

Rachel
sumber
3
Saya menduga bahwa angka 99% menunjuk pada kebenaran (kebenaran rekursif, tidak kurang) dari pernyataan bahwa 87% dari semua statistik dibuat di tempat.
Adam Crossland
1
@Adam Crossland: 100% statistik tentang statistik juga dibuat di tempat.
Macha
Namun, nampaknya mengerikan bahwa seseorang tidak dapat menyelesaikan fizzbuzz dari perguruan tinggi. Jika mereka tidak bisa melakukan itu, apa yang bisa mereka lakukan?
Morgan Herlocker
2
@ironcode Saya pergi ke sekolah dengan seseorang yang bahkan tidak bisa mulai memahami fizzbuzz ... Saya akan terkejut jika mereka bahkan dapat menulis sesuatu yang dicetak 100 baris dengan nilai-nilai fizzbuzz yang di-hardcode. Mereka lulus dengan pujian.
Rachel
2

Saya menemukan pernyataan bahwa 99% dari programmer tidak dapat memprogram atau untuk menyelesaikan tes pengkodean sederhana yang sangat berlebihan. Dalam kasus tes FizzBuzz, Anda pernah mengalami masalah ini sebelumnya dan dapat dengan mudah menyelesaikannya dengan operator modulo atau Anda belum pernah mengalaminya sebelumnya dan akan kesulitan dengannya. Ia tidak memberi tahu pewawancara apa pun tentang keterampilan pemrograman Anda.

Saya pikir masalah dengan banyak programmer tampaknya meninggalkan kesan buruk pada sebuah wawancara terletak pada sifat metode wawancara teknis. Pewawancara mengharapkan pelamar untuk menghafal dan langsung mereproduksi sintaksis bahasa, detail dan kompleksitas komputasi dari struktur data, arsitektur perangkat keras, pola desain, dll, dll. Area ilmu komputer / rekayasa perangkat lunak sangat luas. Mustahil dan tidak masuk akal untuk mencoba menghafal segalanya.

Di dunia nyata, kuncinya adalah untuk dapat memahami masalah pemrograman / desain yang ditugaskan untuk Anda dan untuk mengetahui di mana menemukan informasi (IDE Anda, halaman manual, buku, google, dll) bagaimana menyelesaikan masalah Anda. Namun ini adalah sesuatu yang tidak pernah diuji oleh pewawancara.

menandai
sumber
14
Apakah Anda menyadari betapa mudahnya FizzBuzz? Anda tidak perlu menjumpainya. Jika Anda kesulitan maka pertimbangkan perubahan karier.
John Smith
Tapi itu bisa diselesaikan tanpa modulo dengan menggunakan divisi. Solusi yang benar menggunakan / bukannya% akan bekerja untuk saya. Jadi mereka perlu memahami matematika yang sangat mendasar dan pemrograman yang sangat mendasar.
Almo
0

Saya masih seorang programmer yang relatif junior (saya telah mengkodekan uang selama ~ 2 tahun dan mengkode dalam kapasitas profesional sebagai tanggung jawab sampingan sekitar 2 sebelum itu) jadi gunakan garam yang cukup.

Saya punya pengalaman melakukan layar pertama untuk coders untuk Proyek Perusahaan Besar (kami agak tahu proyek itu hancur, tapi hei, mereka ingin membayar lagian). Sebagai satu-satunya programmer di perusahaan yang melakukan perekrutan, saya diberi tugas untuk meninjau resume dan menyaring pelamar.

Ini untuk proyek pemerintah jadi mungkin mungkin tidak menarik pelamar paling berbakat, tapi saya tidak menerima satu aplikasi dari siapa pun dengan akun github yang benar-benar memiliki kode yang ditunjukkan, atau siapa pun yang memiliki portofolio, jadi saya menggunakan fizzbuzz ( secara harfiah masalah yang tepat) sebagai lulus pertama pada siapa saja yang tampak seperti mereka dapat memprogram.

Saya membukanya dengan permintaan maaf semu yang menyatakan bahwa saya tahu itu bodoh tetapi saya hanya ingin melihat kode yang berfungsi, dan jika mereka mau, mereka bisa mengirim contoh lain dengan nilai yang sama atau lebih besar atau benar-benar apa pun, tetapi fizzbuzz itu sudah cukup.

Hasilnya: Saya tidak mendapatkan satu jawaban yang sebenarnya benar, yang mengejutkan mengingat volume jawaban di internet. Tidak ada yang peduli untuk menjiplak. Kami harus pergi dengan mempekerjakan orang-orang yang sebelumnya bekerja pada iterasi proyek sebelumnya yang gagal.

Setelah kejutan awal latihan dan kekecewaan tentang betapa kacau perangkat lunak / kontrak pemerintah, saya merasa jauh lebih baik dengan keterampilan saya sendiri, kemenangan begitu kecil?

Sunting: Dengan tidak benar saya tidak bermaksud kesalahan satu per satu (yaitu saya meminta sampai 100 bukan 99) atau bug tidak bersalah lainnya yang merupakan perbaikan yang mudah. Maksud saya tidak fungsional, tidak akan menjalankan / kompilasi / etc atau menunjukkan dengan jelas bahwa masalahnya tidak dibaca dan dipahami, juga sebagian besar menarik aplikasi dan tidak ada yang mengirim beberapa kode lain sebagai gantinya.

BSpiros
sumber