Saya akan mengerjakan proyek perangkat lunak dengan beberapa teman saya, dan saya telah ditunjuk sebagai pimpinan teknis. Tidak satu pun dari orang-orang ini adalah programmer yang buruk sama sekali, tetapi saya memiliki pengalaman yang jauh lebih banyak daripada mereka. Saya harus bisa mendistribusikan pekerjaan di antara semua orang di tim, sementara juga memastikan bahwa kami tidak menginjak kaki satu sama lain; bahwa mereka memenuhi standar kualitas dan skalabilitas yang relatif tinggi yang kita butuhkan untuk membuat proyek ini berhasil, tanpa mengharuskan saya untuk meninjau semua yang mereka lakukan.
Bagaimana saya harus menjaga standar sambil menghindari manajemen mikro? Apakah cukup untuk membuat beberapa diagram, menjadwalkan beberapa ulasan kode, dan percaya bahwa saya akan dapat memperbaiki apa pun yang mungkin mereka hancurkan, atau haruskah saya memilih rute TDD dan menulis tes eksplisit untuk memuaskan tim?
sumber
Jawaban:
Anda harus meninjau beberapa kode mereka dan membiarkan mereka meninjau satu sama lain. Bukannya Anda ingin menjadi Polisi Check-in, tetapi ingin memberikan umpan balik sesering mungkin. Menjadi reviewer bisa memperkuat pemahaman mereka. Biarkan mereka meninjau kode Anda juga. Jadilah modelnya.
Catatan Samping: seharusnya tidak ada kejutan selama review anual.
sumber
Di atas segalanya : komunikasikan harapan dan desain Anda dengan berbagai cara sebanyak mungkin. Diagram baik untuk sebagian orang; antarmuka yang didefinisikan bekerja untuk orang lain; pemrograman pasangan juga berfungsi; ulasan kode formal juga dapat membantu beberapa orang.
Saya juga merekomendasikan menggunakan otomatisasi sebanyak mungkin:
Sulit untuk berdebat dengan kasus pengujian yang gagal atau alat inspeksi otomatis, asalkan mereka diatur dengan baik.
sumber
Jika Anda benar-benar bekerja dengan beragam tingkat keterampilan pada proyek yang sama, akan ada beberapa masalah. Pertanyaannya adalah kapan Anda berurusan dengan mereka? Apakah mereka akan menulis kode buruk sehingga Anda mungkin lebih baik tidak mendapatkan bantuan mereka? Apakah ini akan menciptakan ketegangan pribadi? Apakah Anda akan mengakhiri pertemanan? Pertanyaan-pertanyaan ini tidak ada yang bisa menjawab kecuali Anda.
Dengan asumsi semua orang akan tetap berada di tim, saya sarankan memecah tugas menjadi potongan-potongan kecil (yang lebih besar pergi ke dudes lebih terampil) dan biarkan pengembang yang paling terampil refactor ketika Anda selesai. Pastikan untuk menjalankan QA dalam interval yang ketat dan teratur. Ini cukup dekat dengan apa yang terjadi dalam kenyataan.
sumber
Sebisa mungkin, jauhi rumput liar. Di tim mana pun, jika Anda adalah pemimpinnya, Anda perlu menghemat sejumlah bandwidth Anda untuk krisis dan gambaran besarnya. Diagram baik dan standar pengkodean selalu waras, tetapi menyiapkan proses di mana orang memeriksa pekerjaan satu sama lain bahkan lebih baik (pengujian silang, ulasan sejawat, pemrograman pasangan). Tidak semua orang di tim perlu menjadi bintang - tim bersama biasanya dapat mengatasi kelemahan pada individu.
Hal yang saya sarankan adalah Anda menahan keinginan itu, sebanyak mungkin, untuk memberi tahu orang-orang kesalahan apa yang Anda lihat dalam pengkodean mereka - alih-alih, arahkan mereka untuk melihatnya sendiri. Tetap menjadi bagian dari tinjauan kolaboratif pekerjaan pembangunan, tetapi pastikan Anda tidak berkontribusi lebih dari anggota lainnya. Alih-alih, berikan upaya ekstra untuk mendorong orang lain melihat apa yang Anda lihat dan memberikan banyak penjelasan mengapa hal-hal yang Anda lihat penting.
Jangan terlalu khawatir tentang tumpang tindih - di luar pelarian yang masuk akal, Anda dapat meminta anggota tim untuk memeriksa di antara mereka sendiri, dan kemudian memverifikasi bahwa komunikasi telah terjadi. Tim akan dengan cepat mulai memandang satu sama lain sebagai cara untuk mencapai konsensus, dan itu membuat pekerjaan Anda sekitar 20 kali lebih mudah - maka yang harus Anda lakukan adalah menjadi pemutus ikatan ketika area utama tidak setuju.
Kemudian simpan upaya Anda untuk melihat tim secara kolektif. Setiap orang akan memiliki beberapa kekuatan yang luar biasa dan beberapa kelemahan yang menarik. Idealnya, Anda akan mulai melempar pekerjaan pada orang-orang yang sesuai dengan kekuatan mereka sambil tetap memberi mereka kesempatan untuk bekerja melalui kelemahan mereka dengan cara yang tidak menonaktifkan produktivitas tim.
Bintang emas utama kepemimpinan tim adalah membuat orang sadar akan kelemahan mereka sedemikian rupa sehingga mereka termotivasi dan cukup informasi untuk mulai memperbaikinya.
sumber
Duduk dan diskusikan teknologi dan perangkat yang disetujui semua orang di tim. Beberapa orang mungkin lebih berpengalaman dalam alat yang disepakati daripada yang lain dalam tim, sehingga mereka yang lebih berpengalaman harus mau dan setuju untuk berbagi pengalaman dan pengetahuan dengan yang lain.
Diskusikan, Setuju, Tuliskan, Model dan komunikasikan standar (seperti konvensi penamaan, pengkodean praktik terbaik, dan struktur folder).
Lakukan pengujian terus menerus dan teratur serta pemeriksaan QA. Beri tahu orang tersebut ASAP ketika Anda melihat ketidakkonsistenan.
sumber
Saya akan mengatakan 'dapatkan orang yang paling berpengalaman dalam tim untuk mengaturnya', tetapi sepertinya Anda adalah orang itu.
Jika Anda bisa, bagi proyek menjadi dua tingkat. Application-layer / driver-layer adalah perpecahan yang baik. Bentuk dua subkelompok dalam tim Anda dan buat satu orang di masing-masing bertanggung jawab untuk tingkat itu. Itu bisa bekerja dengan sangat baik.
Pasangkan diri Anda untuk itu. Anda harus meninjau semua yang mereka lakukan, terutama sejak dini. Jika semuanya berjalan dengan lancar, Anda hanya akan melihat kode yang mencolok. Meninjau tidak akan membawa Anda banyak waktu sama sekali, dan itu akan memberi Anda banyak kepercayaan hal-hal berjalan dengan baik. Kemungkinan besar Anda akan menemukan seseorang menggunakan semafor dengan cara yang salah, atau menulis versi mereka sendiri dari fungsi perpustakaan atau kegilaan semacam itu. Pengalaman saya adalah Anda harus menonton kode karena sedang ditulis untuk mengatasi masalah kode sejak awal.
sumber
Apa yang biasanya diharapkan dari petunjuk teknis di perusahaan Anda? Saya seorang manajer dan telah berada di tempat ini beberapa kali dan akan melakukannya lagi mulai minggu ini (mempekerjakan pemula dan orang lain untuk bergabung dengan tim yang terdiri dari 20 tahun dan 4 tahun orang yang berpengalaman).
Saya seorang manajer dan bisa menjadi pemimpin teknis (dalam beberapa tahun terakhir, saya telah mengecilkan peran terakhir untuk menumbuhkan kepemimpinan dalam tim. Dalam beberapa kasus, beberapa pemikiran:
sumber
Coba lihat apa yang masuk ke mendefinisikan "Arsitektur Perangkat Lunak". Membuat modul yang dapat dikembangkan secara terpisah adalah salah satu alasan utama untuk melakukan desain dan analisis di muka. Saya tahu bahwa melakukan jenis pekerjaan ini tidak sesuai gaya, tetapi bekerja dalam semua kasus, berbeda dengan beberapa kasus yang didukung oleh metode pengembangan yang lebih baru.
sumber
Sebagai pengembang paling berpengalaman dalam tim, saya harapkan dari pelatihan Anda yang berat .
Biarkan tim menetapkan pekerjaan untuk diri mereka sendiri menggunakan kanban , dan kemudian habiskan sepanjang hari Anda melakukan pemrograman pasangan dengan masing-masing dari mereka.
Ketika Anda melihat kebiasaan buruk atau sesuatu yang harus mereka sadari, hentikan semuanya dan gambarkan di papan tulis.
Setelah beberapa minggu, Anda akan dapat memperlambat pembinaan yang berat karena keseluruhan keterampilan tim akan mendekati kemampuan Anda.
sumber
Ada beberapa daftar berbeda yang akan membuat saya tergoda untuk mengulas dari posisi Anda:
Seberapa baik saya tahu tim ini. Apakah Anda tahu kekuatan dan kelemahan semua orang di tim? Apakah Anda tahu cara mendapatkan yang terbaik dari setiap orang? Apakah Anda tahu cara membagi pekerjaan dengan cara yang relatif adil untuk semua orang? Pertanyaan-pertanyaan semacam itu adalah sesuatu untuk ditanyakan dan dipahami bahwa mungkin ada perubahan dalam daftar ini seiring waktu karena beberapa orang dapat mengembangkan beberapa keterampilan yang dapat mengubah cara pandang mereka. Ketika Anda diangkat, apakah ada harapan bahwa beberapa anggota tim memiliki Anda? Pertanyaan terakhir itu mungkin sulit untuk membuat orang menjawab dengan jujur tetapi itu bisa membantu banyak jika itu dapat diungkapkan dan didiskusikan dengan cara yang berarti tanpa menimbulkan pelanggaran atau dendam yang bisa sangat mudah jika apa yang sedang dibahas sangat pribadi bagi sebagian orang. orang-orang. Jangan mencoba mendapatkan pendapat pribadi dalam rapat kelompok,
Seberapa baik saya mengenal diri sendiri. Elemen apa dari latar belakang Anda yang Anda gunakan untuk mengklaim beberapa otoritas teknis di sini? Apa kekuatan dan kelemahan yang Anda bawa ke tim? Apakah Anda diharapkan masuk ke parit secara teratur? Adakah praktik yang Anda lihat ingin Anda perkenalkan ke tim ini untuk membantu menyetirnya? Adakah tanda-tanda peringatan yang Anda ingat dari pengalaman masa lalu yang mungkin berguna untuk melihat apakah ada yang mulai muncul dalam pekerjaan yang sedang dilakukan oleh tim.
Dengan cara ini semua bermuara pada komunikasi. Semoga berhasil!
sumber
memiliki presentasi (mingguan) reguler tentang beberapa topik teknologi, dan membuatnya berputar di sekitar grup. Dengan begitu semua orang akan belajar sesuatu. Dan biarkan anggota yang lebih muda hadir juga, tidak ada cara yang lebih baik untuk benar-benar memahami sesuatu selain dengan mengajarkannya. Anda mungkin harus membantu mereka memilih topik.
Beberapa pelatihan tentang cara memberi ceramah mungkin sesuai untuk semua orang. Saya memiliki seorang profesor di perguruan tinggi yang melakukan itu untuk saya dan itu sangat membantu.
sumber