Sepanjang karier panjang saya di bidang TI, saya berhasil mengunjungi kedua sisi wawancara dan melihat semua kemegahan, kemiskinan, kegilaan, dan pemikiran yang baik dari tugas tes yang dikeluarkan pada wawancara teknis pengembang perangkat lunak.
Dari sisi pelamar (alias pengembang Petya)
Jika Petya berada di awal karirnya sebagai pengembang, maka kemungkinan besar dia akan tertarik untuk melakukan tugas-tugas pengujian dan siap untuk menghabiskan waktu pribadinya untuk ini. Untuk pengembang tingkat Senior dan di atas, tugas-tugas seperti itu sudah bosan, terutama tidak dibayar. Dan karena pengembang biasanya melewati lebih dari satu perusahaan, jumlah waktu yang terbuang untuk tugas pengujian bisa berhari-hari atau bahkan berminggu-minggu!
Apakah ada tugas yang sangat keren? Mereka terjadi tetapi sangat jarang, mungkin satu dari 100. Pada dasarnya, semuanya standar dan tidak menarik - untuk membaca data dari suatu tempat, melakukan sesuatu dengannya, menulis data di suatu tempat (file / base / socket ..). Atau terapkan beberapa algoritma terkenal di tempat. Kenapa begitu? Ya, karena, dalam kebanyakan kasus, penyewa hanya perlu menipiskan tumpukan CV di desktop-nya, saya akan memberi tahu Anda lebih banyak tentang ini nanti.
Dari sisi majikan (alias Timlid Vasya)
Vasya memiliki dua lusin resume yang benar-benar cocok, di antaranya Anda harus memilih kandidat yang layak untuk tim Anda. Wawancarai semua dua lusin Vasya terlalu malas, dan tidak ada alasan, dan dia memutuskan untuk menyaring garis sedikit dan memilih yang paling layak. Tentu saja, Vasya tahu bahwa Anda dapat melakukannya, seperti dalam lelucon terkenal:
Kenapa kita butuh pecundangAkhir dari hari kerja. Dua staf rekrut sedang duduk, tua dan muda.
Lama:
- Yah, aku sudah selesai. Ayo pulang?
Young melihat sekumpulan resume yang belum diproses:
- Ya, saya masih memiliki banyak pekerjaan.
Yang lama datang, membagi bungkusan menjadi dua, melemparkan satu ke dalam guci. Muda:
- Bagaimana ?!
Lama:
"Mereka kurang beruntung." Kenapa kita butuh pecundang?
Namun Vasya memutuskan untuk mengikuti jalur lain yang luas - untuk memberikan tugas tes dan mengirimkannya ke semua kandidat. Dan kemudian sirkus dengan kuda dimulai, yang menunjukkan absurditas tugas tes.
Pewawancara
Salah satu pilihan terburuk bagi kedua belah pihak, jika pemimpin tim karena suatu alasan (sibuk, kurang kompeten, malas malas, pergi makan siang) alih-alih dirinya mengirim satu anggota timnya untuk wawancara dan membuat keputusan tentang penarikannya. Jika ini terjadi, maka pemimpin tim, kemungkinan besar, tidak mengambil tempatnya di perusahaan.
Waktu dan ruang lingkup tugas
Saya memenuhi tugas selama setengah jam dan seminggu, rata-rata, sebagian besar pengusaha memahami bahwa tidak ada gunanya meminta lebih dari beberapa jam dari seorang kandidat.
Kualitas kode dan desain
Di sini, pengusaha berusaha untuk menyadari apa yang mereka kehilangan dalam pekerjaan nyata dalam menetapkan tugas - kode dengan komentar, ditutupi dengan tes unit, selalu dengan gaya kode, dan ada saat-saat ketika Anda memerlukan tutorial singkat tentang program ini. Dalam kebanyakan kasus, dalam pekerjaan nyata, persyaratan yang sama sekali berbeda jauh lebih sederhana.
Format Pekerjaan
Anda dapat menemukan kedua tugas standar di rumah, dan penyimpangan seperti:
- tuliskan keputusan di papan tulis (ini biasanya dilakukan oleh perusahaan Barat)
- menulis solusi di notepad di laptop perusahaan
- menulis solusi dari jarak jauh dalam mode pemrograman berpasangan
Apa yang dilihat Vasya di pintu keluar?
Beberapa kandidat jatuh hanya karena mereka terlalu malas untuk bekerja secara gratis, beberapa tidak menyukai tugas itu sendiri, beberapa tidak sepenuhnya memenuhi semua kondisi yang telah ditentukan Vasya dengan hati-hati, dan mereka melakukan sedikit kesalahan. Akibatnya, jalur pelamar benar-benar menipis, tetapi tidak sama sekali sesuai dengan prinsip-prinsip yang diharapkan Vasya. Seiring waktu, Vasya melihat bahwa kualitas tugas tes yang diselesaikan dan efektivitas pengembang baru dalam tim berkorelasi lemah dan untuk kandidat berikutnya tidak bersikeras pada tugas pengujian, beralih ke tingkat berikutnya penilaian pengembang.
Apa yang ingin kamu lihat Vasya?
Dalam mimpi-mimpinya yang merah muda, Vasya melihat bahwa sang kandidat akan dengan gembira dan antusias mulai mengerjakan tugas ujian dan akan memberikan kode terbaiknya, ditutupi oleh tes dengan cara yang tidak mungkin, dengan struktur yang kompeten (tetapi tidak terlalu rumit) dan murah hati dibumbui dengan komentar yang masuk akal.
Apa yang memberi tugas tes pada kenyataannya?
Kesenjangan antara tugas tes dan pekerjaan nyata sangat luas sehingga akan sangat naif untuk memproyeksikan hasil tugas kecil selama 3 jam pada pekerjaan panjang pengembang. Banyak yang tertinggal di belakang layar (debugging, troubleshooting, refactoring, arsitektur proyek lebih rumit daripada
Hello World , interaksi dengan rekan kerja), yang menghilangkan manfaat apa pun dari tugas tersebut secara praktis menjadi nol. Dengan efek yang hampir sama, Anda bisa melempar koin dan dengan cepat memutuskan apakah kandidat itu cocok atau tidak.
Adalah baik untuk mengejar ketinggalan, penulis, mungkin di kantor keren ada sedikit omong kosong dengan tugas
Kasus yang terkenal adalah ketika penulis paket manajer
Homebrew tidak dibawa ke Google, hanya karena alasan pada wawancara ke-7 ia tidak dapat menulis algoritma di papan tulis bagaimana membalikkan pohon biner. Berapa banyak perusahaan tangguh yang kalah dari tugas-tugas yang tidak jelas - yang hanya bisa ditebak.

