Tes Joel yang setara untuk mengukur seorang programmer [ditutup]

70

Saya mengerti bahwa untuk mengukur proyek atau kode, kita dapat menggunakan Tes Joel , tetapi apakah ada tes standar sederhana (seperti Tes Joel) yang dapat mengukur dan menyaring seberapa baik programmer?

Rencana saya adalah melakukan tes ini sebagai filter cepat terlebih dahulu sebelum pergi ke tes yang lebih detail.

Rudy
sumber
2
Jika ada tes seperti ini yang sedang digunakan, saya pikir programmer harus mengetahuinya. Mereka mungkin atau mungkin tidak valid seperti: Menyewa satu dengan modifikasi tubuh paling banyak.
JeffO
2
Menarik, ketika saya mengajukan pertanyaan ini, itu turun ke neraka (sekarang positif lagi, yay, dan cepat ditutup). Apakah ini sangat berbeda dari yang ini? programmers.stackexchange.com/questions/133691/…
ripper234
8
@ ripper234, alasan untuk pertanyaan yang ditutup pada SE agak mirip dengan bug perangkat lunak yang tidak dapat dijelaskan, intermiten - benar-benar sebuah misteri. Agak seperti sifat manusia sebenarnya.
tehnyit
8
Joel sendiri memberikan tes sederhana namun keras: Smart and Gets Things Done . : P
Dan J
FizzBuzz! Pasti!
CraigTP

Jawaban:

67

Ada matriks kompetensi programmer .

Seperti halnya tes Joel, itu hanyalah panduan yang tidak jelas. Satu-satunya cara untuk menilai seorang programmer dengan baik adalah dengan bertanya kepada programmer yang baik yang telah bekerja dengan mereka.

Tom Squires
sumber
27
Jadi satu-satunya masalah yang tersisa adalah untuk menilai apakah masa lalu / rekan setim pria itu baik ... Ups.
Péter Török
21
Ya, ini rekursif :)
Tom Squires
13
Itu tidak seperti tes Joel. Jawaban Anda mengarah ke matriks terperinci yang sangat besar, tes Joel adalah serangkaian 12 pertanyaan yang sangat sederhana untuk dijawab.
Bryan Oakley
2
@BryanOakley - itu benar, tetapi PCM juga merupakan hal pertama yang saya pikirkan ketika membaca pertanyaan. Hasilnya: tidak ada pertanyaan sederhana yang dapat Anda jawab untuk mengukur seorang programmer!
Joris Timmermans
2
@BryanOakley titik matriks menjadi lebih kompleks daripada seri diambil dengan baik; bagi saya analogi yang lebih dekat dengan tes Joel akan menjadi seri yang terbuat dari elemen kolom Level 1 di PCM - "jelaskan dan gunakan Array ..., pengurutan dasar ... dll"
nyamuk
25

Saya akan mengubah tes Joel:

Sudahkah mereka menggunakan kontrol sumber?

Apakah mereka tahu cara mengotomatisasi pembuatan satu langkah?

...

Satu-satunya yang tampaknya tidak terlalu berlaku adalah pertanyaan memiliki penguji. Yang lain yang sepertinya agak mematikan dalam hal ini adalah bagaimana kami menanganinya bagaimana Anda menanganinya dalam jenis pertanyaan terakhir (Ini adalah bagaimana kami menangani menjaga jadwal kami tetap terbaru bagaimana Anda menangani penjadwalan di masa lalu?) .

sunting:

Pada dasarnya Anda tidak mendapatkan barang-barang di tes Joel secara gratis, Anda harus mempekerjakan orang yang dapat mewujudkannya. Anda ingin membangun kemampuan mereka untuk mewujudkannya.

stonemetal
sumber
1
Semua pertanyaan Joel lebih tentang lingkungan daripada programmer. Jika tim saya tidak menggunakan kontrol kode sumber, maka saya tidak terintegrasi dengan mereka dengan menggunakan kontrol kode sumber saya sendiri hampir tidak perbaikan. Membuat tim menggunakan kontrol kode sumber merupakan peningkatan.
Edwin Buck
15

Tes Joel hanyalah pemeriksaan dasar informal untuk dengan cepat menilai apakah suatu tempat memiliki kondisi kerja yang baik untuk para programmer. Bahkan jika skornya 10 sempurna, itu masih bisa menjadi lubang neraka yang akan bangkrut enam bulan ke depan. Skor rendah adalah indikasi dari sesuatu yang tidak beres, dan membuat untuk pertanyaan wawancara yang sangat baik ("Anda saat ini tidak menggunakan kontrol sumber; apakah ada rencana untuk melakukannya di masa depan?"), Dan jawabannya mungkin sedemikian rupa sehingga Anda akan menerima pekerjaan itu meskipun skor Joel rendah.

