Mengapa hanya menaik taraf pengekodan anda tidak akan menjadikan anda pembangun yang lebih baik

Mengapa hanya menaik taraf pengekodan anda tidak akan menjadikan anda pembangun yang lebih baik

Techlead Skyeng Kirill Rogovoy (flashhhh) memberikan pembentangan di persidangan di mana beliau bercakap tentang kemahiran yang perlu dibangunkan oleh setiap pembangun yang baik untuk menjadi yang terbaik. Saya meminta dia berkongsi cerita ini dengan pembaca Habra, saya memberi ruang kepada Kirill.

Mitos tentang pembangun yang baik ialah dia:

  1. Menulis kod bersih
  2. Mengetahui banyak teknologi
  3. Mengekod tugas lebih cepat
  4. Mengetahui sekumpulan algoritma dan corak reka bentuk
  5. Boleh memfaktorkan semula mana-mana kod menggunakan Kod Bersih
  6. Tidak membuang masa untuk tugas bukan pengaturcaraan
  7. 100% menguasai teknologi kegemaran anda

Inilah cara HR melihat calon yang ideal, dan kekosongan, sewajarnya, kelihatan seperti ini juga.

Tetapi pengalaman saya mengatakan bahawa ini tidak begitu benar.

Pertama, dua penafian penting:
1) pengalaman saya ialah pasukan produk, i.e. syarikat dengan produk mereka sendiri, bukan penyumberan luar; dalam penyumberan luar segala-galanya boleh menjadi sangat berbeza;
2) jika anda seorang junior, maka tidak semua nasihat akan terpakai, dan jika saya adalah anda, saya akan menumpukan pada pengaturcaraan buat masa ini.

Pembangun yang baik: realiti

1: Lebih baik daripada kod purata

Pembangun yang baik tahu cara mencipta seni bina yang hebat, menulis kod yang hebat dan tidak membuat terlalu banyak pepijat; Secara umum, dia melakukan lebih baik daripada purata, tetapi dia tidak berada dalam 1% pakar teratas. Kebanyakan pembangun paling hebat yang saya tahu bukanlah pengkod yang hebat: mereka hebat dalam apa yang mereka lakukan, tetapi mereka tidak boleh melakukan sesuatu yang luar biasa.

2: Menyelesaikan masalah daripada menciptanya

Bayangkan kita perlu menyepadukan perkhidmatan luaran ke dalam projek. Kami menerima spesifikasi teknikal, melihat dokumentasi, melihat bahawa ada sesuatu yang sudah lapuk di sana, memahami bahawa kami perlu lulus parameter tambahan, membuat beberapa pelarasan, cuba melaksanakan semuanya entah bagaimana dan membuat beberapa kaedah bengkok berfungsi dengan betul, akhirnya, selepas pasangan hari kita faham bahawa kita tidak boleh terus seperti ini. Tingkah laku standard pembangun dalam situasi ini ialah kembali ke perniagaan dan berkata: β€œSaya melakukan ini dan itu, yang ini tidak berfungsi dengan cara itu, dan yang ini tidak berfungsi sama sekali, jadi fikirkan sendiri. ” Perniagaan mempunyai masalah: anda perlu menyelidiki apa yang berlaku, berkomunikasi dengan seseorang dan cuba menyelesaikannya. Telefon yang rosak bermula: "anda beritahu dia, saya akan menghantar mesej kepadanya, lihat apa yang mereka jawab."

Pemaju yang baik, menghadapi situasi sedemikian, akan mencari kenalan sendiri, menghubunginya melalui telefon, membincangkan masalah itu, dan jika tiada apa-apa yang berjaya, dia akan mengumpulkan orang yang betul, menerangkan segala-galanya dan menawarkan alternatif (kemungkinan besar, ada yang lain. perkhidmatan luaran dengan sokongan yang lebih baik). Pembangun sedemikian melihat masalah perniagaan dan menyelesaikannya. Tugasnya ditutup apabila dia menyelesaikan masalah perniagaan, dan bukan apabila dia menghadapi sesuatu.

3: Cuba untuk menghabiskan usaha yang minimum untuk mendapatkan hasil yang maksimum, walaupun ia bermakna menulis tongkat

Pembangunan perisian dalam syarikat produk hampir selalu merupakan item perbelanjaan terbesar: pemaju mahal. Dan pembangun yang baik memahami bahawa perniagaan ingin mendapatkan jumlah maksimum wang dengan membelanjakan minimum. Untuk membantunya, pemaju yang baik mahu menghabiskan jumlah minimum masa mahalnya untuk mendapatkan keuntungan maksimum untuk majikan.

