Jaka jest optymalna ilość osób w zespole software-owym?
- Cezary Ochman
- 2 cze 2024
- 2 minut(y) czytania
Zaktualizowano: 22 lip 2024
Jaka jest idealna ilość osób w zespole software-owym? Jest to dość częste pytanie na które musimy odpowiadać budując zespoły projektowe. Odpowiedź na pytanie jest złożona i odkąd istnieje nasza branża próbujemy ją odnaleźć. W tym krótkim poście przyjrzę się temu zagadnieniu z różnych perspektyw, dotykając jedynie wierzchołka góry lodowej...

Frederick P. Brooks w swojej ponadczasowej książce "Legendarny osobomiesiąc" pisał, że "...jeżeli projekt zatrudniający 200 osób ma 25 menadżerów będących kompetentnymi i doświadczonymi programistami, to należy zwolnić pozostałych 175 pracowników, a menadżerom nakazać tworzenie kodu". Ciekawa perspektywa... pytanie tylko, czy zespół złożony z samych "Galacticos" zawsze zwycięży? W sobotę tak się stało... 😉
Według Scrum Guida zespól nie powinien liczyć więcej niż 10 osób, natomiast Jeff Sutherland, jeden z twórców Scruma, uważa, że optymalna liczba to maksymalnie 7 osób.
Jeff Bezos, założyciel Amazona, wprowadził swego czasu zasadę 2 pizz, która mówi, że rozmiar zespołu nie powinien przekraczać liczby osób, które można nakarmić dwiema pizzami.
Według badania dt. "Overstaffing for Schedule Compression in Software Development" przeprowadzonego przez QSM wynika, że różnica między zespołami 5 lub mniej osób, a zespołami 20+ osób wynosi zaledwie jeden tydzień kalendarzowy dla projektu o rozmiarze 100k linijek kodu. Dlaczego? Ponieważ większe zespoły poświęcają więcej czasu na komunikację i koordynację, co w efekcie wydłuża czas realizacji projektu.
Jakie płyną z tego wnioski? Wraz ze zwiększeniem liczby umysłów, które trzeba koordynować wzrasta złożoność... złożoność komunikacji, interakcji, punktów styku, osobowości etc. W świecie IT dość mamy złożoności i wyzwań, dlatego warto się zastanowić (przed startem projektu) nad ilością osób w zespole. Jednym z podejść chroniącym software przed złożonością jest modułowość, czyli podział systemu na mniejsze, bardziej zarządzalne komponenty. Podobne podejście można zastosować przy budowie efektywnych zespołów. Co to oznacza? To oznacza m.in. podział zespołów na mniejsze jednostki, przypisanie im określonych obszarów odpowiedzialności, ustalenie zasad komunikacji wewnątrz i między zespołami oraz danie im swobody i zaufania (oczywiście pozostając czujnym jak spławik 😊).
Jakie masz doświadczenia i przemyślenia w tym temacie? Podziel się nimi w komentarzu.
コメント