Tes Joel juga bukan tes 'standar'; itu hanya daftar periksa yang diposting Joel Spolsky di blog-nya.

Sejauh 'mengukur' kualitas seorang programmer berjalan; sayangnya, keterampilan dan kualitas yang sangat penting dari seorang programmer yang baik sulit atau tidak mungkin untuk dihitung, sehingga tidak ada pengganti untuk evaluasi manusia yang menyeluruh. Anda dapat menyingkirkan kandidat yang sama sekali tidak mengerti dengan cukup mudah, menggunakan tugas pemrograman yang sangat sederhana - idealnya, sesuatu yang melibatkan rekursi, struktur pohon atau pointer (seorang programmer yang tidak 'mendapatkan' ini tidak mungkin banyak digunakan). Bagi mereka yang lulus tes ini, Anda harus mengevaluasi keterampilan secara manual: membaca kode yang mereka tulis, aplikasi test drive yang mereka tulis, memberi mereka lebih banyak tugas pemrograman (baik desain dan implementasi), lihat mereka bekerja, berbicara dengan mereka, lihat apakah Anda dapat memicu diskusi profesional. Jika Anda mencari guru spesialis / bahasa,

tammmer
sumber
1
+1 Menilai keterampilan seorang programmer yang baik adalah satu tugas yang sulit untuk diukur.
Karthik Sreenivasan
20
("You're not currently using source control; are there any plans to do so in the future?"), and the answers might be such that you'd accept the job despite a low Joel score. Anda akan membuat kesalahan untuk menerima pekerjaan itu. Akhirnya setiap pengembang mengetahui bahwa Plans to do so in the futureitu hanya sesuatu yang dikatakan pewawancara untuk menipu Anda tetapi mereka tidak pernah bertindak karena manajemen yang buruk. Sudah berapa kali kita mendengar sesuatu Oh, we are moving towards Agile...dan ternyata toko air terjun micromanaged lain?
maple_shaft
@maple_shaft: yeah, mungkin bukan contoh yang baik ...
tdammers
5
Sepuluh yang sempurna pada tes Joel sebenarnya adalah 12 ... hanya mengatakan :)
MattDavey
3
@MattDavey: Itu sangat tergantung pada kompetensi Anda untuk mendorong perubahan. Saya memiliki salah satu pengalaman ketika saya berada di bisnis selama dua tahun (ya kita akan pindah ke C ++) dan mendapatkan hasil yang diharapkan. Saat ini, itu akan menjadi masalah yang berbeda. Saya bisa mencari tahu apakah itu keinginan yang tulus tetapi tidak mampu untuk berubah, dan kemudian memungkinkan.
MSalters
12

Ya:

Apakah Anda memprogram waktu luang?

Dalam semua pengalaman saya, pertanyaan tunggal ini paling menunjukkan seberapa bagus seorang programmer. Jika mereka menikmatinya; jika mereka memiliki hasrat untuk melakukan tugas, maka mereka akan menjadi ahli dalam hal itu.

Dan sejujurnya, banyak pekerjaan 9 hingga 5 tidak melibatkan banyak pengkodean . Mereka tidak melibatkan banyak pengulangan melalui siklus hidup merancang program baru dan melihat bagaimana desain itu bekerja / gagal. Tanpa iterasi, tidak ada praktik yang diperlukan bagi programmer untuk mendapatkan keterampilan desain program inti.

Dan mereka tidak melibatkan banyak pembelajaran. Programmer yang bahkan hanya meretas hal-hal di rumah akan mengeksplorasi solusi baru dan menarik tanpa kendala bisnis besar.

Telastyn
sumber
2
Mengapa ini hanya memiliki satu suara? IMO ini adalah perbedaan nyata antara tim biasa-biasa saja dan yang benar-benar inovatif.
Repo Man
0

Eh, saya ragu dengan kata-kata di awal. Ini bukan "apakah Anda menggunakan X" atau "Apakah Anda tahu Y", itu masalah benar-benar menggunakan dan melakukan. Setiap programmer yang belum menyentuh atau mendengar item-item pada tes Joel hanya terputus dan perlu mendapatkan petunjuk. Tapi Anda benar, toko kode gagal dalam tes Joel karena orang-orang di toko membiarkannya gagal. Satu-satunya pertahanan saya dapat melihat berjalan di sepanjang garis "Saya mencoba, tetapi tidak memiliki wewenang. Dan sekarang saya melamar di sini".

