Arbete är arbete
12 jan 2020
Varje gång jag har skrivit eller talat om organisationsdesign har jag ångrat mig.Det är något med att ta ställning till det som lyckas bevisa att jag har fel några år senare. Men jag har tänkt länge på det igen, och här är vad jag har kommit fram till. Spänn fast dig.
Vid någon tidpunkt inser varje organisation att den saktar ner. Funktioner tar längre tid att leverera, folk tillbringar mer och mer tid i möten och alla får panik när det gäller uppskattning och planering. Om vi har internaliserat essentialistiskt skitsnack om att ”B-spelare anställer C-spelare” kanske vi blir nervösa när det gäller The Bar och anställning. Om vi är oroliga och osäkra kan det hända att vi blir religiösa om Agile eller Scrum eller något annat. Om vi är benägna till modernistiska fantasifulla flygningar kanske vi bestämmer oss för att spendera våra innovationspolletter på att försöka störa den 200 000 år gamla branschen som går ut på att få människor att arbeta tillsammans. Om vi är den typen som gör våra åtta och slår i grind, så tar vi det som priset för framgång.
Dessa tillvägagångssätt ger sällan resultat.
Vår dogmatiska slummer
De flesta förklaringar till organisatoriska framgångar eller misslyckanden är skit. Emiska redogörelser – dvs. de som kommer inifrån organisationen – är begränsade till de begrepp och berättelser som existerar inom organisationen. De kan strukturellt sett tjäna som självberättelser och främja en känsla av identitet och syfte inom gruppen, men eftersom de kommer från den epistemologiska motsvarigheten till en gravitationsbrunn är deras förklaringskraft utanför den organisationen vanligtvis fruktansvärd.
Om vi intar det etiska perspektivet – dvs. utifrån organisationen – kan vi se att emiska förklaringar till en organisations framgång eller misslyckande har lättillgängliga kontrafaktiska motsvarigheter i andra organisationer. Om agila, platta organisationer, kodgranskningar, monorepos, öppna kontor, tjusiga typsystem osv. verkligen är de kausala faktorer som de påstås vara, varför är det då så många organisationer som inför dessa metoder utan framgång? Varför finns det andra framgångsrika organisationer som saknar dessa metoder? Hur kan vi se skillnaden mellan cum hoc, ergo prompter hocjust-så-historier och faktiska orsaksfaktorer?
Mer viktigt är att vi kan avgöra vilken överlägsenhet en viss uppsättning faktorer har på organisationens resultat, inte bara i ett visst sammanhang utan i alla möjliga organisationer? Det vill säga, finns det några nödvändiga, a priori sanningar om organisatorisk prestanda?
Som synes finns det faktiskt några.
Om man tittar tillräckligt noga är en organisation som utför arbete bara en otroligt komplex, dynamisk, distribuerad, parallell process. Vi har mycket bra verktyg för att förstå de grova konturerna av hur dessa processer fungerar, och de går åtminstone tillbaka till Manabreas kommentar från 1842 till Babbage om hans analysmaskin. Jag vill inte påstå att jag har utvecklat en psykohistoria, och med tanke på hur svårt det är att förutsäga beteendet hos även enkla dynamiska system, verkar en fullständigt förutsägbar modell för organisatorisk framgång verkligen omöjlig.
Men i likhet med Kants försök att härleda de nödvändiga förutsättningarna för den subjektiva erfarenheten i Critique Of Pure Reason, kan vi skissera gränserna för vad en organisation är kapabel till och dynamiken i detta när den växer. På samma sätt som den a priori kunskap som säger att tio pund väger mer än fem pund informerar om hur mycket skit vi kan förvänta oss att få plats med i en väska, kan modellering av organisationer som parallella processer informera oss om hur vi utformar dem.
Vad som händer inom dessa gränser är en fråga om utförande och ansträngning; vad som händer utanför dessa gränser är omöjligt.
Taket är lågt
Arbetskapaciteten i en organisation ökar högst linjärt när nya medlemmar tillkommer.Varje ny medlem i en organisation lägger till ett konstant antal möjliga arbetstimmar till de totala möjliga arbetstimmarna för företagets befintliga anställda. Amdahls lag säger att en parallell lösning som utnyttjar NNN processorer kommer att vara snabbare än en sekventiell lösning med högst en faktor NNN.
När parallella resurser läggs till, minskar den totala tiden för den del av uppgiften som kan parallelliseras till noll; den totala tiden för den sekventiella delen av uppgiften sjunker däremot aldrig under ett golvvärde. Detta gäller lika mycket för en grupp människor som försöker skriva programvara som för en grupp processorer som försöker modellera beteendet hos stjärnor i galaxen. Vår intuition säger oss att större organisationer uppvisar superlinjära beteenden, men detta kan bokstavligen inte vara fallet om anställning är den enda variabeln i ekvationen. Vårt enda hopp om superlinjär produktivitet ligger därför i att ändra den uppgift som utförs. Tack och lov är arbetskapacitet inte detsamma som produktivitet.
När en organisation anställer fler anställda måste arbetet med produktivitetsförbättringar vara en konstant prioritet. Interna verktyg, utbildning och tjänster måste utvecklas och användas för att se till att alla medlemmar kan arbeta med problem som ständigt ökar i betydelse. Den oupphörliga jakten på kraftmultiplikatorer är den enda möjliga vägen till superlinjära produktivitetsförbättringar när en organisation växer.
För det sista måste det betonas att denna linjära begränsning av arbetskapaciteten är ett tak, inte ett golv.Man kan inte göra det bättre än linjärt, men man kan definitivt göra det sämre. Det finns många andra faktorer som verkar som en bromskloss på arbetskapaciteten, och förbättringar av produktiviteten i hela organisationen är avgörande för att mildra dem.
Golvet är lava
Kontentionskostnaderna växer superlinjärt när nya medlemmar tillkommer. Parallella lösningar på uppgifter är sällan perfekt samtidiga (och sådana uppgifter kallas med rätta ”pinsamt parallella”) och kräver ofta vissa sekventiella kritiska avsnitt. Kön avCPU:er eller personer som väntar på att komma in i en kritisk sektion kan modelleras som en kö, vilket gör att vi kan använda köteori för att förstå hur köens cykeltid förändras när köstorleken växer. Om vi modellerar kön till en sekventiell sektion som en G/G/1G/G/G/1G/G/1-kö, det vill säga utan att göra några påståenden om ankomstprocessen eller fördelningen av servicetiden utan att anta att det finns en enda köserver (dvs. endast en CPU eller person kan hålla låset), kommer vi fram till Kingmans formel för den genomsnittliga väntetiden:
E(Wq)≈(ρ1-ρ)(ca2+cs22)τ\mathbb E(W_q) \approx \left( \frac{\rho}{1-\rho} \right) \left( \frac{c_a^2+c_s^2}{2}\right) \tauE(Wq)≈(1-ρρρ)(2ca2+cs2)τ
Notably, Väntetiden i en kö ökar icke-linjärt med avseende på ρ\rhoρ (utnyttjande) och kvadratiskt med avseende på cac_aca (variationskoefficienten för ankomster) och csc_scs (variationskoefficienten för servicetider). (Detta är den kvantifierade formen av intuitionen att köer antingen är tomma eller överfyllda.)
Den icke-linjära karaktären av detta bör ge oss anledning till eftertanke, eftersom en ökning av antalet personer som kämpar om en delad resurs är samma sak som en ökning av ρ\rhoρ. Om konkurrensen om dessa resurser inte hanteras kan organisatorisk tillväxt leda till katastrofala ökningar av väntetiderna. Vid en viss tidpunkt kan nya medlemmar leda till att organisationens totala produktivitet minskar i stället för att öka, eftersom ökningen av väntetiden på grund av konkurrens är större än ökningen av arbetskapaciteten. (Detta är den organisatoriska versionen av de latensspikar vi ser när servrar blir överbelastade.)
Dessa delade resurser är inte nödvändigtvis fysiska saker, som badrum eller skrivare; de kan vara digitala, som filer i ett källkodsarkiv eller biljetter i en felrapportering, eller organisatoriska, som kodgranskningar eller arbetsuppgifter. Precis som när det gäller att skriva tillämpningar med hög samtidighet krävs det för att bygga högpresterande organisationer att man noggrant och kontinuerligt söker efter delade resurser och utvecklar uttryckliga strategier för att mildra deras inverkan på prestandan.
En vanligt förekommande men sällan framgångsrik strategi är att använda externa resurser – t.ex. konsulter, byråer, personalförstärkning – som ett sätt att kringgå konkurrensen om interna resurser. Konsulterna kan visserligen agera snabbt i en miljö med låg koncentration, men genom att integrera deras arbetsprodukt i de omtvistade resurserna ökar ofta csc_scs (variationen i servicetider, eller hur länge en kritisk sektion hålls kvar). Detta ger en kvadratisk topp i väntetiderna, vilket ökar utnyttjandet, vilket i sin tur ger en superlinjär topp i väntetiderna (köteori är en hård kärring). Framgångsrika strategier för att minska konkurrensutsättning är bland annat att öka antalet instanser av en delad resurs (t.ex, lägga till badrum i takt med att vi får fler anställda)och utveckla statslös heuristik för att samordna tillgången till delade resurser (t.ex. gruppering av anställda i team).
Som i fråga om tillämpningar med många lager är risken för okontrollerade tvistepunkter större ju längre avståndet är mellan dem som utformar organisationen och det arbete som utförs. Organisationsmetoder som tillämpas uppifrån och ner kan leda till underavdelningar som verkar vara parallella insatser när de listas på en bild, men som i själva verket är mycket beroende av varandra och samverkar med varandra. Att bemanna mycket sekventiella insatser som om de vore helt parallella leder till katastrof.
Hell Is Other People
Kostnaderna för sammanhållning ökar kvadratiskt när nya medlemmar tillkommer.Att arbeta med komplexa uppgifter med hjälp av parallella resurser (eller med en grupp människor) kräver kommunikation. En grupp på 333 personer har 333 dyader, en grupp på 444 personer har 666 personer, en grupp på 555 personer har 101010 personer, en grupp på NNN personer har N2-N2\frac{N^2-N}{2}2N2N2-N möjliga dyader. Punkt-till-punkt-kommunikation (dvs. att prata med varandra) kan modelleras som aktivering av en delmängd av dessa dyader.
Vänligen är vissa organisationer mer pratsamma än andra, men kommunikationen är väsentlig för att dela med sig av information och för att samordna åtgärder. Men den är inte gratis. Kommunikationen tar tid. Om den relativa procentandelen människor som behöver prata med varandra för att få något gjort förblir konstant när organisationen växer (dvs. x%x\%x% av alla dyader), kommer den totala tiden som spenderas på kommunikation att växa kvadratiskt när organisationens arbetskapacitet växer linjärt.
Vi kan betrakta gruppmöten som en batching-strategi för att minska antalet enheter som är involverade i punkt-till-punkt-kommunikation, men effektiviteten av denna strategi beror i hög grad på gruppernas relativa överlappning och gruppstrukturerna. Graden av överlappning mellan grupperna är i princip samma faktor som den procentuella andelen dyader som krävs för kommunikationen. Om gruppstorlekarna är begränsade kommer sammanhållningskostnadernas tillväxt att minskas med en konstant faktor men ändå växa kvadratiskt. Det kan vara frestande att försöka satsa på koherens och bara köra på det smutsiga, men även subtila former av bristande koherens medför enorma kostnader för företagen. Den enda skalbara strategin för att begränsa kostnaderna för koherens är att begränsa antalet personer som en individ måste prata med för att kunna utföra sitt arbete till en konstant faktor.
I fråga om organisatorisk utformning innebär detta att man begränsar både typerna av och antalet konsulterade grupper i organisationens process. Varje ytterligare person eller grupp i en ansvarsfördelningsmatris ökar geometriskt matrisens yta. Varje ytterligare ansvarstilldelning i den matrisen ökar geometriskt kostnaden för organisatorisk sammanhållning.
Det är också värt att notera att denna parvisa kommunikation inte behöver vara formell, planerad eller ens välkänd för att ha kostnader. Varken personalhandboken eller kalendern är exakta beskrivningar av hur arbetet i organisationen går till. Om din organisation inte är bemannad med zombier kommer organisationens medlemmar ständigt att undergräva standardrutinerna för att få det faktiska arbetet utfört. Även myror improviserar. En korrekt redovisning av dessa dolda kostnader kan endast utvecklas genom en ärlig, oklanderlig och fortlöpande analys från början till slut av arbetet medan det pågår.
Principer från bortom tid och rum
Håll arbetet parallellt, grupperna små och resurserna lokala.
När vi ställs inför en uppsättning problem som blir superlinjärt svårlösta när NNN ökar, är det bästa sättet att göra det på att hålla NNN liten. Om organisationens avsikt är att öka värdeskapandet genom att anställa fler personer måste arbetsinsatserna vara så oberoende som möjligt. Ledare bör utveckla metoder och processer för att se till att de arbetsinsatser som enligt deras strategier är parallella verkligen är parallella. Delade resurser bör kontinuerligt hanteras för att undvika konflikter, och när det är möjligt bör de resurser som en grupp behöver placeras tillsammans med den gruppen (t.ex. om arbetet omfattar mycket design bör en designer anställas i den gruppen). Doktrin för kombinerade vapen är inte bara för soldater.
Prioritera utvecklingen av kraftmultiplikatorer.
Om en organisation i stor utsträckning arbetar med samma typer av problem som den gjorde under tidigare år är det skäl till oro. Grupper som ägnar sig åt intern verktygsutveckling bör bemannas och ges den uttryckliga inriktningen att bygga verktyg och optimera processer för att hjälpa till att öka sina kollegors produktivitet. Om den andel av organisationen som ägnar sig åt att förbättra hur organisationen arbetar börjar sjunka, fråga dig själv – har vi nått ett globalt eller lokalt maximum? Satsa länge på verktyg med hög hävstångseffekt, men håll dig på jorden för att se om de verkligen hjälper eller inte.
Om det är möjligt, dela upp arbetsprodukterna i oberoende moduler; om det inte är möjligt, väx långsamt och optimera.
Om din arbetsprodukt – t.ex. kodbasen, dokumenten etc. – kan delas upp i oberoende moduler, gör det. Nyckelordet är oberoende. Att dela upp din skit i hundra mikrotjänster kommer inte att hjälpa dig om alla måste ändra tio av dem för att få något gjort. Vissa problem är inte särskilt lätta att dela upp, men det är också problem som inte gynnas särskilt mycket av ytterligare arbetare. Om problemet är en fast punkt bör man undersöka hur man kan optimera den sekventiella delen av arbetet. Om du vet att om du kastar folk på problemet kommer det att leda till ett klusterfuck.
Skalera de organisatoriska insatserna över en portfölj av synergistiska produkter.
De flesta smarta företag börjar med en enda produkt. De satsar på sin produkthypotes, lägger sina ägg i en enda korg och satsar hårt. Om de har tur nog att få dragkraft, så dubblerar de på detta. Över. Och om och om igen. Och om och om igen. Vid en viss tidpunkt har de flera bataljoner av människor som alla försöker ta reda på vem som äger turboencabulator-UI och om de nya marzelvanerna kommer att vara helt antigravitativa vid höstens stora marknadsföringsinsats.
För att undvika detta bör organisationens ledare ha utvecklingen av en produktportfölj som ett uttalat mål. Funktioner eller produktidéer som kompletterar organisationens övergripande affärsstrategi men som inte naturligt existerar tillsammans med huvudprodukten kan utvecklas som separata produkter av oberoende team. Det borde vara lätt att välja mellan en enda produkt på 18 veckor eller två produkter på 24 veckor.
Succéfyllda nya produkter kan integreras stegvis med befintliga produkter där det är meningsfullt, och verktyg, bibliotek och ramar kan utvecklas av kraftmultiplikatorgrupper för att minska både tiden till marknadsintroduktion för nya produkter och kostnaderna för befintliga produkter. Misslyckade nya produkter kan tas bort från marknaden på ett elegant sätt till en dramatiskt lägre kostnad än funktioner med liknande komplexitet. Att ta bort en funktion från en produkt innebär trots allt samma kostnader för konflikt och sammanhållning som att lägga till en funktion. Det är sällan som en funktion har en kostnad som är större än kostnaden för att ta bort den, därav förekomsten av Flying Dutchman-funktioner.
Som ett konkret exempel på en produktportföljs fördelar kan man föreställa sig Amazon Web Services som en enda produkt, bemannad av hundra tusen dödsdömda själar och med ett användargränssnitt som bara är en serie knappar som gör det möjligt för dig att tillhandahålla och driva virtuella maskiner, databaser, datalager, robottillämpningar, augmented reality-applikationer, IoT-dingusar och mycket mer. En sådan varelse skulle implodera under sin egen tyngd.
Istället är Amazon Web Services en portfölj av synergistiska produkter. EC2 har sin egen oberoende uppsättning funktioner som utvecklas och drivs av en oberoende grupp anställda. När dess behov kan tillgodoses av en annan AWS-produkt (t.ex. lagring av avbildningar av virtuella maskiner på S3 eller sändning av mätvärden tillCloudWatch) införs en produktöverskridande integration. Denna produktstruktur möjliggör den mycket samtidiga organisationsstruktur som gör det möjligt för Amazon att lansera ett rasande antal nya produkter varje år samtidigt som man fortsätter att stödja och utveckla befintliga produkter. Felaktiga tjänster kan avvecklas eller dras ner utan att störa resten av organisationen.
Håll ansvarsfördelningsmatriserna små, glesa och lokala.
I takt med att en organisation mognar utvecklas ad hoc-roller ofta till kompletta team. Denna specialisering är ofta avgörande för att bygga upp interna stordriftsfördelar, men formaliseringen av nya grupper bör hållas i schack. Varje kolumn i din matris för ansvarstilldelning utökar den möjliga uppsättningen av nödvändiga interaktioner geometriskt; varje uppdrag i matrisen är en samordningspunkt som kräver väntan. Om en matris visar att det finns en relation med många kontakter mellan två grupper (t.ex. en grupp ingenjörer som arbetar med en funktion och jurister som försöker se till att den funktionen uppfyller de rättsliga kraven), bör man försöka minska kostnaderna för denna interaktion genom att samlokalisera deras medlemmar (t.ex,
Prioritera asynkron informationsdistribution framför synkron.
En betydande källa till misslyckade krav på möten och statusuppdateringar är organisationsledarnas önskan att hålla sig uppdaterade om vem som gör vad. Denna situationsmedvetenhet är verkligen viktig, men att försöka upprätthålla den genom att kalla till möten, skicka meddelanden till folk på Slack och fånga upp folk i korridorerna är en betydande systemisk hämsko på organisationens produktivitet.
En bättre modell för att hålla sig informerad om utvecklingen när organisationen skalar är att grupper publicerar statusuppdateringar som en del av den regelbundna kadens i sitt arbete. Ledare kan asynkront läsa dessa uppdateringar och, om behov uppstår, inleda ytterligare synkrona samtal för att ställa frågor, ge feedback etc.
Synkrona möten bör reserveras för samarbete med låg latens i komplexa frågor; på samma sätt bör samarbete reserveras för synkrona möten.
Vad som händer innanför gränserna är viktigt.
Det faktum att vi känner till en del av gränserna för organisatoriska prestationer och deras dynamik ursäktar oss inte från att använda vår empati för att bygga humana organisationer. Företag är grupper av människor som kompenseras för att de måste tillbringa en del av sin begränsade livstid utan att vara tillsammans med sin partner, sina barn, sina husdjur eller sina superkonstiga hobbies. De förtjänar att vara medlemmar i organisationer som hedrar den tiden genom att se till att deras arbete har ett värde och en mening. Det finns ingen matematisk modell som kan vägleda oss till detta mål.
Tack till olika Fiascans för att de har granskat det här inlägget. Eventuella fel i artikeln är mina, inte deras.