Untuk waktu yang lama bekerja di berbagai bidang TI, tim peneliti dan saya mengamati semua masalah yang mungkin terjadi menjadi pengembang dan semua penyebab dan konsekuensi dari kekurangan mereka. Kami tertarik pada: mengapa seorang programmer berkembang menjadi spesialis
senior begitu lama atau tidak menjadi sama sekali? Dari mana harapan yang tidak bisa dibenarkan datang dari kedua belah pihak? Dan yang paling penting - apa yang harus dilakukan pengembang di setiap level untuk memasuki kasta istimewa senior, arsitek, pemimpin tim, dan pemimpin?
Kami melakukan studi ekstensif di antara programmer dan para pemimpin mereka. Kami mengumpulkan persyaratan untuk pengembang
senior perusahaan papan atas, peluang dan cara untuk berkembang ke tingkat ini, menghasilkan semua jenis wawasan dan peretasan kehidupan dan mengubahnya menjadi artikel ini. Semua ini akan dibahas lebih lanjut.

Senior, siapa ... Alice Senior?
Analisis uraian pekerjaan tentang jam dan persyaratan yang dibagikan manajer dalam percakapan tatap muka menunjukkan bahwa tidak ada pendekatan tunggal untuk menentukan tingkat
senior . Di satu perusahaan, ini adalah orang yang mampu merancang modul kompleks sendiri, di perusahaan lain - untuk terhubung ke penyempurnaan solusi individu, di perusahaan ketiga - orang yang hanya lebih dingin daripada yang lain.
Di dalam perusahaan itu sendiri, persyaratannya juga berbeda secara signifikan antara manajer, pemimpin tim, SDM dan pemrogram itu sendiri.
Akibatnya, pengembang mendapatkan sejumlah masalah: tanpa definisi persyaratan yang memadai, tidak ada visi yang jelas tentang jalur karier dan langkah pengembangan. Pertanyaan: βLevel apa yang saya miliki sekarang? Apakah saya mendapat bagian darinya? Berapa yang harus saya tingkatkan ke tingkat selanjutnya? " - kami mendengar di mana-mana.
Alih-alih pengembangan sistematis, perlu untuk menyelesaikan tugas standar, menunggu perhatian manajemen, mempelajari kerangka kerja, tidak menyadari apakah mereka akan memajukan karir ke depan. Kami menyarankan: ketika Anda memasuki perusahaan atau sekarang - pelajari tentang persyaratan tidak hanya untuk level saat ini, tetapi juga ke tingkat tertinggi yang dimungkinkan. Jadi Anda mendapatkan visi perspektif pembangunan dan dapat mengaitkannya dengan setiap langkah.
Evaluasi programmer - karya programmer?

Perkembangan Anda tergantung pada tahap apa Anda saat ini. Tetapi bagaimana cara mengevaluasinya? Ini masalah kedua.
Beberapa wawasan diperoleh dari jajak pendapat: 70% programmer
SMP mencoba untuk mengevaluasi diri mereka sendiri. Paradox: semakin rendah level yang dinilai, semakin dia beroperasi dengan idenya sendiri.
Pada tahap awal, tidak ada kedalaman pengetahuan dan luasnya horizon - gambarnya sangat terbatas. Dan penilaian semacam itu melebih-lebihkan gagasan tingkat mereka dalam 86% kasus.
Kami merekomendasikan: sedini mungkin beralih dari metode penilaian "internal" (pendapat Anda sendiri, pengalaman) ke "eksternal" - minta umpan balik dari pemimpin sendiri, serang kolega yang paling berpengalaman, bandingkan tugas dan metode penyelesaiannya, pergi untuk wawancara dengan perusahaan-perusahaan top, di mana level persyaratan lebih tinggi dan basis tes lebih baik, dll. Penilaian manajer harus diobyektifkan oleh hasil dari sumber alternatif, agar tidak jatuh ke dalam perangkap keterbatasan kemampuan dan persyaratan perusahaan / departemen / proyek saat ini.
Namun ada cara yang lebih pendek. Kami sendiri telah menyusun daftar persyaratan perusahaan papan atas untuk
para profesional
senior . Dan mereka menemukan kelambatan serius yang terbentuk antara tingkat
menengah dan
senior .
Jika Anda tidak tahu ke mana Anda pergi, kemungkinan besar Anda akan menemukan diri Anda berada di tempat yang salah.