Terdapat dua keterlaluan di sini. Satu ialah anda secara amnya boleh menyelesaikan semua masalah dengan tongkat, tanpa mengganggu seni bina, tanpa pemfaktoran semula, dsb. Kita semua tahu bagaimana ini biasanya berakhir: tiada apa yang berfungsi, kami menulis semula projek dari awal. Satu lagi ialah apabila seseorang cuba menghasilkan seni bina yang ideal untuk setiap butang, menghabiskan satu jam pada tugas dan empat untuk pemfaktoran semula. Hasil kerja sedemikian kelihatan hebat, tetapi masalahnya ialah di bahagian perniagaan ia mengambil masa sepuluh jam untuk menyelesaikan satu butang, dalam kedua-dua kes pertama dan kedua, hanya untuk sebab yang berbeza.

Pembangun yang baik tahu cara mengimbangi antara keterlaluan ini. Dia memahami konteks dan membuat keputusan yang optimum: dalam masalah ini saya akan memotong tongkat, kerana ini adalah kod yang disentuh sekali setiap enam bulan. Tetapi dalam yang ini, saya akan mengganggu dan melakukan segala-galanya dengan betul yang mungkin, kerana seratus ciri baharu yang masih belum dibangunkan akan bergantung pada apa yang saya berjaya.

4. Mempunyai sistem pengurusan perniagaan sendiri dan mampu mengusahakan projek yang mempunyai sebarang kerumitan di dalamnya.

Bekerja berdasarkan prinsip Mendapatkan Perkara Selesai – apabila anda menulis semua tugas anda dalam beberapa jenis sistem teks, jangan lupa sebarang perjanjian, tolak semua orang, muncul di mana-mana tepat pada masanya, tahu apa yang penting dan apa yang tidak penting pada masa ini, anda tidak pernah kehilangan tugas. Ciri umum orang sedemikian ialah apabila anda bersetuju dengan sesuatu dengan mereka, anda tidak pernah bimbang bahawa mereka akan lupa; dan anda juga tahu bahawa mereka menulis segala-galanya dan tidak akan bertanya seribu soalan, jawapan yang telah dibincangkan.

5. Bersoal jawab dan menjelaskan sebarang syarat dan pengenalan

Di sini juga terdapat dua keterlaluan. Di satu pihak, anda boleh ragu-ragu tentang semua maklumat pengenalan. Orang sebelum anda menghasilkan beberapa penyelesaian, tetapi anda fikir anda boleh melakukan yang lebih baik dan mula membincangkan semula semua perkara yang datang sebelum anda: reka bentuk, penyelesaian perniagaan, seni bina, dsb. Ini membuang banyak masa untuk pembangun dan orang di sekelilingnya, dan mempunyai kesan negatif terhadap kepercayaan dalam syarikat: orang lain tidak mahu membuat keputusan kerana mereka tahu bahawa lelaki itu akan kembali dan memecahkan segala-galanya. Keterlaluan yang lain ialah apabila pembangun menganggap sebarang pengenalan, spesifikasi teknikal dan kehendak perniagaan sebagai sesuatu yang diukir di dalam batu, dan hanya apabila berhadapan dengan masalah yang tidak dapat diselesaikan barulah dia mula berfikir sama ada dia melakukan apa yang dia lakukan sama sekali. Pembangun yang baik juga mencari jalan tengah di sini: dia cuba memahami keputusan yang dibuat sebelum atau tanpa dia, sebelum tugas itu masuk ke dalam pembangunan. Apa yang perniagaan mahukan? Adakah kita menyelesaikan masalahnya? Pereka produk menghasilkan penyelesaian, tetapi adakah saya faham mengapa penyelesaian itu akan berfungsi? Mengapa ketua pasukan menghasilkan seni bina khusus ini? Jika ada yang tidak jelas, maka anda perlu pergi bertanya. Dalam proses penjelasan ini, pembangun yang baik mungkin melihat penyelesaian alternatif yang tidak pernah berlaku kepada sesiapa sebelum ini.

6. Meningkatkan proses dan orang di sekeliling anda

