Saya sudah memikirkan pertanyaan yang tepat ini.
Saya pikir penting untuk membedakan antara mengiris berdasarkan tanggung jawab individu vs mengiris tanggung jawab tim. Saya akan memfokuskan jawaban ini terutama pada mengiris tim.
Untuk beberapa latar belakang: Saya telah bekerja dalam proyek-proyek dengan pengembang tumpukan penuh, pengembang lapis tunggal, tim vertikal (tumpukan penuh), tim horisontal (lapis tunggal), dan tim diagonal. Maksud saya dengan tim diagonal yang memuat semua tingkatan yang diperlukan untuk sebuah cerita tetapi tidak harus semua tingkatan dalam sistem, dan juga mungkin berisi beberapa pengembang yang berfokus pada tingkatan yang sama; dengan kata lain vertikal dalam roh tetapi mungkin agak horizontal dalam penampilan atau detail implementasi.
Baru-baru ini saya telah bekerja dalam kelompok yang beralih dari tim horisontal ke tim diagonal (hampir vertikal). Sangat instruksional untuk melihat kelompok orang yang sama menyelaraskan dua cara yang berbeda. Itu membuat beberapa kelebihan dan kekurangan cukup jelas.
Saya akan mengumpulkan pendapat saya sejauh ini dengan perbandingan ringkasan berikut:
Tim Horisontal
Keuntungan:
- Memupuk pemisahan kekhawatiran yang baik dan tingkatan yang longgar
- Manajemen distribusi beban kerja yang jauh lebih mudah
- Mudah untuk memimpin teknis spesialis untuk dikelola
- Memupuk kolaborasi intra-tier, praktik terbaik, kebanggaan, dan budaya keunggulan
- Sejalan dengan pola komunikasi alami / muncul
Kekurangan:
- Dapat menyebabkan isolasi tingkat dan dengan demikian menghambat komunikasi antar tingkat
- Mengaktifkan budaya "gelembung" tingkat jika tidak dikurangi
- Sulit mengambil keuntungan dari kepemimpinan generalis
- Hinders generalis
Tim Vertikal / Diagonal
Keuntungan:
- Semua bagian dari kisah pengguna dalam satu tim ("one stop shop")
- Secara khusus membantu menyampaikan cerita n-tier dalam satu sprint (walaupun Anda benar-benar membutuhkannya?)
- Memupuk kolaborasi inter-tier dan pertumbuhan keterampilan generalis
- Mendukung generalis
Kekurangan:
- Manajemen distribusi beban kerja yang jauh lebih sulit
- Memungkinkan pemisahan keprihatinan yang buruk dan tingkatan yang sangat erat
- Menghindari spesialisasi dengan membatasi komunikasi intra-tier; sulit untuk melihat bagaimana budaya keunggulan dapat muncul dari struktur ini tanpa menambahkan perilaku horizontal / spesialis yang meringankan
Saya tidak berpikir keanggotaan tim memiliki solusi satu ukuran untuk semua. Tampaknya cukup mudah, bahwa tim vertikal berbaris lebih baik untuk organisasi yang membutuhkan generalisasi. Jika insinyur Anda adalah generalis dan suka bekerja dengan tumpukan penuh, itu alasan yang cukup bagus untuk mempertimbangkan tim vertikal. Tim horizontal berbaris lebih baik untuk organisasi yang membutuhkan spesialis. Jika insinyur Anda adalah spesialis, itu alasan yang cukup bagus untuk mempertimbangkan tim horizontal.
Seperti yang disebutkan orang lain, struktur / perilaku sekunder yang mengiris arah lain dapat membantu mengurangi kelemahan dari kedua sistem. Salah satu faktor mitigasi yang menarik adalah durasi sprint. Sprint pendek membuat beberapa kelemahan tim horisontal lebih dapat ditoleransi. Jika Anda dapat membuat backend minggu ini dan frontend minggu depan, itu mungkin cukup cepat?
Untuk menerapkan beberapa prinsip yang diusulkan ini ke masalah dunia nyata ... Saya akan mengatakan bahwa irisan horizontal telah bekerja dengan sangat baik untuk tim pengembangan SaaS yang sangat nyata yang telah saya kerjakan yang memecahkan masalah teknis yang sangat menantang di setiap tingkatan ( di mana spesialisasi menurut saya sangat penting), di mana frekuensi pengiriman (dan keandalan pada granularitas / frekuensi tinggi) sangat penting untuk keberhasilan bisnis. Harap dicatat bahwa kesimpulan ini adalah untuk tim dunia nyata yang sangat khusus, bukan pernyataan umum tentang keunggulan pengirisan horizontal.
Satu peringatan: Saya mungkin bias terhadap keyakinan memercayai kemampuan generalis oleh individu mana pun di dunia pengembangan perangkat lunak modern tanpa bukti signifikan, meskipun saya telah mengenal beberapa generalis langka yang luar biasa. Saya merasa bahwa generalitas adalah tatanan yang tinggi (vertikal?) Memang, terutama karena setiap tingkat tumbuh dalam kompleksitas dan dengan proliferasi bahasa / platform / kerangka / penyebaran alternatif, masing-masing memenuhi kebutuhan yang berbeda. Hari-hari ini terutama, jack dari semua perdagangan dapat dengan mudah menjadi master of none. Juga, secara anekdot, saya menemukan sebagian besar individu ingin mengkhususkan diri sedikit, sekali lagi dengan beberapa pengecualian.