Brooks lag
Varför fler utvecklare i ett försenat mjukvaruprojekt gör det ännu långsammare
Kortfattat
Att tillföra fler utvecklare till ett försenat mjukvaruprojekt förlänger ofta leveranstiden i stället för att förkorta den. Detta fenomen kallas Brooks lag och beror på att nyanställda kräver tid för upplärning samtidigt som antalet kommunikationsvägar växer kvadratiskt med lagets storlek. Dessutom kan komplexa och sammanvävda arbetsuppgifter inte delas upp hur som helst.
När ett mjukvaruprojekt drabbas av förseningar reagerar ledningar ofta med att tillföra mer personal. Inom systemutveckling råder dock helt andra mekanismer än vid traditionellt monteringsarbete. Fred Brooks identifierade mönstret under sin tid hos IBM, där personalförstärkningar i redan sena projekt snarare förvärrade tidsbristen än löste den.
Bakgrunden och de två drivande mekanismerna
Brooks lag formulerades av Fred Brooks i boken The Mythical Man-Month från 1975, baserat på hans erfarenheter som projektledare för utvecklingen av operativsystemet OS/360 hos IBM. Resonemanget vilar på två huvudsakliga orsaker till att mjukvaruprojekt bromsas upp när personalstyrkan utökas i ett sent skede. För det första kräver varje ny medarbetare en omfattande introduktion till befintlig källkod, domänmodell, verktygskedjor och interna arbetssätt. Denna skolning utförs nödvändigtvis av de mest erfarna utvecklarna i det befintliga teamet. När nyckelpersoner lägger sin arbetstid på onboarding och källkodsgenomgångar minskar deras egen produktivitet drastiskt. Teamets samlade kapacitet och faktiska framkoppling sjunker därför markant under hela introduktionsfasen, vilket inträffar i precis det ögonblick då projektet har som minst utrymme för kapacitetstapp.
Kommunikationskanaler och uppgifternas delbarhet
Den andra centrala faktorn rör hur mängden kommunikationskanaler växer när gruppen expanderar. Antalet unika relationer och avstämningar mellan n personer beräknas med den kombinatoriska formeln n(n-1)/2. Ett litet team på fyra utvecklare hanterar 6 interna kommunikationsvägar. Om styrkan utökas till tio personer stiger antalet vägar till 45, och vid femton personer är siffran uppe i 105 vägar. Tidsåtgången för synkronisering, arkitekturmöten, kodgranskningar och informationsutbyte tar snabbt överhanden och tränger ut faktiskt programmeringsarbete. Utöver kommunikationens tillväxt sätter uppgifternas beskaffenhet tydliga gränser för parallellisering. När ett kodmoment beror strikt på att en annan modul färdigställs först, går det inte att snabba upp förloppet genom att tilldela fler utvecklare. Sekventiella beroenden i arkitekturen sätter en absolut nedre gräns för hur snabbt ett projekt kan genomföras.
Som Fred Brooks berömt uttryckte det i sin analys av projektplanering och icke-delbara sekventiella processer: 'Att bära fram ett barn tar nio månader, oavsett hur många kvinnor du sätter på uppgiften.' Citatet sätter fingret på att vissa naturliga och tekniska processer har oåterkalleliga sekventiella steg som inte kan accelereras genom ökad arbetskraft.
Strategier och undantag i praktiken
För att hantera en hotande deadline utan att utlösa Brooks lag krävs det att organisationer agerar proaktivt i stället för reaktivt. Om leveransdatumet är absolut fast är en minskning av projektets omfattning (scope reduction) i regel den mest effektiva och realistiska åtgärden. Skall personalförstärkningar genomföras måste detta ske mycket tidigt i projektets livscykel, innan tidsnöd och förseningar är ett faktum. Vidare spelar systemets tekniska arkitektur en avgörande roll: om kodbasen är uppdelad i fristående, modulära komponenter med välavgränsade API-gränssnitt kan nyanställda arbeta isolerat utan att kräva ständig samordning med övriga utvecklare. Det är också väsentligt att identifiera uppgifter som saknar inbördes beroenden, då frikopplat arbete tillåter nästan linjär skalbarhet.
Källor
Läs också
- Hofstadters lag belyser hur tidsuppskattningar nästan alltid underskrids, vilket ofta leder till den tidspress som utlöser Brooks lag.
- Parkinsons lag förklarar hur arbetstid expanderar för att fylla tillgängliga resurser och tidsramar.
- Metcalfes lag beskriver nätverkstillväxt och matematiken bakom kvadratisk komplexitet i relationer.
Tankeövningar
Använd övningarna för att tillämpa kapitlets idéer. Du behöver inte skriva – stanna bara upp och fundera på varje fråga.
Analysera kommunikationsstruktur och beroenden
Kartlägg ert nuvarande projekt för att identifiera flaskhalsar kopplade till samordning och sekventiella moment.
- Hur många aktiva kommunikationskanaler n(n-1)/2 finns i teamet i dag?
- Vilka delar av projektet har starka sekventiella beroenden som förhindrar parallellt arbete?
Sammanfattning
Brooks lag belyser hur skolningstid, kommunikationsstrukturer och uppgifternas delbarhet påverkar projektets faktiska tempo. Genom modulär arkitektur, realistisk omfattning och tidiga personalinsatser kan organisationer undvika att förseningar förvärras.
Läs kortversionen i arkivet.