
Pendahuluan
Selama 2 tahun saya beruntung menghadiri lebih dari empat puluh wawancara sebagai kandidat untuk posisi "Pengembang Python Tengah". Pada lima belas wawancara terakhir, saya menyadari perlunya mengajukan pertanyaan kepada majikan agar tidak menemui kejutan pekerjaan di masa depan. Selain pertanyaan-pertanyaan dasar yang biasanya diajukan oleh para calon majikan, saya memutuskan untuk merumuskan pertanyaan-pertanyaan saya. Ketika saya mengajukan pertanyaan-pertanyaan ini di wawancara, saya menerima berbagai reaksi dari orang yang diwawancarai. Seseorang berkata bahwa saya sangat teliti, seseorang menganggap pertanyaan-pertanyaan ini terlalu dangkal, dan seseorang bahkan mulai merasa gugup (memerah) dan segera menyela wawancara dengan alasan yang tidak masuk akal bahwa ia ada rapat. Dalam artikel ini saya ingin berbicara tentang ide-ide umum menghadiri acara-acara seperti itu dan juga membawa 22 pertanyaan saya yang saya ajukan pada wawancara dengan majikan.
Ide umum
Wawancara dengan pengembang menengah sering terlihat sama dengan wawancara dengan junior.Memang benar. Ini disebabkan oleh kenyataan bahwa banyak pemimpin tim / direktur teknis tidak tahu apa yang sebenarnya ingin mereka lihat di pengembang menengah. Oleh karena itu, pada wawancara semacam itu mereka biasanya diminta untuk
"menulis dekorator" atau
"menulis semacam gelembung dalam bahasa apa pun" .
Juga, sedikit orang yang mengerti perbedaan pengembang junior dengan pengembang menengah. Seseorang berkata bahwa middle adalah pengembang dengan pengalaman dari satu setengah tahun, dan seseorang dari tiga. Dalam pemahaman saya, pengembang menengah adalah pengembang yang dapat dengan aman memberikan proyek kecil atau bagian mana pun dari proyek besar, dan ia bertanggung jawab untuk itu. Juga kriteria penting bagi pengembang menengah adalah kemampuan untuk menjadi mentor bagi seseorang atau hanya kemampuan untuk membantu karyawan baru menyusup ke proyek.
Wawancara bukan ujian, tetapi kesempatan untuk mengidentifikasi bagaimana perusahaan dan kandidat cocok bersama.Aturan penting ini seringkali tidak dipahami oleh pengusaha itu sendiri. Suatu kali saya berada di sebuah wawancara di mana saya dipaksa untuk menarik tiket dan menjawab kepada orang yang diwawancarai di selembar kertas. Terlebih lagi, sepanjang wawancara ini kami berbicara selama sepuluh menit. Perilaku yang sama sering dilacak oleh kandidat. Seringkali kandidat ingin menjawab semuanya dan berperilaku seperti siswa yang sangat baik dari meja pertama. Tapi di sini juga penting untuk memahami bahwa majikan tidak terlalu tertarik pada seberapa baik Anda mengetahui
"perbedaan antara Python2 dan Python3" . Adalah jauh lebih penting bagi majikan untuk memahami secara umum bagaimana Anda bertahan dalam wawancara, bagaimana Anda bernalar, bagaimana Anda bereaksi terhadap kegagalan, dll.
Pengembang menengah tidak bisa tanpa pengalaman.Tentu saja, itu mungkin, tetapi setelah beberapa waktu ini akan menimbulkan masalah besar baik untuk kepala pengembang ini dan untuk proyek. Untuk kandidat yang sangat berbakat tanpa pengalaman, spesialis SDM memiliki istilah mereka sendiri - "pengembang junior yang kuat". Kemungkinan besar, pengembang tersebut akan ditawari kompensasi uang yang baik, tetapi mereka akan memiliki tanggung jawab sebagai pengembang junior. Kembali ke pengembang menengah, saya ingin mencatat bahwa perantara adalah orang yang telah bekerja dalam pengembangan selama beberapa waktu dan memahami proses yang terdiri dari apa. Middle juga tahu cara bekerja dengan berbagai alat (pemantauan, penyebaran, pembuatan profil, pengujian) yang tidak mungkin ditemui oleh seseorang yang tidak memiliki pengalaman untuk tujuan pelatihan.
Soft skill menjadi faktor penting dalam posisi Pengembang menengah.Semakin tinggi posisinya, semakin banyak orang harus berinteraksi. Oleh karena itu, sangat sering ketika mempekerjakan posisi pengembang menengah, wawancara tambahan dibuat dengan seorang spesialis SDM untuk menyusun potret psikologis seorang calon karyawan. Wawancara ini harus dianggap serius seperti wawancara teknis. Anda perlu memahami bahwa Anda terus bekerja dengan orang-orang ini. Dan jika Anda merasa bahwa rekan masa depan Anda tidak terlalu cocok untuk Anda, maka lebih baik segera menolak kerjasama lebih lanjut.
Pekerjaan uji cenderung diberikan pada posisi pengembang menengah.Pernyataan ini cukup subyektif. Secara pribadi, saya benar-benar menemukan fakta seperti itu. Saya menghubungkan ini dengan fakta bahwa majikan lebih tertarik pada resume Anda. Jika resume tidak dikompilasi dengan baik, maka kemungkinan besar Anda harus menunggu tugas tes.
Pertanyaan
Di bagian ini, daftar pertanyaan utama yang saya ajukan kepada majikan saat wawancara akan disajikan. Mungkin setelah beberapa waktu daftar ini akan mengembang atau menyempit. Perlu dicatat bahwa pertanyaan-pertanyaan ini harus ditanyakan secara tepat pada wawancara teknis dan disarankan kepada siapa Anda nantinya akan berinteraksi.
1. Bagaimana dengan pengujian? Tes apa yang Anda tulis? Perpustakaan apa yang Anda gunakan untuk pengujian? ( pabrik , moki , dll.)Pengujian adalah bagian yang sangat penting dari pengembangan apa pun. Menurut pemahaman saya, semua pengembang harus menulis tes, setidaknya dalam beberapa bentuk. Satu-satunya yang dapat memaafkan kurangnya tes adalah startup. Dalam startup,
pergerakan sering berubah karena proyek-proyek lama biasanya tidak dibutuhkan oleh siapa pun. Jadi memastikan kualitas proyek seperti itu terbuang waktu. Untuk semua perusahaan lain, seharusnya tidak ada belas kasihan dalam hal ini. Anda perlu memahami bahwa pengenalan karyawan baru di proyek pada awalnya akan menyebabkan berbagai kesalahan dalam kode. Dan tes dalam hal ini adalah reasuransi pribadinya dan reasuransi orang yang akan menuangkan keputusannya ke dalam produksi.
Ketika majikan menjawab bagian kedua dari pertanyaan, Anda akan dapat memahami seberapa baik tim memastikan kualitas produk mereka dan juga kemungkinan tanggung jawab pengembang yang tidak dibahas dalam lowongan.
Perlu dicatat bahwa pada masalah ini, para ahli teknis sering mulai tersesat. Seseorang kadang-kadang mengatakan bahwa tim baru saja mulai menulis tes dan belum terbiasa dengan semua seluk-beluk kerajinan ini. Tetapi kadang-kadang saya mendengar jawaban ini:
"Penguji harus terlibat dalam pengujian, dan pengembang harus membuat." Ini sama sekali tidak benar.
Pengembang harus menulis tes minimum yang diperlukan, karena dialah yang tahu bagaimana fungsional yang ia buat harus bekerja. Tidak ada yang berbicara tentang kesia-siaan penguji. Tetapi penting untuk dipahami bahwa pengembang juga harus bertanggung jawab atas kualitas kode mereka.
2. Apa yang dilakukan pengembang dengan kode sebelum mengirimnya ke repositori?Pertanyaan ini merujuk ke verifikasi lokal kode Anda terhadap berbagai parameter. Berikut adalah daftar singkat dari kode apa yang biasanya diperiksa sebelum mengirim ke repositori:
- Flake8 - analisis kode untuk kepatuhan dengan PEP8 ,
- Pylint - analisis kode statis,
- Cakupan - analisis kode untuk cakupan tes,
- Tox - memeriksa kode untuk kompatibilitas dengan berbagai versi paket individual dan dengan versi Python yang berbeda.
Tidak adanya kasus ini dalam pembangunan tidak kritis. Juga, di banyak perusahaan kasus ini digunakan langsung di CI, dan pengembang tidak meluncurkan apa pun secara lokal. Bahkan jika ini tidak digunakan dalam pengembangan, alangkah baiknya jika orang-orang yang mewawancarai Anda memiliki pemahaman dasar tentang alat-alat ini.
3. Apakah ada proyek CI / CD? Apakah ada insinyur DevOps ?Pertanyaan ini tidak memiliki jebakan dan saya memintanya untuk lebih memahami perangkat perusahaan. Jika tidak ada CI / CD di proyek dan insinyur DevOps juga tidak ada, maka kemungkinan Anda akan melakukan ini. Karena itu, poin ini juga lebih baik untuk dibahas dalam sebuah wawancara.
4. Apakah ada Ulasan Kode? Bagaimana hasilnya?Bagian pertama dari pertanyaan dapat dibiarkan tanpa komentar, karena semua orang memahami pentingnya acara ini. Tetapi perlu dicatat bahwa saya pribadi tertarik dengan persis bagaimana kelanjutannya. Sering terjadi bahwa setiap tim merevisi pengembang yang membuat Permintaan Gabung. Tetapi kadang-kadang terjadi bahwa ada mentor / mentor atas pengembang mana pun, dan dialah yang meninjau pengembang. Saya menganggap pendekatan pertama lebih tepat, karena semakin banyak orang merevisi kode, semakin baik untuk proyek dan untuk tim. Di sini, aspek-aspek seperti kerja tim, tanggung jawab kolektif, dan peningkatan
faktor bus langsung terpengaruh.
5. Sistem kontrol versi apa yang Anda gunakan?Saat ini di Rusia ada banyak perusahaan yang masih menggunakan
hg ,
svn dan sistem kontrol versi kuno lainnya. Ini terutama berlaku untuk perusahaan yang telah berada di pasar selama lebih dari 10 tahun. Pertanyaan ini menguji lebih lanjut berapa umur perusahaan yang rentan terhadap teknologi baru. Perlu juga dicatat bahwa saya mengambil bagian dalam pengembangan menggunakan
hg untuk waktu yang singkat dan itu tidak memberi saya banyak kesenangan.
6. Apakah Anda menggunakan git / hg-flow atau metodologi tertentu saat bekerja dengan git / hg?Pertanyaan ini mengikuti dari pertanyaan sebelumnya tentang sistem kontrol versi. Karena itu, jika tim tidak menggunakan
git / hg , maka tidak ada gunanya bertanya. Jika perusahaan menggunakan
git / hg , maka pertanyaan ini akan menunjukkan seberapa baik proses pengembangan debugged.
7. Apakah Anda menggunakan metodologi pengembangan (scrum, kanban, dll.)?Dalam pengembangan, penting untuk mematuhi pendekatan spesifik (metodologi). Pendekatan pengembangan yang paling populer adalah iteratif. Pendekatan ini memungkinkan Anda untuk menentukan kontribusi Anda pada proyek. Dalam pemahaman saya, jika sebuah tim menggunakan semacam metodologi, ini pasti bagus. Ini memungkinkan Anda untuk menentukan efektivitas Anda. Ini juga membantu Anda memahami jadwal yang dialokasikan untuk tugas-tugas. Itu sama dengan anak sekolah yang memiliki 4/4 tahun, di mana mereka diberi nilai untuk kemudian menentukan nilai akhir untuk tahun tersebut.
8. Apakah sistem pemantauan digunakan dalam proyek (Sentry, NewRelic, dll.)?Kehadiran sistem pemantauan dalam proyek sama pentingnya dengan keberadaan tes. Ini adalah sistem pemantauan yang memungkinkan Anda untuk mengevaluasi pekerjaan seluruh sistem secara objektif berdasarkan tindakan yang dilakukan pengguna akhir. Jika tidak ada sistem pemantauan, maka Anda harus memikirkan kualitas produk yang diproduksi. Ini seperti juru masak yang memasak makanan, tetapi tidak pernah bertanya kepada siapa pun apakah itu enak.
9. Apakah proyek menggunakan sistem untuk menyimpan log dan bekerja dengannya (teknologi ELK, dll.)?Bagi saya, ini juga merupakan indikator penting. Jika tidak ada ELK, sangat sulit untuk menentukan penyebab kesalahan kompleks dalam sistem. Pertanyaan ini tidak begitu penting sebagai pertanyaan nomor 8, tetapi patut juga ditanyakan untuk memahami seberapa kaya pengalaman tim dalam membuat kesalahan yang kompleks.
10. Basis data apa yang digunakan dalam proyek? Kenapa ini?Pertanyaan ini bertujuan untuk menilai kompetensi orang yang diwawancarai. Sangat sering ketika menggunakan database lama saya mendengar sesuatu seperti "itu terjadi secara historis". Saya menganggap jawaban ini tidak pantas. Teknisi harus memahami kontra / kelebihan dari database yang ia gunakan. Pertanyaan ini harus ditanyakan hanya jika Anda sendiri berpengalaman dalam berbagai database dan perbedaannya.
11. Versi Python apa yang digunakan dalam proyek? Jika versi Python2.x digunakan, apakah ada rencana untuk bermigrasi ke Python3.x? Dan bagaimana Anda akan bermigrasi dari satu versi ke versi lainnya?Pertanyaan ini, seperti yang sebelumnya, ditujukan untuk menilai kompetensi orang yang diwawancarai, serta menilai alasannya. Harus dipahami bahwa pengusaha sangat buta huruf dan masalah-masalah semacam itu sudah dapat diidentifikasi pada tahap wawancara. Sebelum mengajukan pertanyaan semacam ini, saya sangat menyarankan Anda untuk membahasnya lebih dalam.
12. Apakah perusahaan mencari pengembang fullstack atau pengembang backend?Saya mengajukan pertanyaan ini hanya jika perusahaan itu sendiri tidak menentukannya sebelum wawancara. Pekerjaan fullstack-developer di pasar tenaga kerja dapat ditemukan cukup sering. Banyak perusahaan menemukan ini bermanfaat bagi diri mereka sendiri. Pengalaman pribadi saya memberi tahu saya bahwa tidak ada pengembang fullstack, karena frontend dan backend telah menjadi arah yang terlalu berbeda sejak Web muncul. Dengan kata lain, "Kamu tidak bisa duduk di dua kursi."
Dalam kebanyakan kasus, perusahaan merasa puas bahwa Anda tidak mengetahui garis depan dan berharap bahwa Anda akan mempelajarinya secara langsung dalam pertempuran. Saya akan mengklarifikasi bahwa lowongan fullstack-developer tidak dapat diterima untuk saya secara pribadi. Banyak orang menemukan ini peluang bagus untuk terjun ke dunia kaya frontend, dan tanpa membayar satu rubel pun.
13. Apakah teknologi kontainerisasi digunakan dalam proyek?Pertanyaan ini merupakan pelengkap dari Pertanyaan No. 3.
14. Tanyakan kepada pewawancara sedikit tentang apa yang dia lakukan sebelum proyek ini dan berapa lama dia dalam proyek tersebut.Pertanyaan ini sangat penting. Semakin kaya pengalaman orang yang Anda wawancarai, semakin banyak hal ini memengaruhi keterampilan Anda seiring waktu. Sangat baik untuk mengajukan pertanyaan semacam itu di perusahaan kecil di mana ada pergantian staf yang lambat.
15. Apakah perusahaan memiliki penilaian karyawan tahunan / triwulanan dan bagaimana hal itu terjadi?Berguna bagi karyawan mana pun untuk menerima umpan balik dari kolega mereka. Jika perusahaan memiliki acara khusus untuk ini, maka ini luar biasa. Jika tidak, maka tidak ada yang perlu dikhawatirkan. Dalam kasus apa pun, tidak ada yang melarang meminta umpan balik dari kolega dalam bentuk gratis.
16. Apakah perusahaan memiliki pemrosesan? Jika demikian, apakah mereka mengimbangi dan seberapa sering mereka terjadi?Hanya sedikit orang yang suka mendaur ulang, terutama jika Anda seorang siswa atau ayah yang menyusui. Ada sejumlah besar perusahaan yang menempatkan daur ulang di garis depan. Untuk memahami bahwa perusahaan tidak memiliki kilang atau jarang, perlu mengajukan pertanyaan semacam ini. Jika perusahaan sesekali terjadi pemurnian, maka tidak ada yang kritis. Jika pemurnian lebih sering, maka ada baiknya mempertimbangkan kelayakan tinggal lebih lanjut di perusahaan.
17. Seberapa kuat birokrasi di perusahaan? (Nilai dari 1 hingga 10)Banyak pengembang bahkan tidak menyadari kehadiran birokrasi di bidang TI, tetapi, sayangnya, ada. Ini berlaku terutama untuk perusahaan tua besar atau perusahaan yang bekerja dengan negara. pesanan. Tingkat birokrasi dalam suatu perusahaan hanya bergantung pada imajinasi manajemen. Biasanya, birokrasi terdiri dari berbagai aplikasi formal, pemandangan, akses, konflik kepentingan antara beberapa departemen perusahaan dan penulisan dokumentasi mentah yang membosankan di Word. Masalah utama birokrasi semacam itu adalah hambatan yang sangat kuat dari proses pembangunan. Apa yang dilakukan di perusahaan normal dalam satu hari kerja, maka akan butuh berminggu-minggu. Sederhananya, semakin kuat birokrasi di perusahaan, semakin lambat pengembangan produk dan pengembangan Anda sebagai spesialis.
18. Bagaimana situasi dengan pengupasan sumber daya?Sumber daya dipahami sebagai komputer baru untuk karyawan, server, domain, lisensi, dll. Masalah ini juga dapat dikaitkan dengan masalah birokrasi sebelumnya.
19. Bagaimana pewawancara berhubungan dengan implementasi baru dalam proyek?Pertanyaan ini memungkinkan kita menilai demokrasi di dalam tim. Dan juga pertanyaan ini akan memungkinkan Anda untuk memahami seberapa banyak suara pengembang biasa memiliki bobot untuk tim dan mentor.
20. Apakah perusahaan menjadi peserta dalam konferensi TI dan apakah perusahaan memiliki publikasi tentang topik-topik TI?Konferensi ini merupakan peluang besar bagi pengembang dan bagi perusahaan untuk menyatakan diri dan pencapaian mereka. Jika perusahaan diterbitkan dan merupakan peserta konferensi, maka pada titik tertentu Anda juga dapat menggunakan kesempatan ini. Jika ini tidak menarik bagi Anda, maka bertanya tentang hal itu tidak masuk akal.
21. Apakah ada mitaps dalam perusahaan?Di sini kita akan berbicara tentang mitaps pengembang dalam suatu tim atau antar tim. Mitapas sangat penting. Mereka memungkinkan Anda untuk mencari tahu siapa dan apa yang sebenarnya dilakukan pada waktu tertentu. Jika Anda memiliki masalah dengan berbicara di depan umum, ini juga akan berkontribusi pada pengembangan
soft skill Anda .
22. Apakah perusahaan memiliki karyawan magang dan sistem pendampingan?Magang adalah masa depan yang potensial bagi perusahaan. Jika perusahaan memiliki karyawan magang, maka mungkin Anda bisa menjadi mentor bagi mereka dan berbagi pengalaman pribadi Anda. Mentoring juga merupakan salah satu bidang di mana Anda dapat berkembang.
Kesimpulan
Semua hal di atas adalah pemikiran saya berdasarkan pengalaman pribadi dan bukan 100 persen informasi yang sebenarnya. Moral utama dari artikel ini adalah bahwa perlu untuk memeriksa tidak hanya kandidat, tetapi juga majikan. Juga, jangan gugup sebelum wawancara atau saat wawancara. Anda perlu memahami bahwa pewawancara adalah orang yang sama dengan Anda, yang juga salah atau tidak tahu atau tidak mengerti sesuatu.