Hai, nama saya Pasha! Saya bekerja di Mad Devs, dan saya pikir hanya pemrograman tidak cukup untuk menjadi spesialis yang baik.
Saya harap materi ini tidak melukai perasaan seseorang. Materi ini adalah upaya untuk mengungkapkan sistem keterampilan programmer modern dari sudut yang berbeda. Tidak lagi
Seorang programmer adalah tautan penting dalam rantai perangkat lunak. Tanpa itu, perangkat lunak baru tidak dapat dibuat. Apa yang begitu penting bagi seorang programmer? Apa yang menjadi tanggung jawabnya, karena ia begitu tak tergantikan.
Saya ingin segera menarik perhatian Anda pada kenyataan bahwa tanggung jawab seorang programmer tergantung pada timeline sejarah. Kami akan kembali sekitar 20 tahun yang lalu.

Meme ini tidak ada hubungannya dengan citra pengembang modern. Namun demikian, mari kita bahas apa yang menjadi tanggung jawab spesialis hebat ini. Kemungkinan besar, dia sedang mengembangkan sistem yang tidak stabil dalam operasi. Pengguna perangkat lunak ini adalah yang disebut pengguna komputer pribadi tingkat lanjut pada waktu itu. Pada saat itu, hanya pengguna tingkat lanjut yang dapat menggunakan perangkat lunak di luar editor teks.
Apa tanggung jawab spesialis seperti itu? Seharusnya hanya menulis kode dalam satu bahasa pemrograman. Spesialis ini dengan bangga menyebut dirinya C ++ - seorang programmer (menggantikan bahasa pemrograman lain, populer saat itu). Kepemimpinannya, sebagai suatu peraturan, tidak sepenuhnya mengerti apa yang dia lakukan. Dalam hal ini, ia memiliki kesempatan untuk menciptakan citra kegiatannya, yang ia sendiri harapkan. Gambar ini bisa negatif, programmer tidak dibayar banyak, itu sebabnya mereka marah. Mungkin positif, dia bisa menyelesaikan masalah dari kepemimpinannya dan menciptakan sihir yang bermanfaat. Beberapa rekan saya masih percaya bahwa mempertahankan citra spesialis negatif adalah norma. Di perusahaan mereka, manajer masih tidak mengerti apa yang mereka lakukan, dan para spesialis ini benar-benar negatif tentang seluruh dunia mereka di sekitar mereka. Tetapi tidak banyak dari mereka - itu menyenangkan. Ngomong-ngomong, menurut saya perusahaan IT adalah perusahaan di mana manajer memahami apa yang terjadi di industri modern. Ini adalah kriteria yang cukup untuk menjadi perusahaan IT, seperti untuk saya.
Dalam hal ini, pertanyaannya: apa tanggung jawab programmer modern? Pertanyaan ini dapat dijawab untuk waktu yang sangat lama, tetapi saya akan mencoba mengungkapkannya lebih cepat, dan segera membuang hal-hal yang penting, tetapi dapat meregangkan materi ini hingga tak terbatas. Dan kita akan mulai mengungkapkannya dengan kompetensi yang dimiliki oleh seorang programmer modern.
Kompetensi spesialis modern dalam industri apa pun dibagi menjadi tiga kategori besar:
- Keterampilan keras;
- Keterampilan lunak;
- Keterampilan digital.
Logika menunjukkan bahwa dalam setiap spesialis semua jenis keterampilan harus dikembangkan secara setara. Mereka saling melengkapi satu sama lain.
Saya tidak akan mengungkapkan persyaratan ini, karena dalam bahasa Rusia mereka bahkan tidak memiliki nama permanen. Banyak profesional pendidikan merujuk pada keterampilan ini secara berbeda, sehingga membingungkan pendengar kadang-kadang. Saya akan memperhatikan tabel korespondensi dari nama-nama ini.
Jika nama masalahnya, dengan definisi dan lebih dari itu. Saya hanya akan memberikan konsep-konsep yang diperlukan untuk diskusi hari ini.
Singkatnya. Setiap spesialis membutuhkan tepat satu keterampilan profesional : seorang programmer - untuk memprogram, seorang pembangun - untuk membangun, seorang ahli bedah - untuk pembedahan (lelucon yang tidak pantas), dan sebagainya. Keterampilan ini mencakup jumlah pengetahuan tak terbatas yang dimiliki seorang spesialis. Dalam kasus seorang programmer, ini termasuk memahami dasar yang sangat bagus yang semua orang harus tahu, memahami prinsip-prinsip bahasa pemrogramannya, dan sebagainya.
Keterampilan digital adalah cerita yang berbeda untuk sebagian besar profesi. Karena IT menembus semua industri saat ini. Sulit menemukan industri yang tidak dijitalkan hari ini: di lain waktu, saya akan mengatakan bahwa ini adalah agama, tetapi tidak! Oleh karena itu, untuk spesialis di sebagian besar profesi, keterampilan digital adalah artikel terpisah yang dapat digunakan untuk bekerja. Untuk programmer, keterampilan digital dan keterampilan profesional, untuk alasan yang jelas, tumpang tindih. Meskipun saya setiap programmer, saya pikir saya harus menjadi pengguna perangkat lunak yang canggih. Maksud saya, gunakan berbagai layanan untuk mengatur hidup Anda, cobalah membuat rumah yang cerdas, gunakan aplikasi modern seumur hidup dan sebagainya. Ini mengembangkan keterampilan digital lebih banyak. Bagaimanapun, untuk menjadi pemasok yang baik, senang menjadi konsumen yang baik.
Keterampilan yang terlalu profesional - ini adalah hal yang akan kita bahas lebih detail. Dibandingkan dengan keterampilan profesional, masing-masing spesialis membutuhkan beberapa, dan lebih disukai, keterampilan supraprofesional. Contoh keterampilan profesional: manajemen waktu, menemukan sumber daya, menggunakan sumber daya, keterampilan negosiasi, keterampilan komunikasi, mengelola orang, berbicara di depan umum, dll.
Mengapa saya membutuhkan keterampilan ini? Saya menulis dalam Bereaksi! - Akan terdengar dari penonton.
Di sinilah perbedaan yang sangat besar dalam tanggung jawab antara programmer 20 tahun yang lalu dan programmer saat ini dimulai. Hari ini kita adalah pemasok masa depan, tanpa kita, pengembangan perangkat lunak tidak mungkin. Kolega kami dari perusahaan (manajer, pemilik produk, penjualan, pemangku kepentingan, pemasar, dan lainnya) membutuhkan bantuan kami. Kompetensi kami (yaitu keterampilan profesional) dan bagaimana kami dapat menerapkannya terkadang memainkan peran yang menentukan dalam pengembangan suatu produk. Kenapa begitu? Saya menggambarkan dalam sebuah artikel tentang tumpukan penuh nyata di HabrΓ©. Ini menjelaskan di mana Anda perlu menerapkan keterampilan profesional Anda lebih dari kebanyakan dari kita terbiasa. Bahkan, keterampilan yang saya tulis sekarang hanya menambah kualitas yang sangat keren yang kami kembangkan di Mad Devs - kedekatan pelanggan (kedekatan dengan pelanggan).
Seperti yang saya tulis di atas, semua jenis keterampilan harus dikembangkan secara sama di setiap spesialis. Dan untuk menerapkan keterampilan profesional Anda secara kualitatif dalam situasi yang saya jelaskan di artikel di tautan di atas, Anda juga harus memiliki keterampilan super profesional yang berkembang dengan baik.
Yang mana secara spesifik? Saya akan membuat daftar 6 keterampilan profesional penting yang menurut saya harus dimiliki oleh spesialis modern:
- Manajemen waktu . Di sini saya pikir, jelas. Keterampilan manajemen waktu hanya secara tidak langsung berkaitan dengan penilaian tugas. Penilaian tugas adalah keterampilan profesional. Manajemen waktu untuk seorang programmer adalah distribusi logis dari waktu untuk pengkodean, membaca artikel, pendidikan mandiri dan demonstrasi.
- Kemampuan untuk bekerja dalam tim . Hampir tidak ada yang mengerjakan proyek sendiri. Kemampuan untuk bekerja dalam tim adalah keterampilan yang sangat diperlukan.
- Kemampuan mengajar . Dan tepatnya, kemampuan untuk memperkenalkan ke dalam konteks, keterampilan yang sebanding dengan kemampuan untuk mengajar. Tugas orang yang mengajar pada dasarnya adalah pengantar konteks. Hanya set pengetahuan yang lebih luas. Pemrogram sangat sering mengubah konteks karena perubahan proyek dan tim. Dan kemampuan untuk memperkenalkan kolega ke dalam konteks, menunjukkan rincian yang paling penting dan menghilangkan yang tidak perlu, adalah keterampilan yang sangat penting, mengingat betapa mahalnya operasi memasuki konteks saat ini. Ngomong-ngomong, keterampilan ini juga digunakan dalam pendampingan.
- Etiket bisnis . Mulai dari kepatuhan dengan aturan bahasa Rusia dan berakhir dengan aturan dasar untuk berkomunikasi dengan pelanggan. Beberapa pebisnis lupa bahwa mereka tidak berada dalam obrolan lambat dari toko kelontong atau kerangka kerja Yii (gantikan teknologi Anda). Di beberapa perusahaan, etiket bisnis penting dalam korespondensi melalui surat di dalam perusahaan. Pada kami di Mad Devs, etika bisnis hanya penting dalam konteks ketika penting untuk produk yang kami buat. Jika lebih mudah bagi anggota tim untuk memahami jenis komunikasi ini saja, etiket komunikasi semacam itu akan diadopsi. Tetapi setidaknya semua pelanggan yang bekerja dengan saya adalah orang-orang yang terutama berfokus pada hasil dan lebih suka berkomunikasi tanpa sup yang serius. Di sini untuk masing-masing. Tapi! Kemampuan untuk memasukkan etiket bisnis ketika situasi mengharuskannya penting!
- Pengaturan tujuan . Dua macam. Pribadi dan desain. Katakan padaku, programmer, siapa kamu dalam 5 tahun? Sebuah pertanyaan tipikal dalam wawancara, tetapi jawaban untuk itu membantu untuk memahami bagaimana seseorang berhubungan dengan perencanaan jangka panjang. Pendapat pribadi saya (ini berarti bahwa saya tidak memaksakan pada siapa pun, yang berarti tidak ada gunanya berdebat): terlepas dari entropi dunia modern, perencanaan jangka panjang DIBUTUHKAN, DIBUTUHKAN, DIBUTUHKAN! Tidak ada yang meminta Anda untuk tetap pada rencana apa pun yang terjadi. Rencana perlu diubah, dan ini adalah cara dewasa. Tetapi mengingat tujuan dan rangkaian tugas untuk tahun-tahun mendatang (lebih disukai sekitar 10 tahun) adalah pedoman yang sesuai dengan keputusan yang dibuat. Secara khusus, saya merasa lebih mudah untuk bekerja dengan orang-orang dengan perencanaan jangka panjang. Anda dapat berinvestasi dan berkembang bersama mereka tanpa takut akan turun hujan besok. Penetapan tujuan dalam proyek juga merupakan poin penting. Sebagai seorang programmer, bahkan jika Anda membuang semua jenis omong kosong tentang keterampilan dan hal-hal profesional ini, Anda bertanggung jawab untuk salah satu bagian dari proyek. Dan Anda perlu merencanakan pengembangan bagian proyek ini dalam jangka panjang. Apa abstraksi akan muncul, modul mana yang akan pergi secara terpisah untuk menjalani kehidupan mereka sendiri, dan sebagainya.
- Kemasyarakatan . Ini tentang kemampuan berkomunikasi dengan kolega dari profesi lain. Bersikap responsif, bantu kolega memahami masalah mereka yang terkait dengan keterampilan profesional kami. Jadilah penyelamat bagi mereka ketika mereka macet dan sebagainya. Sociability juga membantu menjalin kontak dengan pelanggan, dan ini selalu berguna untuk proyek apa pun.
Keahlian supraprofesional ini, menurut saya, akan membantu untuk sepenuhnya mengungkapkan keterampilan profesional Anda.
Pesan utama bahwa seorang programmer hari ini bukan kode typer. Ini adalah unit tempur yang penting: unit yang dapat memutuskan hasil pertempuran jika menggunakan semua mantranya dengan benar.
Dan untuk ini, Anda tidak hanya harus menjadi pengembang yang baik dan dapat membuat kode, tetapi juga memiliki seperangkat keterampilan yang sekilas sedikit membantu dalam pelaksanaan tugas mereka, tetapi tidak demikian halnya.
Kami menjawab pertanyaan: apa tanggung jawab programmer modern. Dalam perkiraan pertama, ini adalah kode untuk ditulis. Tetapi pada kenyataannya, seorang programmer modern yang baik dalam banyak kasus memiliki serangkaian tanggung jawab yang tidak jelas, sebanyak konsep keterampilan profesional saat ini tidak jelas. Ini, selain segalanya, tergantung pada perusahaan, tim, proyek, dan pemimpin tim.
Tentu saja, setiap pengembang memutuskan siapa dia seharusnya. Dan keterampilan apa yang harus dikembangkan, apa yang penting, dan sebagainya. Anda dapat terus menjadi pemanggil kode, dan di tahun-tahun mendatang Anda akan merasa sangat baik.
Benar, ada ahli yang akan mengatakan bahwa spesialis TI yang sempit akan segera mulai mati. Kepunahan total tidak mengancam mereka, tetapi dalam bentuk di mana mereka sekarang, profesi tidak akan tetap pasti.
Ada proyek yang sangat menarik: Atlas profesi baru . Lihat dan lihat bahwa profesi baru adalah, sebagai aturan, profesi dari jenis TI + industri lain.
Ada sesuatu yang hilang dalam profesi JS-
.
Saya berharap materi ini tidak melukai perasaan siapa pun. Materi ini adalah upaya untuk mengungkapkan sistem keterampilan programmer modern dari sudut yang berbeda. Tidak lagi