Я багато думав над цим точним питанням.
Я думаю, що важливо розрізняти нарізку за окремими обов'язками та нарізка за відповідальністю команди. Я сфокусую цю відповідь головним чином на командах нарізки.
Для деякого передумови: я працював у проектах з повнорозмірними розробниками, однорівневими розробниками, вертикальними (повними стеками) командами, горизонтальними (однорівневими) командами та діагональними командами. Під діагональною командою я маю на увазі, що містять усі рівні, необхідні для історії, але не обов'язково всі рівні в системі, а також, можливо, містять кілька розробників, орієнтованих на один і той же рівень; Іншими словами, вертикальний за духом, але, можливо, дещо горизонтальний за зовнішнім виглядом або деталізацією.
Нещодавно я працював у групі, яка переходила з горизонтальних команд до діагональних (майже вертикальних) команд. Особливо повчальним було бачити, як одна і та ж група людей вирівнювала два різні способи. Це робить деякі переваги та недоліки досить зрозумілими.
Поки я сформулюю свою думку наступним підсумковим порівнянням:
Горизонтальні команди
Переваги:
- Сприяє гарному розділенню проблем та слабко пов'язаному рівням
- Набагато простіше управління розподілом робочого навантаження
- Легке для спеціаліста технічне керівництво
- Виховує внутрішньорівневу співпрацю, кращі практики, гордість та культуру досконалості
- Вирівнюється з природними / виникаючими моделями спілкування
Недоліки:
- Може призвести до ізоляції ярусів і, таким чином, перешкоджати міжрівневому спілкуванню
- Увімкнює культуру рівня "міхур", якщо не пом'якшується
- Складно скористатися генералістським керівництвом
- Заважає генералістам
Вертикальні / Діагональні команди
Переваги:
- Усі частини історії користувача в одній команді ("одноповерховий магазин")
- Спеціально допомагає надавати n-ярусні історії в одному спринті (хоча це вам справді потрібно?)
- Сприяє міжрівневій співпраці та зростанню загальнонаціональних навичок
- Підтримує генералістів
Недоліки:
- Набагато складніше управління розподілом навантаження
- Дозволяє погано розділяти проблеми та щільно зв'язані рівні
- Перешкоджає спеціалізації шляхом зменшення внутрішньорівневого спілкування; важко зрозуміти, як культура передового досвіду могла виникнути з цієї структури, не додаючи пом'якшуючих горизонтальних / спеціалізованих поведінок
Я не думаю, що членство в команді має рішення, яке не відповідає всім розмірам. Однак здається, що вертикальна команда краще складається для організацій, які потребують узагальнення. Якщо ваші інженери є генералістами і люблять працювати з повним стеком, це досить вагомий привід розглянути вертикальні команди. Горизонтальна група краще складається для організацій, які потребують фахівців. Якщо ваші інженери - спеціалісти, це досить вагомий привід розглянути горизонтальні команди.
Як уже згадували інші, вторинні структури / поведінки, які нарізають інший напрямок, можуть допомогти зменшити недоліки будь-якої системи. Одним із цікавих пом'якшуючих факторів є тривалість спринту. Короткі спринти роблять деякі недоліки горизонтальних команд більш допустимими. Якщо ви можете створити бекенд на цьому тижні та на наступному тижні, це може бути досить швидко?
Щоб застосувати деякі з цих запропонованих принципів до реальної проблеми ... Я скажу, що горизонтальні зрізи досить добре працювали для дуже реальної команди розробників SaaS, над якою я працював, вирішував дуже складні технічні проблеми в кожному рівні ( де спеціалізація була, на мій погляд, неймовірно важливою), де частота доставки (та надійність при високій деталізації / частоті) були вирішальними для успіху бізнесу. Зверніть увагу, що цей висновок стосується дуже конкретної команди реального світу, а не загального твердження про перевагу горизонтального нарізання.
Одне застереження: я, мабуть, упереджено вважаю, що будь-яка людина у сучасному світі розробки програмного забезпечення вважає твердження про загальні здібності без вагомих доказів, хоча я знаю кількох рідкісних виняткових загальних фахівців. Я відчуваю, що загальність є справді високим (вертикальним?) Порядком, особливо, коли кожен рівень зростає у складності та з поширенням альтернативних мов / платформ / фреймворків / розгортань, кожен задовольняючи різні потреби. Особливо в ці дні, джек з усіх торгів може бути легко господарем. Також, анекдотично, я вважаю, що більшість людей хочуть трохи спеціалізуватися, знову ж таки, за деякими винятками.