Kami mengkompilasi persyaratan dan menemukan bahwa tidak hanya kode yang baik mengubah seorang spesialis
junior menjadi
middl . Di tingkat
junior , seorang programmer harus menguasai semua teknologi yang diperlukan dan kemampuan untuk memecahkan masalah khas pada prinsipnya, belajar menulis kode secara kompeten dan cepat. Di tingkat pengembang
menengah , budaya kode, kemampuan untuk berpikir lebih dalam dan lebih luas, melaksanakan tugas yang lebih besar secara mandiri dan dapat menerapkan berbagai alat pengembangan sudah diperlukan.
Perbedaan antara
menengah dan
senior jauh lebih tipis. Di sinilah pengembang membentuk lag, yang tidak semua orang bisa atasi sendiri. Ini adalah serangkaian keterampilan dan kualitas pribadi yang tersirat, tetapi tidak ada yang berbicara dengan jelas tentang: tanggung jawab untuk sebagian besar sistem yang dikembangkan, pendampingan, kemampuan untuk merumuskan secara mandiri dan mengusulkan solusi teknis yang optimal, keterampilan komunikasi, dll.
Jadi siapa yang super
senior ? Untuk memformalkan persyaratan, kami harus melangkah sejauh mungkin dan mengumpulkan semua yang ditunjukkan oleh perusahaan-perusahaan dari Yandex, Luxoft, Mail.Ru Group, dan bahkan tingkat Google di sumber terbuka. Dan juga memverifikasi informasi ini dalam percakapan dengan manajer pengembangan perusahaan terkemuka.
Keterampilan keras1. Kebersihan kode;
2. Keterampilan Keras Tingkat Atas:
- Pengetahuan tentang algoritma dan struktur data (ini adalah basis, yang tanpanya tidak ada tempat);
- Pengetahuan tentang prinsip-prinsip OOP;
- Pengetahuan tentang kerangka kerja modern (dan semakin lama daftarnya, semakin baik; pengisian reguler diterima);
- Memahami prinsip-prinsip desain, arsitektur dasar (secara mandiri mendesain sistem / modul sebagai headliner proyek, atau berpartisipasi dalam desain sistem besar; minimal - menyelesaikan tugas yang banyak dengan mempertimbangkan arsitektur proyek saat ini);
- Pengetahuan tentang pola desain (untuk mengenali dan menerapkan sepeda tepat waktu, dan tidak menemukan kembali roda; dalam arti luas, komunikasi tim dalam satu bahasa untuk dengan cepat menemukan solusi atau mengevaluasi keputusan rekan kerja);
- Pengalaman dalam berinteraksi dengan DBMS relasional dan NoSQL, membangun pertanyaan untuk mereka, optimalisasi dan keterampilan manajemen;
- Memahami prinsip-prinsip organisasi pengujian, pengetahuan tentang pengujian unit, idealnya - beralih ke pengujian otomatis alih-alih pengujian manual;
- Memiliki setidaknya satu sistem kontrol versi (paling sering Anda memerlukan yang spesifik, tergantung pada persyaratan perusahaan).
Keterampilan Lembut dan cakrawala profesionalPersyaratan misterius yang sama, sangat diremehkan oleh programmer sendiri. Seringkali manajemen dan SDM perusahaan beroperasi pada konsep "kerja tim" dan "tanggung jawab", tetapi mereka tidak memformalkan kriteria atau manifestasinya dalam kehidupan. Akibatnya, 90% pengembang tidak menyebutkan aspek-aspek ini sebagai penting untuk pengembangan.
- Memahami metodologi pengembangan yang fleksibel, kemampuan untuk bekerja dengan mereka dan menyesuaikannya dengan spesifik proyek;
- Mentoring: kemampuan untuk mengambil junior, pemula, dan kadang-kadang seluruh tim jika dibutuhkan;
- Kemampuan untuk menemukan dan menawarkan teknologi, alat untuk implementasi terbaik, penilaian kompeten dari serangkaian tugas;
- Keterampilan kerja tim: menyusun kesepakatan, membuat keputusan tim, mempertahankan hubungan, berfokus pada hasil tim, mengejar kepentingan bersama;
- Tingkat tanggung jawab pribadi adalah penerimaan tanggung jawab di bidang: tujuan dan rencana, hubungan profesional, kepemimpinan, pengembangan karir.
Gagasan menguji kemampuan kita sendiri di semua blok yang tercantum disajikan kepada kita oleh kelangkaan total alat untuk mengevaluasi apa pun selain tingkat kemahiran bahasa di pasar Rusia. Untuk kebutuhan proyek penelitian kami, kami telah menyusun versi uji coba untuk 3 bahasa, yang membantu untuk bernavigasi dengan cepat di level saat ini, dan juga menyoroti kekuatan dan kelemahan.
Untuk meringkas, mengevaluasi diri sendiri secara memadai menggunakan jumlah maksimum sumber daya eksternal sangat penting. Untuk menghindari masalah klasik di pasar tenaga kerja - βharapan pengembang vs. realitas perusahaan. " Ketika pengembang mengevaluasi keterampilan mereka dan nilainya lebih tinggi daripada yang siap dilakukan perusahaan. Mereka juga berharap untuk take-off dan pengembangan cepat, yang sejauh ini tidak terjadi (untuk lebih jelasnya, lihat artikel berikutnya).
PS Dalam versi awal artikel, kami mengusulkan untuk lulus ujian untuk semua orang. Namun, kami tidak mengharapkan arus masuk responden yang kuat. Dan mereka dipaksa untuk menutup tes agar dapat memproses jawaban dan hasil saat ini kepada mereka yang meninggalkan detail kontak. Silakan isi tes untuk kesabaran :)