Terdapat banyak proses yang berlaku di sekeliling kita - mesyuarat harian, pertemuan, scrum, ulasan teknologi, ulasan kod, dsb. Pembangun yang baik akan berdiri dan berkata: lihat, kita berkumpul dan membincangkan perkara yang sama setiap minggu, saya tidak faham mengapa, kita mungkin menghabiskan masa ini untuk Contra. Atau: untuk tugas ketiga berturut-turut saya tidak boleh masuk ke dalam kod, tiada apa yang jelas, seni bina penuh dengan lubang; Mungkin kod semakan kami lumpuh dan kami perlu memfaktorkan semula, mari memfaktorkan semula pertemuan setiap dua minggu. Atau semasa semakan kod, seseorang melihat bahawa salah seorang rakan sekerjanya tidak menggunakan alat tertentu dengan cukup berkesan, yang bermakna dia perlu tampil kemudian dan memberi nasihat. Pembangun yang baik mempunyai naluri ini; dia melakukan perkara sedemikian secara automatik.

7. Cemerlang mengurus orang lain, walaupun bukan pengurus

Kemahiran ini berkait rapat dengan tema "menyelesaikan daripada mencipta masalah." Selalunya, dalam teks kekosongan yang kami mohon, tiada apa yang ditulis mengenai pengurusan, tetapi kemudian, apabila menghadapi masalah di luar kawalan anda, anda masih perlu menguruskan orang lain dalam satu atau lain cara, mencapai sesuatu daripada mereka, jika anda terlupa - tolak, pastikan mereka memahami segala-galanya. Pembangun yang baik tahu siapa yang berminat dengan apa, boleh memanggil mesyuarat dengan orang-orang ini, menulis perjanjian, menghantar mereka ke kendur, mengingatkan mereka pada hari yang betul, pastikan semuanya sudah siap, walaupun dia tidak bertanggungjawab secara langsung untuk tugas ini, tetapi hasilnya bergantung pada pelaksanaannya.

8. Tidak menganggap pengetahuannya sebagai dogma, sentiasa terbuka kepada kritikan

Semua orang boleh mengingati rakan sekerja dari pekerjaan sebelumnya yang tidak dapat berkompromi dengan teknologinya dan menjerit bahawa semua orang akan terbakar di neraka kerana beberapa mutasi yang salah. Seorang pemaju yang baik, jika dia bekerja selama 5, 10, 20 tahun dalam industri, memahami bahawa separuh daripada pengetahuannya busuk, dan separuh lagi dia tidak tahu sepuluh kali lebih banyak daripada yang dia tahu. Dan setiap kali seseorang tidak bersetuju dengannya dan menawarkan alternatif, ia bukan serangan terhadap egonya, tetapi peluang untuk mempelajari sesuatu. Ini membolehkan dia berkembang lebih cepat daripada orang di sekelilingnya.

Mari bandingkan idea saya tentang pembangun yang ideal dengan yang diterima umum:

Mengapa hanya menaik taraf pengekodan anda tidak akan menjadikan anda pembangun yang lebih baik

Gambar ini menunjukkan berapa banyak mata yang diterangkan di atas berkaitan dengan kod, dan berapa banyak yang tidak. Pembangunan dalam syarikat produk hanyalah satu pertiga pengaturcaraan, baki 2/3 tidak ada kaitan dengan kod. Dan walaupun kami menulis banyak kod, keberkesanan kami sangat bergantung pada dua pertiga yang "tidak relevan" ini.

Pengkhususan, generalisme dan peraturan 80-20

Apabila seseorang belajar menyelesaikan beberapa masalah yang sempit, belajar panjang dan bersungguh-sungguh, tetapi kemudian menyelesaikannya dengan mudah dan ringkas, tetapi tidak mempunyai kepakaran dalam bidang berkaitan, ini adalah pengkhususan. Generalisme adalah apabila separuh daripada masa latihan dilaburkan dalam bidang kecekapan sendiri, dan separuh lagi dalam bidang berkaitan. Oleh itu, dalam kes pertama, saya melakukan satu perkara dengan sempurna dan selebihnya dengan buruk, dan dalam kes kedua, saya melakukan semuanya dengan lebih kurang baik.

Peraturan 80-20 memberitahu kita bahawa 80% daripada hasil datang daripada 20% daripada usaha. 80% daripada hasil datang daripada 20% daripada pelanggan, 80% daripada keuntungan datang daripada 20% daripada pekerja, dan sebagainya. Dalam pengajaran, ini bermakna 80% pengetahuan yang kita perolehi dalam 20% pertama masa yang dihabiskan.

