Bagaimana cara masuk ke perusahaan besar jika Anda seorang junior? Bagaimana cara menyewa junior yang layak jika Anda adalah perusahaan besar? Di bawah potongan, saya akan menceritakan kisah kami tentang mempekerjakan pemula ke ujung depan: bagaimana kami mengerjakan tugas-tugas pengujian, siap untuk melakukan wawancara dan membangun program bimbingan untuk pengembangan dan orientasi pemula, dan juga mengapa pertanyaan standar untuk wawancara tidak bekerja.
Saya mencoba menjinakkan juniorHai Nama saya Pavel, saya melakukan frontend di tim Wrike. Kami menciptakan sistem untuk manajemen dan kolaborasi proyek. Saya sudah terlibat dalam web sejak 2010, saya bekerja selama 3 tahun di situs terpencil, berpartisipasi dalam beberapa startup dan mengajar kursus tentang teknologi web di universitas. Di perusahaan, saya berpartisipasi dalam pengembangan kursus teknis Wrike dan program mentoring untuk junior, serta secara langsung merekrut mereka.
Mengapa kami berpikir tentang mempekerjakan junior
Sampai baru-baru ini, kami merekrut pengembang menengah atau senior ke front-end, cukup mandiri untuk melakukan tugas-tugas produk setelah onboarding. Pada awal tahun ini, kami menyadari bahwa kami ingin mengubah kebijakan ini: dari tahun ke tahun jumlah tim produk kami telah meningkat hampir 2 kali lipat, jumlah vendor front-end telah mendekati seratus, dan dalam waktu dekat semua ini harus digandakan lagi. Ada banyak pekerjaan, sedikit tangan bebas, bahkan ada lebih sedikit tangan di pasar, jadi kami memutuskan untuk menarik orang-orang yang baru memulai perjalanan mereka di garis depan dan menyadari bahwa mereka siap untuk berinvestasi dalam pengembangan mereka.
Siapa junior?
Ini adalah pertanyaan pertama yang kami tanyakan pada diri kami sendiri. Ada beberapa kriteria yang berbeda, tetapi prinsip yang paling sederhana dan paling dapat dipahami adalah ini:
Junior perlu menjelaskan fitur apa dan bagaimana membuatnya. Middle perlu menjelaskan fitur apa yang dibutuhkan, dan dia sendiri akan berurusan dengan implementasinya. Signor sendiri akan menjelaskan kepada Anda mengapa fitur ini tidak perlu dilakukan sama sekali.
Dengan satu atau lain cara, seorang junior adalah pengembang yang membutuhkan saran tentang cara menerapkan solusi tertentu. Apa yang kami putuskan untuk dibangun:
- Junior - orang yang ingin berkembang dan siap bekerja banyak untuk ini;
- Dia tidak selalu tahu ke arah mana dia ingin berkembang;
- Membutuhkan saran dan mencari bantuan dari luar - dari pimpinan, mentor, atau komunitasnya.
Kami juga memiliki beberapa hipotesis:
- Akan ada badai tanggapan terhadap posisi Juni . Kita perlu memfilter tanggapan acak pada tahap pengiriman resume;
- Filter utama tidak akan membantu - lebih banyak tugas pengujian diperlukan;
- Tugas uji menakut-nakuti semua orang - mereka tidak diperlukan.
Dan tentu saja, kami memiliki tujuan:
4 junior dalam 3 minggu .
Dengan kesadaran ini, kami mulai bereksperimen. Rencananya sederhana: mulailah dengan corong seluas mungkin dan cobalah untuk secara bertahap mempersempitnya sedemikian rupa untuk mengelola aliran, tetapi tidak menguranginya menjadi 1 kandidat per minggu.
Kami memposting lowongan
Untuk perusahaan : Akan ada ratusan tanggapan! Pikirkan tentang filter.
Untuk junior : Jangan takut pada kuesioner sebelum mengirimkan resume dan tugas tes - ini adalah tanda bahwa perusahaan telah merawat Anda dan mengatur proses dengan baik.
Pada hari pertama, sekitar 70 resume dari kandidat "dengan pengetahuan JavaScript" terbang kepada kami. Dan lagi. Dan satu hal lagi. Kami secara fisik tidak dapat memanggil semua orang untuk wawancara di kantor dan memilih dari mereka orang-orang dengan proyek hewan peliharaan paling keren, live github, atau setidaknya pengalaman.
Tetapi kesimpulan utama yang kami buat untuk diri kami sendiri pada hari pertama - badai dimulai. Saatnya menambahkan formulir kuesioner sebelum mengirimkan resume Anda. Tugasnya adalah untuk menyingkirkan kandidat yang tidak siap untuk melakukan upaya minimal untuk mengirim resume, dan mereka yang tidak memiliki pengetahuan dan konteks, setidaknya sejauh mereka dapat mencari jawaban yang benar di google.
Isinya pertanyaan standar tentang JS, tata letak, web, Ilmu Komputer - semua orang yang tahu apa yang mereka minta wawancara di frontend mengenal mereka. Apa perbedaan antara let / var / const? Bagaimana cara menerapkan gaya hanya untuk layar yang lebarnya lebih kecil dari 600px? Kami tidak ingin menanyakan pertanyaan-pertanyaan ini dalam wawancara teknis - praktik menunjukkan bahwa mereka dapat dijawab setelah 2-3 wawancara, sama sekali tidak mengetahui perkembangannya. Tetapi di sisi lain, mereka mampu menunjukkan kepada kita terlebih dahulu apakah kandidat memahami konteks secara prinsip.
Di setiap kategori, kami menyiapkan 3-5 pertanyaan dan hari demi hari kami mengubah set mereka dalam bentuk respons hingga kami mengesampingkan pertanyaan yang paling sulit dan paling sulit. Ini memungkinkan kami untuk mengurangi arus - dalam 3 minggu kami menerima
122 kandidat , yang dengannya kami dapat bekerja lebih jauh. Ini adalah siswa IT; orang-orang yang ingin pergi ke depan dari backend; pekerja atau insinyur berusia 25-35 tahun, yang secara radikal ingin mengubah pekerjaan mereka dan menggunakan jumlah energi yang berbeda untuk pendidikan mandiri, kursus dan magang.
Lebih dekat
Untuk perusahaan : Tugas pengujian tidak menakuti calon, tetapi membantu mengurangi corong.
Untuk junior : Jangan salin tes tempel - ini terlihat. Dan jaga github Anda tetap rapi!
Jika kami mengundang semua orang untuk wawancara teknis, kami harus melakukan sekitar 40 wawancara per minggu hanya untuk junior dan hanya di ujung depan. Oleh karena itu, kami memutuskan untuk menguji hipotesis kedua - tentang tugas pengujian.
Apa yang penting bagi kami dalam ujian:
- Membangun arsitektur scalable yang bagus, tetapi tanpa rekayasa berlebihan;
- Lebih baik melakukannya lebih lama, tetapi melakukannya dengan baik daripada membuat artikel dalam semalam dan mengirimkannya dengan komentar "Saya pasti akan membawanya sampai akhir";
- Sejarah perkembangan dalam gita adalah budaya rekayasa, iterasi dari perkembangan dan fakta bahwa solusinya tidak direbus sepenuhnya.
Kami sepakat bahwa kami ingin melihat satu masalah algoritmik dan aplikasi web kecil. Algoritmik disiapkan di tingkat laboratorium untuk kursus dasar - pencarian biner, penyortiran, pemeriksaan anagram, bekerja dengan daftar dan pohon. Sebagai hasilnya, kami menetapkan pencarian biner sebagai kasus uji pertama. Tic-tac-toe menggunakan kerangka kerja apa pun (atau tanpanya) seharusnya menjadi aplikasi web.
Tugas tes dikuasai oleh hampir setengah dari orang yang tersisa -
54 kandidat mengirimi kami solusi. Wawasan yang luar biasa - menurut Anda, berapa banyak implementasi tic-tac-toe, siap untuk disalin-tempel, ada di jaringan?
Berapa banyakBahkan, tampaknya hanya 3. Dan di sebagian besar solusi ada tepat 3 opsi ini.
Apa yang tidak suka:
- copy-paste, atau pengembangan pada tutorial yang sama tanpa arsitekturnya sendiri;
- kedua tugas berada di repositori yang sama di folder yang berbeda, tentunya tidak ada riwayat commit;
- kode kotor, pelanggaran KERING, kurangnya pemformatan;
- campuran model, tampilan dan pengontrol dalam satu kelas, ratusan baris kode panjang;
- kurangnya pemahaman tentang pengujian unit;
- solusi "di dahi" adalah matriks hardcode dari kombinasi pemenang 3x3, yang akan cukup sulit untuk diperluas ke 10x10, misalnya.
Dan kami juga memperhatikan repositori tetangga - proyek hewan peliharaan yang keren merupakan nilai tambah, dan banyak tugas uji dari perusahaan lain lebih seperti bel: mengapa tidak bisa calon pergi ke sana?
Hasilnya, kami menemukan opsi keren di React, Angular, Vanilla JS - ada 29 di antaranya, dan kami memutuskan untuk mengundang kandidat lain tanpa tes untuk proyek hewan peliharaannya yang sangat keren. Hipotesis kami tentang manfaat item tes dikonfirmasi.
Wawancara teknis
Untuk perusahaan : Tidak menengah / senior mendatangi Anda! Perlu pendekatan yang lebih individual.
Untuk junior : Ingat bahwa ini bukan ujian - jangan mencoba untuk tetap diam di tiga besar atau membanjiri profesor dengan aliran semua pengetahuan yang mungkin, sehingga ia bingung dan menempatkan "sangat baik".
Apa yang ingin kita pahami dalam wawancara teknis? Suatu hal yang sederhana - sebagaimana dipahami oleh seorang kandidat. Dia mungkin memiliki beberapa keterampilan keras, jika dia melewati tahap seleksi pertama, itu masih untuk mengetahui apakah dia tahu bagaimana menerapkannya. Kami menyetujui 3 tugas.
Yang pertama adalah tentang algoritma dan struktur data. Dengan pena, di selembar kertas, dalam bahasa pseudo dan dengan bantuan gambar, kami menemukan cara menyalin pohon atau cara menghapus elemen dari daftar yang terhubung. Penemuan yang tidak menyenangkan adalah bahwa tidak semua orang memahami rekursi dan bagaimana tautan bekerja.
Yang kedua adalah live coding. Kami pergi ke
codewars.com , memilih hal-hal sederhana seperti menyortir berbagai kata dengan huruf terakhir dan dalam waktu 30-40 menit bersama dengan kandidat mencoba untuk mendapatkan semua tes untuk lulus. Tampaknya seharusnya tidak ada kejutan dari orang-orang yang menguasai tic-tac-toe - tetapi dalam praktiknya, tidak semua orang mampu menyadari bahwa nilai perlu disimpan dalam variabel, dan fungsi harus mengembalikan sesuatu melalui pengembalian. Meskipun saya dengan tulus berharap bahwa itu brengsek, dan orang-orang mampu menangani tugas-tugas ini di lingkungan yang lebih ringan.
Akhirnya, yang ketiga adalah sedikit tentang arsitektur. Kami membahas cara membuat string pencarian, cara kerja debounce, cara membuat berbagai widget dalam petunjuk pencarian, bagaimana frontend dapat berinteraksi dengan backend. Ada banyak solusi menarik, termasuk tentang rendering sisi server dan soket web.
Kami melakukan 21 wawancara dengan cara ini. Penonton benar-benar berbintik-bintik - mari kita lanjutkan komik:
- "Roket itu . " Dia tidak pernah tenang, istirahat di mana-mana, dan selama wawancara dia akan membanjiri Anda dengan aliran pemikiran yang bahkan tidak berhubungan langsung dengan pertanyaan yang diajukan. Jika itu adalah sebuah universitas, itu akan menjadi upaya yang akrab bagi banyak orang untuk menunjukkan dengan baik, secara umum, sepengetahuan Anda, ketika Anda ingat tentang tiket yang baru saja Anda peroleh sehingga Anda memutuskan untuk tidak mengajarkannya tadi malam - Anda tetap tidak akan mengeluarkannya.
- Groot . Cukup sulit untuk berhubungan dengannya, karena dia adalah Groot. Pada saat wawancara, Anda harus berayun untuk waktu yang lama, mengeluarkan jawaban kata demi kata. Ini baik jika itu hanya pingsan - jika tidak, akan sangat sulit bagi Anda dalam pekerjaan sehari-hari Anda.
- Drax . Sebelumnya, saya terlibat dalam transportasi kargo, dan dari pemrograman saya hanya belajar JS di Stackoverflow, jadi saya tidak selalu mengerti tentang apa percakapannya saat wawancara. Pada saat yang sama, dia adalah orang yang baik, memiliki niat terbaik dan ingin menjadi front-end yang keren.
- Yah, mungkin, "Bintang Dewa" . Secara umum, seorang kandidat yang baik dengan siapa Anda dapat bernegosiasi dan membangun dialog.
Pada akhir penelitian kami,
7 kandidat mencapai final, mengkonfirmasikan keterampilan keras mereka dengan tugas tes yang keren dan jawaban yang baik untuk wawancara.
Kesesuaian budaya
Untuk perusahaan : Anda bekerja dengannya! Apakah kandidat benar-benar siap bekerja sangat keras untuk perkembangannya? Apakah dia akan cocok dengan tim?
Untuk junior : Anda bekerja dengan mereka! Apakah perusahaan siap untuk berinvestasi dalam pertumbuhan junior, atau hanya akan membuang semua pekerjaan kasar pada Anda?
Setiap junior, selain tim produk, yang pemimpinnya harus setuju untuk mengambilnya, sampai ke mentor. Tugas mentor adalah membimbingnya melalui proses tiga bulan onboarding dan memompa keterampilan keras. Oleh karena itu, kami datang ke setiap fit budaya sebagai mentor dan menjawab pertanyaan: "Apakah saya akan mengambil tanggung jawab untuk memompa kandidat selama 3 bulan sesuai dengan rencana kami?"
Panggung ini berlangsung tanpa fitur khusus dan sebagai hasilnya kami
memberikan 4 penawaran , 3 di antaranya diterima, dan mereka bergabung dengan tim.
Kehidupan setelah penawaran
Untuk perusahaan : Jaga junior Anda atau orang lain akan melakukannya!
Untuk Junior : AAAAAAAAAAAA !!!
Ketika seorang karyawan baru keluar, dia perlu naik - dimasukkan ke dalam proses, katakan bagaimana semuanya bekerja di perusahaan dan di tim dan bagaimana dia bekerja secara umum. Ketika seorang junior keluar, Anda perlu memahami cara mengembangkannya.
Ketika kami memikirkan hal ini, kami membentuk daftar 26 keterampilan yang, menurut pendapat kami, harus dimiliki seorang junior pada akhir periode tiga bulan naik pesawat. Itu termasuk keterampilan keras (menurut tumpukan kami), pengetahuan tentang proses kami, scrum, infrastruktur, dan arsitektur proyek. Kami menggabungkan mereka dalam peta jalan, didistribusikan dari waktu ke waktu selama 3 bulan.
Sebagai contoh, ini adalah peta jalan junior sayaKami melampirkan mentor untuk setiap junior yang bekerja dengannya secara individual. Bergantung pada mentor dan level kandidat saat ini, rapat dapat berlangsung dari 1 hingga 5 kali seminggu selama 1 jam. Inisiatif front-end yang ingin melakukan sesuatu lebih dari sekedar menulis kode secara sukarela menjadi mentor.
Sebagian beban dari mentor dihapus oleh kursus di tumpukan kami - Dart, Angular. Kursus diadakan secara teratur untuk kelompok kecil yang terdiri dari 4-6 orang, di mana para pria belajar di tempat kerja.
Selama 3 bulan, kami secara berkala mengumpulkan umpan balik dari junior, mentor dan pemimpin mereka dan menyesuaikan proses secara individual. 1-2 kali selama seluruh periode, keterampilan yang dipompa diperiksa, pemeriksaan yang sama dilakukan pada akhir - rekomendasi dibentuk atas dasar mereka, apa yang sebenarnya harus diperketat.
Kesimpulan
Untuk perusahaan : Apakah layak berinvestasi pada junior? Ya!
Untuk Junior : Cari perusahaan yang memilih kandidat dengan cermat dan tahu cara menumbuhkannya.
Selama 3 bulan kami melihat 122 kuesioner, 54 item tes dan melakukan 21 wawancara teknis. Ini memberi kami 3 junior keren yang sekarang telah menyelesaikan setengah dari roadmap onboarding dan akselerasi mereka. Mereka sudah menutup tugas produk nyata di proyek kami, di mana di frontend sendiri ada lebih dari 2.000.000 baris kode dan lebih dari 400 repositori.
Kami menemukan bahwa corong untuk junior bisa dan seharusnya cukup rumit, tetapi pada akhirnya hanya orang-orang yang benar-benar siap untuk bekerja banyak dan berinvestasi dalam pengembangan mereka melewatinya.
Sekarang tugas utama kami adalah untuk menyelesaikan roadmap tiga bulan untuk pengembangan untuk setiap junior dalam mode pekerjaan individu dengan seorang mentor dan kursus umum, untuk mengumpulkan metrik, umpan balik, pemimpin, mentor dan orang-orang itu sendiri. Pada ini, percobaan pertama dapat dianggap selesai, menarik kesimpulan, meningkatkan proses dan memulai lagi untuk memilih kandidat baru.