Saya telah menjadi pengembang langsung untuk seluruh karier dan suka bekerja dengan kode. Saya selalu membenci pemimpin tim yang memiliki sedikit atau tidak ada keahlian tentang teknologi tertentu dan bersikeras pada implementasi tertentu.
Sekarang saya menemukan diri saya di sisi lain dari kaca yang terlihat. Saya adalah pengembang utama dari klien besar yang akan diimplementasikan dalam C #, namun keahlian saya dalam membangun aplikasi web Java. Meskipun saya tahu bahwa saya dapat memanfaatkan pola desain dan paradigma OO dalam bahasa apa pun, saya bingung ketika berbicara tentang standar pengkodean, alat siklus hidup proyek dan prosedur rilis / distribusi. Saya tidak ragu bahwa saya dapat mengambil dasar-dasarnya dalam satu atau dua bulan, tetapi ada pengalaman tertentu yang hanya dapat dikumpulkan dengan waktu.
Apa yang harus saya lakukan, dan bagaimana saya menghindari menjadi pemimpin proyek yang saya benci ketika saya sedang berkembang?
Jawaban:
Jujur, tidak masalah seberapa banyak pengalaman yang Anda miliki dengan teknologi, saran saya adalah sama: Jangan memaksakan keputusan teknologi pada mereka yang harus tinggal bersama mereka saat Anda sibuk mengelola.
Jujurlah pada dirimu sendiri. Saya berani bertaruh alasan Anda membenci para manajer sebelumnya itu bukan karena mereka tidak memiliki basis pengetahuan untuk membuat keputusan, itu karena mereka menegakkan keputusan dan tidak pernah berurusan dengan konsekuensinya.
Itu berlaku apakah Anda belum pernah menyentuh .NET sebelumnya atau Anda adalah pengembang paling ahli di tim. Tugas Anda sekarang adalah mengelola, bukan membuat keputusan teknis.
Mengelola mungkin, tergantung pada tingkat keahlian pengembang Anda, berarti menasihati mereka ketika mereka memintanya. "Apakah Anda sudah melihat ke Spring.NET?" (perhatikan kurangnya instruksi di sana) adalah hal yang sangat baik untuk dikatakan. Juga, "Google berkeliling, lihat apa yang dilakukan seluruh dunia, kami bukan yang pertama menghadapi masalah ini."
Dalam beberapa hal, sebagai pengembang Java yang berpengalaman, Anda mungkin berada dalam posisi yang lebih baik daripada kebanyakan untuk ini. Sebagian besar kerangka kerja Java dan teknologi memiliki analog yang setara dalam .NET. Jadi, Anda tidak perlu mengatakan "Ini yang terbaik untuk digunakan," Anda bisa mengatakan "Saya sudah menggunakan ini di Jawa, apakah Anda tahu tentang. NET yang setara?"
Juga dorong banyak percakapan dalam tim. Atur pertemuan diskusi teknis mingguan. Yang Anda butuhkan hanyalah informasi, pada akhirnya; Anda perlu tahu keputusan apa yang mereka buat dan mengapa. Anda tidak perlu membuat keputusan untuk tim.
sumber
Saya memiliki beberapa manajer / pemimpin tim yang sangat baik yang tahu sedikit tentang teknologi, dan beberapa manajer terburuk saya adalah mereka yang berpikir mereka tahu segalanya.
Untuk menjadi seorang pemimpin, jika Anda memiliki orang-orang yang kompeten, hal utama adalah untuk dapat menilai kompetensi dan penilaian mereka, dan memberikan setiap kebebasan sebanyak yang dia bisa tangani, sambil menjaga "bebek liar" dalam tugas dan "hampir tidak" kompeten "sibuk dengan" aman "tetapi kegiatan produktif. Pastikan semua orang berbaris ke drum yang sama.
Tantangan Anda yang lebih besar cenderung menjaga manajemen tingkat atas. Mereka akan menginginkan laporan, jadwal, dan tanda centang, dan Anda perlu mencari tahu apa yang mereka inginkan dan bagaimana memalsukannya dengan cukup baik. (Yah, tidak sepenuhnya "palsu", tetapi menghasilkan dokumentasi yang memuaskan mereka tanpa menghabiskan waktu Anda atau waktu tim Anda.)
sumber
Anda tidak dipilih untuk keterampilan coding C # Anda, dan kecuali Anda akan menulis kode sejak awal, tidak masalah apakah Anda tahu C # atau tidak. Anda harus mulai berpikir di tingkat yang lebih tinggi:
Beberapa dari hal-hal ini mungkin menyeberang ke wilayah manajemen proyek, tetapi sebagai pengembang utama Anda akan bekerja sama dengan manajer proyek dalam hal ini dan masalah lainnya.
Dengan segala cara, belajarlah untuk menjadi efektif bekerja dalam C # secepat mungkin. Ingatlah bahwa peran Anda adalah untuk melihat melewati sintaks dan rincian kerangka kerja dan melihat gambar yang lebih besar.
sumber
Ambil pendekatan langsung. Mulailah dengan mengambil primer C # sederhana dan tulis beberapa kode. Cobalah beberapa hal dasar yang Anda tahu cara melakukannya dengan mata tertutup dalam bahasa lain.
Baca tentang gaya dan konvensi pemrograman. Anda harus menemukan ini sebagian dalam primer Anda, tetapi Anda juga dapat menggunakan produk seperti StyleCop dan Resharper untuk menegakkan aturan gaya yang Anda tidak kenal. Ini secara efektif akan melatih Anda dengan sangat cepat untuk melakukan hal-hal dengan cara yang diterima secara umum untuk menghindari masalah dalam mengkompilasi perangkat lunak Anda.
Jadilah diri sendiri, dan terapkan pengetahuan desain yang sudah Anda miliki. Dasar-dasarnya pada dasarnya sama terlepas dari bahasa. Di mana akan ada perbedaan akan dalam bagaimana bahasa berbeda dalam hal struktur akan cukup minim, dan banyak dari itu akan menjadi sangat cepat ketika Anda mengumpulkan satu atau dua aplikasi uji.
Jika ada hal-hal yang jelas Anda tidak tahu, akan datang. Tim Anda akan menghormati kejujuran lebih dari sekadar menerobos tanpa petunjuk. Buatlah keputusan yang tepat dan beralasan, dan selalu luangkan beberapa menit untuk mempertimbangkan tanggapan Anda. Anda harus tegas tanpa berusaha untuk mendominasi, dan Anda tidak bisa membiarkan kurangnya pengetahuan Anda di satu bidang tampaknya merupakan refleksi pada kemampuan Anda untuk memimpin tim. Kepemimpinan berarti mentoring, namun mentoring tidak berarti Anda tidak bisa juga menunjukkan keinginan untuk mempelajari sesuatu yang baru.
sumber
Jika Anda berpikir seperti itu dan benar-benar khawatir tentang hal itu, Anda sudah menghindari risiko menjadi pemimpin proyek semacam ini. Jenis kepribadian yang sangat berbeda yang berani mengambil keputusan tanpa pengetahuan yang memadai. Tetaplah berpikiran terbuka terhadap apa yang dikatakan rekan kerja Anda dan ciptakan serta dorong budaya dialog dan pertukaran informasi dalam tim Anda.
sumber
Kedengarannya seperti itu adalah beberapa masalah yang dimainkan di sini.
Teknologi yang digunakan dalam proyek yang Anda pimpin dan proses yang mengatur pengembangan proyek itu.
Apakah Anda pemimpin tim, atau pengembang utama? Pengembang utama juga melakukan sedikit pekerjaan desain dan pengembangan. Jadi satu-satunya cara untuk mengatasi ini adalah dengan menyerah dan mempelajari teknologi baru .
Jika Anda benar-benar memimpin tim, Anda perlu mempercayai tim dan membiarkan mereka mengarahkan sebagian besar arahan teknis proyek. Tentu saja, secara konseptual, Anda akan dapat menjaga kemudi itu ke arah yang benar.
Proses yang mengatur pengembangan proyek sebagian besar harus ada . Ini hanya masalah membaca mereka, memahami mereka dan mengeksekusi mereka.
Jika tidak, bernegosiasi dengan bos Anda untuk mendapatkan mentor untuk membantu Anda menerapkan beberapa proses pengembangan. Ini sangat penting. Ini akan gagal dengan cepat jika prosesnya tidak di tempat, dan bersifat sementara.
Semoga berhasil!
sumber
Peluang datang sesekali .. Lakukan Ambil itu .. Saya akan mengatakan, cobalah untuk mempelajari dasar-dasar C #. Dapatkan beberapa tutorial dari online, coba kerjakan. awalnya akan sulit untuk mempelajari konsep baru, nanti ketika tugas pertama Anda selesai, Anda akan memiliki keyakinan di dalamnya.
Berpikir positif, Cobalah untuk mengambil tugas yang sulit, debug kode Anda sendiri dan yakin Anda akan menguasainya ..
Jangan kehilangan kesempatan Anda.
sumber
Saya pikir jika Anda memiliki banyak pengembang. Net, ada banyak pengetahuan di tim yang mungkin perlu Anda manfaatkan untuk memulai. Ada banyak kesamaan antara Java dan .Net bahwa apa yang sudah Anda ketahui sebenarnya benar-benar dapat diterapkan secara kurang langsung. Yang penting adalah mengetahui apa yang penting untuk mendapatkan yang tepat untuk proyek ini dan risiko yang terlibat. Berkomunikasi dengan tim Anda sesering yang diperlukan. Praktik rekayasa perangkat lunak berkembang di seluruh proyek sehingga mungkin sulit untuk memiliki "praktik terbaik" sejak awal dalam proyek.
Saya agak memiliki kebalikan dari pengalaman Anda di mana saya diberi tim lulusan yang sangat hijau yang tidak berasal dari bidang terkait perangkat lunak. Walaupun saya memiliki semua alasan untuk menetapkan apa yang perlu dilakukan (saya dipekerjakan untuk), saya malah mencari latihan untuk membuat kami bergerak dan banyak pelatihan dan diskusi untuk mengembangkan praktik rekayasa perangkat lunak kami. Saya belajar banyak dari tim di jalan dan kami hampir di sana dalam memberikan proyek rumah pertama kami setelah lebih dari satu tahun di pekerjaan!
sumber
Temukan produk sumber terbuka yang menggunakan teknologi yang sama yang akan Anda gunakan.
Jika memungkinkan, cari yang mirip dengan domain masalah. Ini tidak sepenting menemukan proyek dengan teknologi dan pembaruan aktif yang sama.
Unduh kode kerjanya. Membacanya.
Cari tahu alat apa yang mereka gunakan. Gunakan itu.
Cari tahu bagaimana membangun dan merilis proyek open source. Bangun dan lepaskan.
Proyek sumber terbuka (dengan sejumlah kontributor) akan menggambarkan praktik terbaik.
Benar.
Belajar dari komunitas open source.
sumber