Terdapat idea: pengekod hanya perlu membuat kod, pereka bentuk hanya perlu mereka bentuk, penganalisis harus menganalisis, dan pengurus hanya perlu mengurus. Pada pendapat saya, idea ini adalah toksik dan tidak berfungsi dengan baik. Ini bukan tentang semua orang perlu menjadi askar sejagat, ini tentang penjimatan sumber. Jika pembangun memahami sekurang-kurangnya sedikit tentang pengurusan, reka bentuk dan analitik, dia akan dapat menyelesaikan banyak masalah tanpa melibatkan orang lain. Jika anda perlu membuat beberapa jenis ciri dan kemudian menyemak cara pengguna bekerja dengannya dalam konteks tertentu, yang memerlukan dua pertanyaan SQL, maka adalah bagus untuk tidak mengalihkan perhatian penganalisis dengan ini. Jika anda perlu membenamkan butang dengan analogi dengan yang sedia ada, dan anda memahami prinsip umum, anda boleh melakukannya tanpa melibatkan pereka bentuk, dan syarikat akan berterima kasih kepada anda untuknya.

Jumlah: anda boleh menghabiskan 100% masa anda untuk mempelajari kemahiran sehingga had, atau anda boleh menghabiskan masa yang sama pada lima kawasan, meratakan sehingga 80% dalam setiap satu. Mengikuti matematik naif ini, kita boleh memperoleh empat kali lebih banyak kemahiran dalam jumlah masa yang sama. Ini adalah keterlaluan, tetapi ia menggambarkan idea itu.

Kemahiran yang berkaitan boleh dilatih bukan sebanyak 80%, tetapi sebanyak 30-50%. Selepas menghabiskan 10-20 jam, anda akan bertambah baik dalam bidang berkaitan, mendapat banyak pemahaman tentang proses yang berlaku di dalamnya dan menjadi lebih autonomi.

Dalam ekosistem IT hari ini, adalah lebih baik untuk mempunyai seberapa banyak kemahiran yang mungkin dan tidak menjadi pakar dalam mana-mana daripada mereka. Kerana, pertama, semua kemahiran ini cepat pudar, terutamanya apabila ia datang kepada pengaturcaraan, dan kedua, kerana 99% masa kita menggunakan bukan sahaja asas, tetapi sudah tentu bukan kemahiran yang paling canggih, dan ini cukup walaupun dalam pengekodan, walaupun dalam syarikat yang keren.

Dan akhirnya, latihan adalah pelaburan, dan kepelbagaian adalah penting dalam pelaburan.

Apa yang hendak diajar

Jadi apa yang hendak diajar dan bagaimana? Pembangun biasa dalam syarikat yang kukuh selalu menggunakan:

  • komunikasi
  • organisasi diri
  • perancangan
  • reka bentuk (biasanya kod)
  • dan kadangkala pengurusan, kepimpinan, analisis data, menulis, merekrut, mentor dan banyak lagi kemahiran lain

Dan boleh dikatakan tiada kemahiran ini bersilang dengan kod itu sendiri. Mereka perlu diajar dan dinaik taraf secara berasingan, dan jika ini tidak dilakukan, mereka akan kekal pada tahap yang sangat rendah, yang tidak membenarkan mereka digunakan dengan berkesan.

Apakah bidang yang patut dibangunkan?

  1. Kemahiran insaniah adalah segala-galanya yang tidak melibatkan menekan butang dalam editor. Beginilah cara kami menulis mesej, cara kami berkelakuan dalam mesyuarat, cara kami berkomunikasi dengan rakan sekerja. Ini semua nampaknya perkara yang jelas, tetapi selalunya ia dipandang remeh.

  2. Sistem organisasi diri. Bagi saya secara peribadi, ini telah menjadi topik yang sangat penting sepanjang tahun lalu. Di antara semua pekerja IT yang hebat yang saya kenali, ini adalah salah satu kemahiran yang paling maju: mereka sangat teratur, mereka sentiasa melakukan apa yang mereka katakan, mereka tahu dengan tepat apa yang akan mereka lakukan esok, dalam seminggu, dalam sebulan. Adalah perlu untuk membina sistem di sekeliling anda di mana semua perkara dan semua soalan direkodkan; ini sangat memudahkan kerja itu sendiri dan sangat membantu untuk berinteraksi dengan orang lain. Saya merasakan bahawa sepanjang tahun lalu, pembangunan ke arah ini telah meningkatkan saya lebih daripada meningkatkan kemahiran teknikal saya; Saya mula melakukan lebih banyak kerja setiap unit masa.

  3. Proaktif, berfikiran terbuka dan merancang. Topik ini sangat umum dan penting, bukan unik untuk IT, dan semua orang harus membangunkannya. Proaktiviti bermaksud tidak menunggu isyarat untuk mengambil tindakan. Anda adalah sumber peristiwa, bukan reaksi terhadapnya. Berfikiran terbuka ialah keupayaan untuk menangani sebarang maklumat baharu secara objektif, untuk menilai keadaan secara berasingan daripada pandangan dunia sendiri dan tabiat lama. Perancangan adalah visi yang jelas tentang bagaimana tugas hari ini menyelesaikan masalah untuk minggu, bulan, tahun. Jika anda melihat masa depan melangkaui tugas tertentu, lebih mudah untuk melakukan apa yang anda perlukan, dan jangan takut selepas masa untuk menyedari bahawa ia telah sia-sia. Kemahiran ini amat penting untuk kerjaya: anda boleh berjaya mencapai keputusan selama bertahun-tahun, tetapi di tempat yang salah, dan akhirnya kehilangan semua bagasi terkumpul apabila menjadi jelas bahawa anda bergerak ke arah yang salah.

  4. Semua bidang berkaitan ke peringkat asas. Setiap orang mempunyai bidang khusus mereka sendiri, tetapi adalah penting untuk memahami bahawa dengan menghabiskan 10-20 jam masa untuk meningkatkan beberapa kemahiran "asing", anda boleh menemui banyak peluang dan tempat hubungan baharu dalam kerja harian anda, dan waktu ini mungkin cukup sehingga tamat kerjaya.