Tugas tes apa yang tidak dibutuhkan sama sekali?
Berada di situs Vasya, saya terkadang memberikan tugas tes untuk memiliki sesuatu untuk didiskusikan setelah implementasinya. Tetapi hanya jika pengembang itu sendiri tidak menentangnya. Ini bekerja dengan baik untuk pengembang Junior dan Menengah jika mereka tidak memiliki kode yang dapat mereka tunjukkan. Senior'ov dan di atas tidak dapat dihargai oleh tugas tes kecil, di sini diperlukan pendekatan lain.
Bisakah uji kasus benar-benar menguntungkan kedua belah pihak?
Mengingat kerugian dari kasus uji tradisional, beberapa perusahaan mulai mengambil pendekatan yang lebih dekat dengan kondisi kerja. Calon menerima tugas nyata dari daftar tugas saat ini (jaminan simpanan) perusahaan, yang dapat dilakukan dari satu hari hingga beberapa minggu dan dibayar dengan tarif kontrak. Dengan demikian, kandidat mendapat kesempatan untuk bekerja dalam mode uji coba dengan tim baru dan pada saat yang sama mendapatkan uang untuk waktu yang dihabiskan. Ini memungkinkan Anda untuk mengevaluasi kandidat secara lebih akurat dalam kondisi yang dekat dengan militer, tetapi, sayangnya, hanya sedikit perusahaan yang mampu membelinya.
Pembaca yang teliti akan bertanya, "Oke, penulis, jika bukan tugas tes, lalu bagaimana lagi Anda bisa memilih senior yang tepat?" Dan ini adalah topik untuk artikel terpisah, tetap disini!