Keterampilan apa yang harus saya kembangkan untuk menjadi pemimpin pengembangan / teknis? [Tutup]

82

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?

makan siangme317
sumber
Apakah ada peluang di perusahaan Anda saat ini untuk dipromosikan menjadi pemimpin tim? Tanpa pengalaman memimpin tim, saya bertanya-tanya apakah terlalu banyak perusahaan hanya mempekerjakan dari dalam.
JeffO
@ Jeffe Aku benar-benar baru saja berganti pekerjaan. Saya tidak tahu apakah saya akan memiliki kesempatan di sini - saya pikir ada kemungkinan, tetapi ini adalah startup kecil dan saya pikir hanya akan ada satu pemimpin dev pada satu waktu.
lunchmeat317
2
Hanya satu keterampilan: kemampuan untuk membujuk seseorang yang dapat memberikan posisi ini untuk memberikan posisi ini kepada Anda.
vortexwolf
1
Ternyata, ada kemungkinan yang sangat berbeda bahwa saya sebenarnya tidak cocok untuk ini. Seperti halnya saya ingin memajukan karir saya ke arah ini, saya pikir saya lebih jatuh pada sisi pengembang hal - saya hanya ingin meletakkan kepala saya dan kode, kadang-kadang. Masih mempertimbangkan kemungkinan, tapi sekarang dengan hati-hati.
lunchmeat317

Jawaban:

90

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:

  • Keterampilan mewawancarai dan bagaimana menemukan staf yang tepat
  • Bagaimana menangani masalah orang dengan anggota tim Anda
  • Mengelola arahan / tujuan bisnis dan mengonversi yang relevan ke informasi untuk pengembang Anda
  • Kemampuan untuk memperkirakan waktu bagi programmer dengan berbagai keterampilan
  • Kemampuan untuk mengalokasikan tugas ke pengembang yang benar berdasarkan pada keterampilan dan kemampuan mereka

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.

Sam
sumber
2
Saya hanya membuat sketsa beberapa ide yang bisa saya pikirkan dengan cepat. Saya akan mengunjungi kembali dan menambahkan lebih banyak nanti. Pertanyaan bagus.
Sam
Saya dapat manfaat kedua dari Toastmasters. Ini sangat membantu saya dalam karir saya. Mampu mengkomunikasikan pikiran Anda dengan jelas (terutama pemikiran teknis kepada orang-orang non-teknis) adalah keterampilan yang sangat berharga untuk dimiliki.
Jason Swett
27

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

  1. 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

  2. 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

    • Untuk menghadiri lebih banyak rapat daripada yang Anda pedulikan. Ini mungkin bagian yang paling mematikan dari kepemimpinan tim
    • Bekerja pada alokasi sumber daya. Jika Anda beruntung, sumber daya akan langka dan banyak proyek.
    • Memimpin dalam arsitektur dan desain proyek
    • Bergantung pada ukuran dan struktur organisasi, berikan segudang laporan, sesuai jadwal dan tepat waktu. Pikirkan pemimpin sebagai manajer proyek sewa rendah.
  3. 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.

  4. 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.

  5. 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.

kolossus
sumber
2
Jawaban yang bagus, saya suka bagaimana Anda telah mencatat semua hal yang sebagai pengembang Anda umumnya tidak tahu - khususnya delegasi. Pekerjaan terakhir saya mendelegasikan semua yang saya bisa dan masih memiliki segunung barang untuk menyibukkan diri. Kemudian selama saat-saat bebas (jarang) saya akan melakukan hal-hal "membosankan" - menawarkan untuk membantu memperbaiki bug kecil, dokumentasi. Harus memimpin dari depan.
Rocklan
2
+1 untuk menggarisbawahi bahwa peran 'pemimpin' sering kali melibatkan lebih banyak manajemen daripada keterampilan teknis
Krease
Ini adalah jawaban yang luar biasa dan benar-benar menangkap esensi dari peran tersebut. Sudah selesai dilakukan dengan baik.
Lloyd Moore
14

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" :)

Rocklan
sumber
Saya pikir banyak dari karya Anda masuk ke dalam arsitek atau ember PM. Tapi ya, terkadang pemimpin dev harus melakukan itu.
SandRock
11

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

  • bagaimana masalah sulit dipecahkan atau
  • mengapa itu tidak bisa diselesaikan dalam garis waktu yang diberikan atau
  • bahkan seberapa tidak penting untuk dipecahkan.

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.

Manoj R
sumber
1
"Harus tahu cara menyembunyikan wajah membosankanmu dan terlihat energik" hahaha
Adrien Be
Saya selalu merasa bosan ketika pertemuan ini dimulai, kecuali sesuatu yang berkaitan dengan teknis dibahas
Akshay Mukadam