Bu soruyu çok düşünüyorum.
Bence bireysel sorumluluklarla dilimleme ile takım sorumluluklarına göre dilimleme arasında ayrım yapmak önemlidir. Bu cevabı ağırlıklı olarak dilimleme takımlarına odaklayacağım.
Bazı geçmişler için: Tam yığın geliştiriciler, tek katmanlı geliştiriciler, dikey (tam yığın) ekipler, yatay (tek katmanlı) ekipler ve çapraz ekiplerle projelerde çalıştım. Çapraz ekip ile bir hikaye için gerekli olan tüm katmanları içeren, ancak sistemdeki tüm katmanları içermeyen ve muhtemelen aynı katmanlara odaklanan birden fazla geliştirici içeren; diğer bir deyişle ruhsal açıdan dikey fakat görünüşte veya uygulama detayında biraz yatay olabilir.
Son zamanlarda yatay takımlardan köşegen (neredeyse dikey) takımlara geçen bir grupta çalıştım. Aynı grup insanın iki farklı şekilde hizalandığını görmek özellikle öğretici olmuştur. Bazı avantajları ve dezavantajları oldukça açık hale getirir.
Fikrimi şu ana kadar karşılaştırarak özetleyeceğim:
Yatay Takımlar
Avantajları:
- Endişelerin ve gevşek bağlı katmanların iyi ayrılmasını teşvik eder
- Çok daha kolay iş yükü dağıtım yönetimi
- Uzman teknik ipucunun yönetilmesi kolay
- Katmanlar arası işbirliği, en iyi uygulamalar, gurur ve mükemmeliyet kültürünü teşvik eder
- Doğal / acil iletişim kalıplarına uyum sağlar
Dezavantajları:
- Katmanların izolasyonuna yol açabilir ve böylece katmanlar arası iletişimi engelleyebilir
- Etkilenmezse katman "kabarcık" kültürünü etkinleştirir
- Genelci liderlikten yararlanmak zor
- Hinderler genelcileri
Dikey / Çapraz Takımlar
Avantajları:
- Bir takımda bir kullanıcı hikayesinin tüm parçaları ("tek noktadan alışveriş")
- Özellikle n katmanlı hikayeleri tek bir sprint'te sunmanıza yardımcı olur (buna gerçekten ihtiyacınız olsa da)
- Katmanlar arası işbirliğini ve genel becerilerin büyümesini teşvik eder
- Genelcileri destekler
Dezavantajları:
- Çok daha zor iş yükü dağıtım yönetimi
- Endişelerin ve sıkıca bağlı katmanların zayıf bir şekilde ayrılmasını sağlar
- Katman içi iletişimi kısıtlayarak uzmanlaşmayı engeller; yatay / uzman davranışları hafifletmeden bu yapıdan bir mükemmellik kültürünün nasıl ortaya çıkabileceğini görmek zordur
Ekip üyeliğinin herkese uyan tek bir çözümü olduğunu düşünmüyorum. Bununla birlikte, dikey ekibin genelleme gerektiren kuruluşlar için daha iyi bir şekilde sıralandığı oldukça basit görünüyor. Mühendisleriniz genelciyse ve tam yığın halinde çalışmayı seviyorsanız, dikey ekipleri düşünmek için oldukça iyi bir neden. Yatay ekip, uzman gerektiren kuruluşlar için daha iyi sıralanıyor. Mühendisleriniz uzmansa, yatay ekipleri düşünmek için oldukça iyi bir neden.
Diğerlerinin de belirttiği gibi, diğer yönü kesen ikincil yapılar / davranışlar, her iki sistemin dezavantajlarını azaltmaya yardımcı olabilir. İlginç bir azaltıcı etken sprint süresidir. Kısa sprintler, yatay takımların bazı dezavantajlarını daha tolere eder. Bu hafta arka ucunu ve gelecek hafta ön ucunu oluşturabilirseniz, bu yeterince hızlı olabilir mi?
Bu önerilen ilkelerin bazılarını gerçek dünya sorununa uygulamak için ... Yatay dilimlerin üzerinde çalıştığım her katmandaki çok zorlu teknik sorunları çözen çok gerçek bir SaaS geliştirme ekibi için oldukça iyi çalıştığını söyleyeceğim. uzmanlığın bana göre inanılmaz derecede önemli olduğu yerlerde, dağıtım sıklığı (ve yüksek ayrıntı düzeyinde / sıklıkta güvenilirlik) iş başarısı için kritik önem taşıyordu. Bu sonucun, yatay dilimlemenin genel bir üstünlük ifadesi değil, çok özel bir gerçek dünya ekibi için olduğunu lütfen unutmayın.
Bir uyarı: Muhtemelen birkaç nadir istisnai general tanımamış olsam da, modern yazılım geliştirme dünyasındaki herhangi bir bireyin önemli kanıtlar olmadan genel yetenek yeteneklerine inanmaya karşı önyargılıyım. Özellikle, her katman karmaşık bir şekilde büyüdükçe ve alternatif dillerin / platformların / çerçevelerin / uygulamaların çoğalmasıyla birlikte, genelliğin uzun (dikey?) Bir düzen olduğunu hissediyorum. Bu günlerde, özellikle tüm esnafların bir krikosu kolayca bir usta olabilir. Ayrıca, anekdot olarak, çoğu kişinin yine bazı istisnalar dışında biraz uzmanlaşmak istediğini düşünüyorum.