Saat ini saya seorang programmer profesional. Saya ingin memperluas skillet saya, tetapi saya juga ingin membuat karir melompat menjadi pemimpin dev sebagai bagian dari tim. Saya tahu pasti ada banyak hal yang harus dipelajari (dan ini bukan hal yang instan) tetapi saya pikir saya cukup pintar untuk melakukannya dan saya siap menghadapi tantangan.
Saya yakin bahwa banyak anggota di sini mungkin telah melalui ini sendiri, dan sekarang memimpin dev yang sukses. Sayangnya, meskipun saya tahu beberapa bidang pribadi yang ingin saya tingkatkan (kedalaman pengetahuan, luasnya pengetahuan, keahlian, dll.), Saya tidak begitu yakin bagaimana saya akan memulai sesuatu seperti ini.
Sebagai seorang programmer sekarang, langkah apa yang harus saya ambil untuk mencapai tujuan ini? Apa yang harus saya prioritaskan?
sumber
Jawaban:
Untuk menjadi pemimpin teknis, berikut ini sangat penting
Kemampuan untuk membimbing anggota staf di semua tingkat senioritas, dari seseorang yang telah keluar dari universitas selama 3 bulan hingga seseorang yang telah pemrograman selama 30 tahun
Pengetahuan yang bagus tentang domain pengembangan Anda. Ini termasuk: bahasa, kerangka kerja, utilitas, lingkungan pengembangan
Pemahaman yang kuat tentang sistem manajemen masalah, keterampilan manajemen proyek dan kontrol versi
Jadilah pembunuh bug yang masuk
Tahu bagaimana melakukan tinjauan kode tepat waktu, apa yang harus dicari dan bagaimana meminimalkan jumlah waktu yang diperlukan untuk menahan dan untuk perubahan yang akan dilakukan
Ikuti perkembangan terbaru dalam domain pengembangan Anda. Misalnya, jika Anda tidak mempelajari kerangka kerja atau teknologi baru dari .NET 2, Anda akan melakukan hal-hal yang terbelakang hari ini.
Cara menulis unit test dan ejekan, dan membuat pengembang Anda juga menulisnya
Pengetahuan tentang apa pola desain dan kapan menggunakannya
Pengetahuan tentang apa kode bau dan bagaimana cara memitigasi mereka
Integrasi berkelanjutan
Kemampuan untuk merencanakan proyek dan rilis
Bergantung pada organisasi Anda dan apakah Anda memiliki arsitek staf, Anda mungkin perlu mengetahui yang berikut:
Kemampuan untuk membuat komponen proyek Anda dan memecahnya menjadi bagian fungsional
Pemahaman yang menyeluruh tentang keamanan, termasuk cara yang benar dalam menangani kata sandi, memisahkan sistem, mengamankan data, dll
Konsep perusahaan seperti bus layanan, antrian pesan, BizTalk
Pola desain perusahaan
Arsitektur layanan / RPC seperti SOAP dan REST
Kerangka kerja ORM seperti Hibernate, Entity Framework, Doctrine
Penempatan berkelanjutan
Awan
Kemampuan untuk merekomendasikan teknologi yang tepat untuk digunakan untuk suatu proyek. Ini mungkin sulit jika tim / toko Anda hanya .NET, atau PHP, atau Java.
Rancang aplikasi sedemikian rupa sehingga perangkat tambahan di masa depan akan mudah diakomodasi
Jika Anda ingin menjadi manajer pengembangan maka Anda juga perlu:
Dan akhirnya, beberapa poin lain yang direkomendasikan:
Pelajari di luar domain pengembangan Anda
Belajarlah untuk mengatakan TIDAK ketika ada hal-hal yang tidak mungkin atau berada di luar jangkauan atau konflik dengan pembatasan seperti anggaran atau waktu.
Mengelola tim adalah peran yang menantang. Anda harus menjadi orang yang dapat menjawab pertanyaan apa pun, Anda perlu mengetahui teknologi yang tepat untuk digunakan (kecuali jika Anda memiliki arsitek), Anda harus memiliki keterampilan manajemen orang dan dapat didekati oleh staf Anda (dengan asumsi posisi manajemen). Selain itu, Anda perlu memiliki keterampilan estimasi yang akurat untuk memastikan profitabilitas proyek dan Anda harus bisa membuat tangan Anda kotor dengan kode siapa pun untuk menunjukkan masalah dan memperbaikinya dengan cepat. Anda harus menghindari keinginan untuk melakukan semuanya sendiri dan untuk menumbuhkan lingkungan tim yang tidak beracun. Anda harus terus berada di atas tumpukan teknologi Anda dan mempelajari perkembangan dan teknik terbaru, serta tren industri yang lebih luas.
Anda juga harus benar-benar tahu setidaknya satu platform basis data, dan mengetahuinya dengan baik. Ketahui cara melakukan replikasi, prosedur tersimpan, cara kerja optimizer kueri, dan bagaimana merancang skema dengan benar, dan bidang apa yang diindeks.
Terlepas dari posisi yang tepat, peran senior mana pun mengharuskan Anda memiliki kemampuan untuk berkomunikasi secara efektif. Jika Anda bukan pembicara yang percaya diri, lihat melakukan sesuatu seperti Toast Masters (berbicara di depan umum). Pelajari cara melakukan dan melakukan kontak mata. Yakin. Pakaian yang sesuai untuk posisi itu. Menurut contoh.
sumber
Dalam pengalaman saya, Pimpinan memiliki sedikit kaitan dengan pekerjaan kotor pemrograman langsung dan lebih berkaitan dengan manajemen. Untuk itu saya akan merekomendasikan yang berikut ini
Investasikan lebih banyak waktu dalam pengejaran dan pengembangan desain dan arsitektur . Sebagai pemimpin, fungsi Anda akan berpusat pada memberikan bimbingan dan arahan teknis kepada tim Anda. Anda akan lebih ditugasi untuk memahami bagaimana potongan-potongan keseluruhan cocok bersama dan lebih sedikit tentang cara kerja pipa ledeng. Jangan salah paham, Anda memerlukan potongan-potongan teknis yang kuat untuk menjadi pemimpin yang efektif dan berpengetahuan luas, tetapi pandangan yang lebih tinggi tentang apa yang terjadi dan bagaimana cara kerjanya akan menjadi lebih penting di sini. Anda harus tahu lebih banyak pola desain praktik terbaik dan praktik pengkodean yang efektif
Belajarlah untuk multi-tugas dan mengatur waktu . Jika Anda mahir sekarang, itu bagus: mengembangkan lebih banyak. Sebagai pengembang, Anda hanya perlu mengkhawatirkan tugas / proyek Anda saat ini. Sebagai petunjuk, Anda harus melakukannya
Persiapkan diri Anda untuk mendelegasikan diri secara efektif . IMO ini akan menjadi bit yang paling sulit untuk disesuaikan. Sebagai seorang pengembang, Anda terbiasa membuat tangan Anda kotor, menyelesaikan pekerjaan. Melakukan semua pipa ledeng dan penelitian. Itu harus dihentikan atau dikurangi. Pertunjukan datang, Anda membagikannya ke tim. Anda akan mendapatkan bagian dari tindakan, bukan hanya sebanyak yang Anda terbiasa. Dan Anda akan menggigit lidah Anda untuk menahan godaan untuk menyudutkan lebih banyak tindakan untuk diri sendiri.
Sepanjang jalur yang lebih profesional, pertimbangkan beberapa pelatihan yang tidak hanya akan meningkatkan kemampuan Anda, tetapi juga mengubah pandangan Anda . Kursus kilat dalam mengatakan manajemen proyek perangkat lunak tidak akan sakit. Lean Six Sigma juga merupakan program pelatihan yang sangat baik (saya bisa bersaksi tentang kemanjurannya) yang akan membantu Anda melihat penyelesaian masalah dari sudut yang lebih logis. Belum lagi dari posisi Pimpinan, Anda siap untuk peran yang bahkan lebih senior yang akan memerlukan lebih sedikit keterampilan teknis dan kemampuan manajemen yang lebih banyak.
Asah keterampilan komunikasi dan interpersonal Anda . Anda akan menjadi titik masuk utama ke tim Anda dari dunia luar. Manajer Anda atau penyelia lain akan mendatangi Anda terlebih dahulu. Unit / tim lain di organisasi Anda akan berinteraksi dengan Anda tentang apa pun yang menyangkut tim terlebih dahulu. Anda akan mengelola sumber daya yang paling sulit dan tidak dapat diprediksi dari semua: orang. Anda perlu menumbuhkan kulit yang tebal, belajar menelan kebanggaan dalam jumlah besar dan bertanggung jawab atas kegagalan tim Anda.
sumber
Hal-hal yang Sam belum katakan yang juga penting:
Cara menentukan spesifikasi dan memberikan pekerjaan pengembang lain. Bagian dari pekerjaan Anda adalah menjaga pengembang lain 100% dimanfaatkan. Menulis spesifikasi yang tidak ambigu sangat penting.
Cara membangun aplikasi kerangka / prototipe yang harus diikuti semua orang
Cara menumbuhkan moral tim yang baik
Cara menghadiri, mengarahkan, dan memimpin rapat, cara mendokumentasikan item tindakan
Cara memperkirakan, menulis rencana proyek, dan memperbarui rencana proyek
Cara mengintip ke masa depan - jika masalah akan terjadi dalam 3 bulan Anda ingin mencoba untuk menghadang sedini mungkin. Jika pengembang akan berlibur selama 7 minggu, Anda harus mulai merencanakannya sekarang.
Bagaimana cara berbicara dengan manajemen. Mereka berbicara bahasa yang berbeda dengan kita. Beri mereka solusi, bukan masalah. Beri tahu mereka apa arti hal teknis bagi mereka.
Dan sementara Sam sudah mengatakan ini, salah satu hal terpenting adalah belajar bagaimana mengatakan tidak . Anda akan melakukan ini banyak . Cara lain untuk melihatnya adalah dengan mengatakan ya , tetapi "hanya jika kita bisa mendapatkan lebih banyak uang / waktu / sumber daya" - atau "itu untuk rilis kedua" :)
sumber
Semua ini sesuai dengan buku dan jawaban yang bagus. Izinkan saya untuk memukul Anda dengan kenyataan.
Percaya atau tidak, sebagian besar waktu Anda akan dihabiskan untuk menjelaskan manajer
Untuk ini, Anda perlu keterampilan menjelaskan hal-hal teknis kepada orang-orang non-teknis, dalam istilah non-teknis. Dan itu sangat sulit. misalnya pertimbangkan untuk menjelaskan P = NP hingga 6 tahun. Sayangnya tidak ada pelatihan formal untuk itu, dan Anda harus mempelajarinya sendiri.
Juga ini adalah posisi di mana politik mulai memukul Anda. Manajer akan memberitahu Anda untuk mendukung seseorang karena dia mengikuti prosesnya, tetapi Anda tahu bahwa orang tersebut tidak berguna dalam tim Anda karena berbagai alasan mulai dari kurangnya keterampilan teknis hingga bukan anggota tim yang baik. Jadi Anda masih harus tidak hanya bekerja dengan orang ini tetapi juga memberikan peringkat yang baik kepada orang ini. Sebaliknya adalah orang yang memiliki keterampilan yang baik dan anggota tim yang sangat efektif tetapi yang tidak tahu cara menyenangkan manajemen dan karenanya mendapat peringkat lebih sedikit.
Lalu ada pertemuan tidak berguna yang dilakukan seseorang pada posisi tinggi memegang dari lokasi terpencil, memberi ceramah tentang proses yang efektif dan bagaimana variasi proses terbarunya akan meningkatkan produktivitas. Anda harus tahu cara menyembunyikan wajah Anda yang membosankan dan terlihat bersemangat.
sumber