Philip
sumber
0

Apakah Anda menggunakan kontrol sumber?

Ya tapi

  • Itu tidak benar-benar memberi tahu Anda apa-apa.
  • Bagaimana Anda tahu apakah saya meneruskan penggabungan?
  • Bagaimana Anda tahu apakah saya melakukan perubahan sebelum mendorong?
  • Bagaimana Anda tahu apakah saya membangun sebelum melakukan repositori.

Bisakah Anda membuat build dalam satu langkah?

  • Ya, pemimpin CI kami menulis skrip dan saya menjalankannya dengan PowerShell.

Apakah Anda membuat build harian?

  • Server CI kami melakukannya

Apakah Anda memiliki basis data bug?

Ya, tapi saya belum mengonfigurasinya dan saya tidak mengelolanya, saya hanya menggunakannya.

Apakah Anda memperbaiki bug sebelum menulis kode baru?

  • Di dunia yang sempurna di mana saya memiliki sumber daya tak terbatas - ya saya punya Di dunia nyata kadang-kadang saya dipaksa untuk mencatatnya dan mengerjakan sesuatu yang lain.

Apakah Anda memiliki jadwal terkini?

Tidak, itu bukan pekerjaan saya.

Anda punya spec?

Saya diberi spec, saya kemudian menganalisis dan menghasilkan dokumen yang relevan.

Apakah programmer memiliki kondisi kerja yang tenang?

  • Apakah Anda tidak akan mempekerjakan saya jika saya mendengarkan musik, berbicara dengan kolega saya dan membuat lelucon? Pengembangan perangkat lunak yang seharusnya kreatif - kondisi kerja akan bervariasi dari satu organisasi ke yang lain.

Apakah Anda menggunakan alat terbaik yang bisa dibeli dengan uang?

Anda tidak tahu apa alat terbaik dan jika Anda berpikir Anda melakukannya, akan selalu ada seseorang yang memperdebatkan maksud Anda.

Apakah Anda memiliki penguji?

Iya. Sebenarnya, ya dan mereka tidak terlalu baik, tetapi itu tidak ada dalam pertanyaan.

Apakah kandidat baru menulis kode selama wawancara mereka?

Ya dan mereka gagal. Ya dan mereka lulus. Apa artinya ini bagimu?

Apakah Anda melakukan pengujian kegunaan lorong?

Tidak, tetapi bagaimana jika kita melakukan sesuatu yang lebih baik?

Untuk menyimpulkan:

  • Tes ini mungkin bekerja dengan baik di dunia akademis yang sempurna di mana semuanya bekerja, semua orang rukun, berbagi pengetahuan dan ada sumber daya tak terbatas.
  • Apa yang ingin Anda ketahui adalah insinyur seperti apa saya ini. Jawaban bitwise sederhana tidak akan memberi tahu Anda sesuatu yang berguna dan saya pikir seseorang harus sangat naif untuk jatuh hati pada mereka.
  • Jawaban di atas, baik negatif maupun positif tidak memberi tahu Anda apa pun tentang kemampuan saya menghasilkan kode bersih.

Ini bukan kata-kata kasar, tapi saya akan sangat tertarik untuk mendengar pengembang seperti apa yang Anda pikir saya didasarkan pada jawaban yang saya berikan. Semoga ini akan membuktikan maksud saya.

CodeART
sumber
8
Saya tidak benar-benar mengerti intinya. Pertanyaan-pertanyaan ini adalah tentang tim / perusahaan, bukan programmer individu. Dan OP tidak menyarankan menggunakan pertanyaan yang sama untuk menilai programmer, dia hanya ingin satu set pertanyaan sederhana.
CodesInChaos
1
Saya pikir saya sebagus tim saya, atau perusahaan tempat kita bekerja. Menurut pendapat saya tes seperti ini membuat banyak keributan, tetapi mereka tidak benar-benar memberi tahu Anda sesuatu yang berguna tentang perusahaan atau pengembang.
CodeART
3
How do you know whether I pull changes before pushing? Yah, saya tidak tahu kontrol sumber apa yang Anda gunakan, tetapi setidaknya di SVN, jika Anda mencoba komit ke folder dengan perubahan yang belum Anda miliki, komit akan gagal sampai Anda menjalankan Pembaruan.
Mason Wheeler
Kami menggunakan TFS :) Saya benar-benar perlu mendapatkan tangan saya pada sistem kontrol versi lainnya.
CodeART
Orang-orang soooo benar-benar menggunakan TFS. Saya belajar sesuatu.
Fabinout