Bagaimana seharusnya kemampuan didistribusikan melalui tim?

9

Setelah membaca ini, Saya melihat bahwa tampaknya ada banyak ketidaksepakatan tentang bagaimana tim tangkas harus disusun dalam kelompok pengembang dengan berbagai kemampuan (alias hampir semua tim). Haruskah semua pengembang terbaik ditempatkan di tim mereka sendiri dan diberi pekerjaan prioritas tertinggi? Ini akan memastikan bahwa tugas yang paling penting akan selesai. Pada saat yang sama, Anda kemudian dibiarkan dengan tim-tim "kurang sempurna" di tempat lain menimbun hutang teknis, bahkan jika itu hanya pada tugas-tugas prioritas rendah. Di sisi lain, tim yang terdistribusi secara merata dapat memiliki manfaat membuat pengembang lagging Anda sedikit lebih baik, tetapi memiliki potensi untuk mendemotivasi pemukul terberat Anda. Juga, jika Anda menggabungkan banyak pola desain yang baik dengan banyak pola anti-buruk, Anda benar-benar bisa berakhir dengan sesuatu yang mungkin juga merupakan pola anti-pola.

Morgan Herlocker
sumber
@ Banyak Serupa, tapi itu mengacu pada menjaga pengembang yang terlalu dominan di cek jika saya ingat dengan benar.
Morgan Herlocker
2
Sebagian besar sistem karakter yang baik memungkinkan Anda mendistribusikan poin bakat secara berkala.
FrustratedWithFormsDesigner
1
Maaf, terlalu banyak Mass Effect 2 (dan game lainnya) hari ini. : P
FrustratedWithFormsDesigner

Jawaban:

11

Ada beberapa risiko yang diketahui dengan Tim-A, tetapi jika dinamikanya benar maka saya pikir ya, saya akan menempatkan orang-orang terkuat saya pada proyek yang paling penting bersama dengan pengembang junior (s) dengan yang paling potensial. Untuk proyek prioritas rendah Anda, Anda perlu pemimpin tim yang baik jika memungkinkan untuk menjaga mereka agar tidak jauh dari rel. Utang teknis akan terjadi apa pun yang terjadi. Tidak semua utang teknis sama; biaya / kewajiban utang teknis sebanding dengan nilai bisnis proyek di tempat pertama, jadi sementara proyek prioritas rendah Anda mungkin memiliki lebih banyak kutil biaya mereka mungkin masih jauh lebih sedikit daripada masalah signifikan pada proyek prioritas tinggi Anda akan menjadi.

Jeremy
sumber
7

Saya ingat ketika saya berada di uni, salah satu profesor kami memberi tahu kami sebuah anekdot tentang struktur tim (saya telah melihat kertas yang sedang ia bicarakan tadi tetapi sepertinya saya tidak dapat menemukannya).

Pada dasarnya, ceritanya sebagai berikut:

Sekelompok programmer dipecah menjadi kelompok berdasarkan kemampuan, dengan x programmer terburuk dikelompokkan bersama, x berikutnya dikelompokkan bersama, dll., Dan yang terbaik dikelompokkan bersama.

Mereka semua diberi tugas yang sama, dan diberi jangka waktu yang ditetapkan untuk menyelesaikannya.

Pada akhir jangka waktu, panitia melihat solusi untuk tugas-tugas tersebut, dan mereka, yang mengejutkan mereka, menemukan bahwa solusi dengan kinerja terbaik berasal dari tim yang terdiri dari orang-orang biasa. Sebaliknya, tim yang terdiri dari programmer A * membuat salah satu solusi terburuk karena mereka menghabiskan seluruh waktu mereka berdebat tentang apa solusi terbaik .

Jika Anda membutuhkan tim yang akan menyelesaikan pekerjaan, dapatkan sekelompok pria rata-rata dan seorang pria dominan yang dapat memimpin, adalah kesimpulan dari penelitian ini (Jika saya ingat dengan benar), jika tidak, anggota yang lebih dominan akan menghabiskan lebih banyak waktu untuk berjuang daripada mendapatkan hal-hal dilakukan!

Ed James
sumber
1
Ya ini adalah salah satu masalah Tim-A utama tetapi menyimpulkan bahwa itu berlaku universal untuk semua tim berdasarkan penelitian ini akan menjadi kesalahan.
Jeremy
Setuju: tidak semua orang sama, kelompok yang setara juga tidak akan memiliki dinamika yang sama, tapi tetap saja itu anekdot yang bagus!
Ed James
1
Nah, kumpulkan sekelompok devs bahwa semuanya hanya menulis algoritma pencarian jalur dan inilah yang Anda dapatkan ...
Steven Evers
lol - Anda tidak dapat menemukan makalah yang paling mungkin karena profesor baru saja membuat cerita di tempat. ;-)
Steven A. Lowe
Itu tidak mengejutkan saya: D
Ed James
3

Sebagian besar pengembang yang tidak berpengalaman mungkin tidak dapat menghasilkan desain yang kuat dan elegan sendiri, tetapi mereka dapat mengenali dan memahaminya ketika mereka melihatnya. Jika mereka tidak bisa, maka mereka biasanya tidak memiliki bakat atau persiapan untuk dipekerjakan.

