Masalah dalam wawancara untuk posisi programmer

Halo!



Saya sangat menyukai pekerjaan Anda dan perusahaan Anda serta cita-cita budaya perusahaan Anda sehingga saya memutuskan untuk menawarkan pencalonan saya yang rendah hati. Ini resume super unik saya, kirimkan saya tes, dan kita juga bisa berbicara selama satu atau dua jam sehingga kita bisa memahami secara kasar apakah kita menginginkan satu sama lain.

Pembukaan



Saya telah bekerja sebagai programmer sejak lama. Kebetulan saya berada di kedua sisi "barikade": Saya lulus setidaknya seratus wawancara, lebih sering menerima penolakan dan melakukan setidaknya lima puluh wawancara, sering kali menolak.



Biasanya saya diwawancarai oleh dua orang: manajer / bos dan programmer / teknisi. Lebih jarang - satu, bahkan lebih jarang - tiga atau lebih. Biasanya, mereka mengajukan pertanyaan dari bidang yang sangat berbeda, jadi mari kita bagi wawancara menjadi tugas tes, memeriksa soft skill dan memeriksa keterampilan teknis.



Uji



Tidak mungkin saya akan mengirim solusi kembali ke tugas pengujian, jika saya tidak memverifikasi bahwa itu berfungsi dan memenuhi tugas. Dengan demikian, programmer lain menerima untuk verifikasi, pada dasarnya, hanya solusi yang berfungsi, di antaranya ia harus memilih yang menurutnya (pendapat), cukup cocok. Setelah bekerja dengan banyak programmer dalam satu tim, saya tahu secara langsung tentang intoleransi mereka yang keras terhadap kode orang lain, ke alur pemikiran orang lain. Oleh karena itu, bahkan jika Anda menawarkan mereka solusi yang lebih baik daripada yang bisa matang dalam pikiran mereka, Anda berisiko mengalami kesalahpahaman dan penolakan. Pada saat yang sama, ketika diminta untuk menjelaskan alasannya, Anda bisa mendapatkan keduanya benar-benar omong kosong kiri (setelah mereka mencela saya bahwa saya mengirim tugas di arsip, dan tidak menerbitkannya di github saya, tentu saja, saya akan mengotori ruang saya), dan mengabaikan sepenuhnya. Oleh karena itu, memainkan tugas tes sebenarnya adalah permainan "tolong teknisi lain yang tidak Anda ketahui", yaitu acak yang hebat.



Ngomong-ngomong, dengan urutan tugas tes dan wawancara, Anda dapat menangkap hubungan di perusahaan antara manajer dan pemrogram. Jika Anda diminta untuk menyelesaikan tugas tes sebelum wawancara, maka manajer menganggap dirinya lebih sibuk daripada bawahannya, dan mencoba menghemat waktunya semaksimal mungkin dengan mendelegasikan pemeriksaan dasar. Jika Anda diminta untuk menyelesaikan tugas tes setelah wawancara, itu berarti programmer di perusahaan saat ini memiliki beban kerja yang sangat berat sehingga mereka bahkan tidak terganggu untuk memeriksa tugas tes orang secara acak. Anda bahkan dapat menjalin lebih banyak hubungan jika wawancara dilakukan secara bertahap, pertama dengan beberapa orang, kemudian dengan orang lain. Saya harap Anda memahami intinya.



Memeriksa soft skill



"Ceritakan tentang diri Anda?" - pertanyaan yang membingungkan seseorang dengan pola pikir yang sangat teknis (selanjutnya kita akan menyebutnya konstruktor). Seorang desainer dapat membuang nama, usia, tinggi dan berat badan, kebangsaan dan warna matanya setelah sedikit menggali ingatannya, tetapi pada saat yang sama dia tidak akan mengerti apa hubungannya semua ini dengan kasing, karena dia datang untuk menjual keterampilan teknisnya, bukan dirinya sendiri. "Apa sebenarnya yang ingin kamu ketahui tentang aku?" - Saya biasanya menjawab dan melihat kekecewaan di mata bos, bos jarang suka ketika dia dijawab dengan pertanyaan, karena sekarang bola ada di sisinya dan dia harus berpikir. Jika saya berpikir secara berbeda, maka tentu saja, saya akan memberikan kepadanya cerita gurih yang telah disiapkan sebelumnya tentang kekasih saya dengan detail terperinci tentang betapa keren, keren, dan, yang paling penting, lebih baik daripada yang lain. Tetapi jika saya berpikir secara berbeda,Saya tidak akan menjadi programmer. Oleh karena itu, sebagai tanggapan atas jawaban "apa yang Anda inginkan dan beri tahu saya," saya mulai dengan bodoh membuat daftar di mana saya bekerja dan proyek apa yang saya terlibat di dalamnya, ditambah teknologi apa yang saya gunakan, bagaimana saya membuat kesalahan lagi, karena semua ini sudah tertulis di resume dan tidak menyebabkan apa pun kecuali kebosanan. Bagaimanapun, kata-kata tidak dapat menyampaikan volume, bobot, dan makna yang saya rasakan di kepala saya.