Apa yang perlu dibaca

Terdapat banyak buku tentang organisasi diri; ia merupakan industri keseluruhan di mana beberapa lelaki pelik menulis koleksi nasihat dan mengumpul latihan. Pada masa yang sama, tidak jelas apa yang mereka sendiri telah capai dalam hidup. Oleh itu, adalah penting untuk meletakkan penapis pada pengarang, melihat siapa mereka dan apa yang mereka ada di belakang mereka. Perkembangan dan pandangan saya paling dipengaruhi oleh empat buku, semuanya dalam satu cara atau yang lain berkaitan dengan meningkatkan kemahiran yang diterangkan di atas.

Mengapa hanya menaik taraf pengekodan anda tidak akan menjadikan anda pembangun yang lebih baik1. Dale Carnegie "Cara Memenangi Rakan dan Mempengaruhi Orang". Buku kultus tentang kemahiran insaniah, jika anda tidak tahu di mana untuk bermula, memilihnya adalah pilihan menang-menang. Ia dibina berdasarkan contoh, mudah dibaca, tidak memerlukan banyak usaha untuk memahami apa yang anda baca, dan kemahiran yang diperoleh boleh digunakan dengan segera. Secara keseluruhan, buku ini merangkumi topik berkomunikasi dengan orang ramai.

Mengapa hanya menaik taraf pengekodan anda tidak akan menjadikan anda pembangun yang lebih baik2. Stephen R. Covey "7 Tabiat Orang yang Sangat Berkesan". Gabungan kemahiran yang berbeza, daripada proaktiviti kepada kemahiran insaniah, dengan penekanan untuk mencapai sinergi apabila anda perlu mengubah pasukan kecil menjadi kuasa yang besar. Ia juga mudah dibaca.

Mengapa hanya menaik taraf pengekodan anda tidak akan menjadikan anda pembangun yang lebih baik3. Ray Dalio "Prinsip". Mendedahkan tema pemikiran terbuka dan proaktif, berdasarkan sejarah syarikat yang dibina oleh pengarang, yang diuruskannya selama 40 tahun. Banyak contoh yang sukar diperoleh dari kehidupan menunjukkan betapa prejudis dan bergantung kepada seseorang, dan bagaimana untuk menghilangkannya.

Mengapa hanya menaik taraf pengekodan anda tidak akan menjadikan anda pembangun yang lebih baik4. David Allen, "Mendapatkan Perkara". Wajib membaca untuk belajar mengatur diri. Ia tidak begitu mudah untuk dibaca, tetapi ia menyediakan satu set alat yang komprehensif untuk mengatur kehidupan dan hal ehwal, meneliti semua aspek secara terperinci, dan membantu anda memutuskan apa sebenarnya yang anda perlukan. Dengan bantuannya, saya membina sistem saya sendiri yang membolehkan saya sentiasa melakukan perkara yang paling penting tanpa melupakan yang lain.

Anda mesti faham bahawa membaca sahaja tidak mencukupi. Anda boleh menelan sekurang-kurangnya satu buku seminggu, tetapi kesannya akan bertahan selama beberapa hari, dan kemudian semuanya akan kembali ke tempatnya. Buku harus digunakan sebagai sumber nasihat yang segera diuji dalam amalan. Jika anda tidak melakukan ini, maka semua yang mereka akan berikan hanyalah meluaskan ufuk anda.

Sumber: www.habr.com

Tambah komen