Ada juga beberapa pengembang yang lebih berpengalaman yang mampu memahami desain perangkat lunak yang sangat kompleks, tetapi tidak memiliki keleluasaan untuk mengetahui kapan sesuatu yang lebih sederhana akan lebih baik.

Dalam pengalaman saya, Anda biasanya hanya memiliki masalah permanen dengan tim campuran jika mereka mengandung anggota yang tidak siap, anggota yang tidak perlu rumit, atau keduanya. Kalau tidak, jika tim Anda memiliki masalah mereka biasanya dapat diperbaiki dengan komunikasi yang lebih baik atau menugaskan peran yang sesuai.

Karl Bielefeldt
sumber
Saya hanya dapat berasumsi dari paragraf pertama Anda bahwa Anda tidak bekerja di lingkungan di mana permintaan pengembang melebihi pasokan. Banyak dari kita yang melakukannya. :-)
Carson63000
3

Mengelompokkan orang-orang terbaik ke dalam satu tim bisa terlihat seperti solusi jangka pendek yang hebat tetapi ini gagal dalam ruang lingkup jangka panjang dan memiliki biaya tambahan. Sebagai contoh, perusahaan saya lebih suka ketika orang belajar dari kolega mereka yang lebih terampil daripada membayar pelatihan. Jika Anda memisahkan orang-orang terbaik, mereka tidak akan dapat mentransfer pengetahuan kepada orang-orang yang kurang terampil. Dalam jangka pendek tim terbaik Anda dapat melakukan dengan baik tetapi karena kurangnya transfer pengetahuan, jumlah orang yang terampil tidak akan bertambah. Adalah jauh lebih baik untuk memiliki tim yang kurang berkinerja di awal dan meningkatkan kinerja dari semua tim karena orang menjadi lebih terampil.

Apalagi apa yang terjadi jika orang yang terampil memutuskan untuk pergi? Siapa yang akan mengambil proyek mereka?

Poin lain adalah bahwa tim harus terdiri dari orang-orang dengan keahlian yang berbeda. Anda akan selalu memiliki tugas yang mudah (dan tugas yang membosankan) yang terlalu mahal untuk dilakukan oleh pengembang paling senior.

Ladislav Mrnka
sumber
3

Mereka yang tidak bisa mengajar, lakukan ...

Saya pikir ada lebih banyak faktor untuk dipertimbangkan.

Anda akan mendapatkan nilai terbaik dengan membagikan yang bisa mengajar sebagai pemimpin tim. Mereka dapat mengajar anggota tim lainnya dan membantu meningkatkan kualitas pekerjaan mereka.

Tidak semua programmer senior akan menjadi pemimpin yang baik. Kemampuan untuk mengomunikasikan informasi adalah keterampilan dalam dan dari dirinya sendiri. Keterampilan ini bukan sesuatu yang berkembang melalui pengalaman pemrograman. Itu berkembang melalui pengajaran dan penjelasan.

dietbuddha
sumber
Saya setuju tetapi pada saat yang sama Anda dapat belajar dari kode yang ditulis oleh pengembang lain. Jika pengembang senior bukan bagian dari tim Anda, Anda tidak dapat belajar dari mereka dengan cara ini.
Ladislav Mrnka
@Ladislav Mrnka: Saya tidak mengatakan bahwa Anda tidak boleh mendistribusikan pengembang senior di seluruh tim yang berbeda. Kemampuan untuk belajar dari kode akan bervariasi. Ini juga mengasumsikan devs akan meluangkan waktu untuk belajar dari kode yang banyak tidak.
dietbuddha
2

Menugaskan tim 'A', memiliki dua masalah signifikan. Pertama adalah kompatibilitas. Memiliki tim yang rukun dan bekerja bersama dengan baik jauh lebih penting daripada "kemampuan" mereka. Sekarang ini mungkin dua programmer keterampilan "tinggi", dua programmer keterampilan "rendah", atau campuran. Fakta bahwa mereka dapat bekerja bersama dengan baik berarti mereka akan lebih produktif.

Masalah kedua berkaitan dengan pertumbuhan. Dua pemrogram keterampilan "rendah" tidak akan belajar banyak dari satu sama lain, selain kebiasaan buruk. Demikian juga dua programmer "tinggi" tidak akan belajar banyak dari satu sama lain. Namun, menggabungkan level keterampilan "rendah" dan tinggi "akan membantu meningkatkan kemampuan keterampilan" rendah ". Mereka juga akan meningkatkan kemampuan keterampilan" tinggi ".Bagaimana? Mencoba mengajar subjek akan dengan cepat menemukan titik kelemahan Anda dalam hal itu. subjek. Saya tidak menganggap keterampilan "dikuasai" sampai Anda bisa mengajarkannya kepada orang lain.

Jim C
sumber
1

Dari sisi lain dari koin, saya pikir masuk akal untuk menjaga tim yang dapat "mengikuti" satu sama lain. Programmer tipe A-Team Anda tidak ingin menunggu pada tipe B-Team untuk menyelesaikan pekerjaan mereka. Jenis B-Team Anda mungkin terintimidasi oleh alur kerja gaya A-Team.

Wyatt Barnett
sumber