Dan di sini saya membuat asumsi: katakanlah programmer TIDAK HARUS memiliki soft skill yang kuat.



Mari kita pergi dari kebalikannya: misalkan seorang programmer HARUS memiliki soft skill yang kuat, lalu mengapa kita membutuhkan seorang manajer? Lalu mengapa saya membutuhkan perusahaan jika saya dapat pergi ke bursa freelance dan menemukan diri saya sendiri sebagai pelanggan di sana? Tuan Ford adalah penemu hebat abad terakhir, dia menemukan konveyor, sebuah alat yang sangat efisien yang, tampaknya, belum semua orang belajar menggunakannya. Di beberapa perusahaan, mereka memotong trik ini dan menyisipkan hubungan khusus antara programmer dan pelanggan - manajer, yang pada dasarnya adalah penerjemah dari "manusia" menjadi "programmer". Tugas manajer adalah mencapai kesepakatan dengan pemrogram dan pelanggan, tugas pemrogram adalah "setuju" dengan kode. Mengharapkan keterampilan lanjutan tambahan dari pemrogram untuk bernegosiasi dan berkomunikasi, Anda memutuskan pemrogram tersebutyang, karena ketiadaan soft skill ini, membebaskan cukup ruang di kepala mereka untuk memompa keterampilan pengembangan mereka lebih dalam.



Bayangkan kita diwawancarai oleh perusahaan yang memahami ide ini. Namun demikian, dia masih ingin mengevaluasi keramahan umum, hanya untuk menyingkirkan orang-orang yang sama sekali tidak mampu bekerja sama. Bagaimana ini bisa dilakukan secara efektif dalam 1-2 jam percakapan? Tidak ada. Saya belum pernah melihat seorang pun dalam wawancara yang berperilaku tidak bermoral, tidak hormat atau tidak pantas mengekspresikan dirinya, dan ini wajar, karena pada wawancara kita semua seterbuka mungkin, ramah dan memadai. Oleh karena itu, setelah melewati ribuan orang yang diwawancarai melalui dirinya sendiri, pewawancara mulai lebih memperhatikan detail lainnya: bagaimana orang tersebut berpakaian, gaya rambut apa yang dia miliki, bagaimana baunya, seringai apa yang dia buat, emosi apa yang dia tunjukkan, gerakan apa yang dia gunakan, berapa lama dia menatap matanya, bagaimana sering membuang muka, seberapa cepat dia menjawab pertanyaan.Dan dia membentuk keputusan "ahli" terakhirnya, pada kenyataannya, berdasarkan intuisi. Lagipula, dia dihadapkan pada tugas "memilih yang terbaik saat ini", dan bukan "menyisihkan yang cocok dari yang tidak cocok," dan dia tidak bisa melawan tugas ini.



Penilaian kecepatan reaksi adalah kesalahan tersendiri. Penanggap instan bahkan tidak punya waktu untuk berpikir. Sebaliknya, orang-orang yang memperlambat dengan menjawab, terjun ke dalam istana pikiran, dengan hati-hati menimbang semua kemungkinan pilihan, sampai mereka merasa pantas untuk berpikir lebih sedikit. Sekalipun mereka segera memiliki jawaban yang cocok.



Menguji keterampilan teknis



Tampaknya pengetahuan teknis lebih penting daripada kemampuan komunikasi, tetapi pada kenyataannya, jarang sekali perusahaan mengatur wawancara sedemikian rupa sehingga bagian teknis lebih unggul daripada bagian sosial. Tentu saja ada pengecualian, begitu saya mendapat kesempatan untuk berkomunikasi selama 4 jam dengan teknisi yang sangat ramah, yang darinya saya belajar banyak trik menarik, tetapi tidak berguna dalam kehidupan nyata saya.



Jadi, mungkinkah mengevaluasi seseorang dengan cukup baik dalam 1-2 jam percakapan untuk membuat keputusan yang tepat? Tentu saja tidak. Kesalahan terpenting di sini - persis sama seperti di bagian sebelumnya - adalah tugas menemukan yang terbaik, dan tidak menyisihkan yang benar dari yang tidak sesuai. Akibatnya, wawancara berubah dari pencarian pengetahuan menjadi pencarian celah, karena semakin banyak celah yang ditemukan pewawancara, semakin kurang cocok kandidat dan semakin mudah untuk menambahkan-mengurangi-menghitung poin virtual. Kesalahan tambahan adalah kami memeriksa bahwa kandidat hanya memiliki pengetahuan yang kami ketahui sendiri, benar-benar kehilangan pengetahuan yang tidak kami ketahui, yang bisa jauh lebih berguna di perusahaan daripada salinan saya yang lain.



Yang terutama licin dalam apa yang terjadi adalah bahwa inspeksi berubah menjadi ujian bukan tes kemampuan program, tetapi kemampuannya untuk menjelaskan, menyampaikan, mengajar, yang sebenarnya adalah tes yang sama dari keterampilan komunikasi di bidang yang berbeda. Misalnya, saya dapat dengan cepat dan efisien merancang struktur database yang dinormalisasi atau menormalkan yang sudah ada, tetapi saya sama sekali tidak dapat menjelaskan dengan kata-kata kepada orang lain bagaimana melakukan ini, karena ketika saya menormalkan, saya tidak menggunakan kata-kata Rusia, saya menggunakan pengetahuan internal yang belum saya peroleh. berpasangan di universitas, tetapi pada pengalaman "pertempuran". Tidak semua orang memahami perbedaan keterampilan antara pemain dan guru ini. Contoh kanonik lainnya adalah kebingungan tentang pola desain. Mungkin saya tahu pola yang Anda tanyakan kepada saya,tapi di kepala saya ini disebut berbeda dan implementasinya mungkin sedikit berbeda.



Terutama yang saya tidak suka adalah pemeriksaan detail yang sangat kecil dan super spesifik, yang dimiliki Google, bukan di kepala saya. Apa parameter ketiga dalam fungsi bubble sort yang bertanggung jawab? Atur antrian dalam dua tumpukan. Bagaimana cara membuat seleksi agar tidak demikian, tapi seperti ini? Tentu saja, ada baiknya ketika detail ini ada di kepala, programmer menghemat waktu, dan perusahaan menghemat uang. Tetapi apa yang tidak akan pernah Anda pelajari dengan mengajukan pertanyaan semacam itu adalah apa yang ada di kepala kandidat BUKAN dari pengetahuan ini, pengetahuan yang begitu rendah nilainya. Mungkin ada pemahaman yang mendalam tentang asynchrony, atau mungkin keterampilan bergaul dengan gadis-gadis di pesta, tetapi pertanyaan telah diajukan, waktu telah dihabiskan, wawancara untuk langkah selanjutnya hampir selesai, dan Anda telah menemukan sedikit makna.



Saya bahkan tidak ingin membicarakan permintaan untuk mengkompilasi kode dari kertas di kepala saya. Apakah Anda sedang mencari programmer atau kompiler / juru bahasa untuk suatu posisi? Dalam rutinitas kerja sehari-hari, seorang programmer terbiasa mengandalkan lingkungan, menggunakan kemampuannya secara maksimal, menghemat waktu "prosesor" jika memungkinkan. Oleh karena itu, tidak mengherankan jika tugas-tugas tersebut dilakukan dengan lambat dan seringkali tidak tepat. Sebaliknya, akan lebih baik untuk menanyakan media apa yang dia gunakan dan apa yang dia suka dari mereka, mungkin Anda akan menemukan sesuatu yang baru dan enak untuk diri Anda sendiri.



Apakah ada jalan keluarnya?



Jika Anda ingin menghemat otak, saya minta maaf, Anda akan terus melewatkan bingkai yang diperlukan untuk mengejar yang terbaik. Saya hanya dapat menarik perhatian Anda pada fakta bahwa otak yang baik hampir selalu mencari tempat yang lebih baik daripada yang mereka miliki saat ini, jadi kehilangan otak "terbaik" semudah "menemukannya".



Jika Anda memiliki anggaran yang cukup, Anda dapat mencoba trik berikut: tawarkan 1 bulan percobaan kerja kepada semua orang dengan setengah tarif dan putuskan hasil pekerjaan. Ini dapat dikombinasikan dengan wawancara pendahuluan dengan mengalihkan tugas dari mencari yang terbaik ke menemukan yang tepat, tetapi perlu diingat bahwa wawancara semacam ini praktis tidak berguna dan hanya membutuhkan waktu.



All Articles