Articles

Work Is Work

In which returns diminish.

12 Jan 2020

Iedere keer dat ik over organisatieontwerp heb geschreven of gesproken, heb ik daar spijt van gehad. Er is iets met een standpunt innemen dat me een paar jaar later in het ongelijk stelt. Maar ik heb er weer eens lang over nagedacht, en dit is wat ik heb. Strap the fuck in.

Op een gegeven moment realiseert iedere organisatie zich dat het langzamer gaat. Het duurt langer om nieuwe dingen te lanceren, mensen besteden meer en meer tijd aan vergaderingen, en iedereen raakt in paniek over schattingen en planning. Als we essentialistische onzin over “B-spelers die C-spelers inhuren” hebben geïnternaliseerd, worden we misschien nerveus over de bar en het inhuren. Als we angstig en onzeker zijn, krijgen we misschien religie over Agile of Scrum of wat dan ook. Als we geneigd zijn tot modernistische fantasieën, kunnen we besluiten om onze innovatiemunten te spenderen aan het verstoren van de 200.000 jaar oude industrie om mensen te laten samenwerken. Als wij het type zijn om onze acht te doen en de poort te raken, krijten wij het op als de prijs van succes.

Deze benaderingen leveren zelden resultaten op.

Onze dogmatische sluimer

De meeste verklaringen van organisatorisch succes of mislukking zijn onzin. Emic accounts – d.w.z. die van binnen de organisatie – zijn beperkt tot die concepten en verhalen die binnen de organisatie bestaan. Zij kunnen structureel dienen als zelfverhalen en een gevoel van groepsidentiteit en doelgerichtheid bevorderen, maar omdat zij afkomstig zijn uit het epistemologische equivalent van een zwaartekrachtput, is hun verklarende kracht buiten die organisatie meestal verschrikkelijk.

Als wij het etische perspectief nemen – d.w.z. van buiten de organisatie – kunnen wij zien dat emische verklaringen voor het succes of falen van een organisatie gemakkelijk beschikbare contrafacten in andere organisaties hebben. Als agile, platte organisaties, code reviews, monorepos, open kantoren, fancy typesystemen, enz. werkelijk de oorzakelijke factoren zijn die ze beweerd worden te zijn, waarom nemen dan zoveel organisaties die praktijken zonder succes over? Waarom zijn er andere succesvolle organisaties die deze praktijken niet hebben? Hoe kunnen wij het verschil zien tussen cum hoc, ergo prompter hoc-gewoon-zo verhalen en daadwerkelijke oorzakelijke factoren?

Belangrijker nog, kunnen wij de supervenience bepalen van een bepaalde reeks factoren op organisatorische prestaties, niet alleen in een bepaalde context maar over alle mogelijke organisaties? Dat wil zeggen, zijn er noodzakelijke, a priori waarheden van organisatorische prestaties?

As het gebeurt, zijn die er.

Als je je ogen goed dichtknijpt, is een organisatie die werk verricht gewoon een ongelooflijk complex, dynamisch, gedistribueerd, parallel proces. We beschikken over zeer goede middelen om te begrijpen hoe die in grote lijnen werken. Die gaan minstens terug tot Manabrea’s opmerking uit 1842 aan Babbage over zijn analytische machine. Nu zal ik niet beweren dat ik een psychogeschiedenis heb ontwikkeld en gezien hoe moeilijk het is om het gedrag van zelfs eenvoudige dynamische systemen te voorspellen, lijkt een volledig voorspellend model van organisatorisch succes zeker onmogelijk.

Maar net zoals Kant de noodzakelijke voorwaarden van subjectieve ervaring probeerde af te leiden in de Kritiek van de zuivere rede, kunnen we de grenzen schetsen van waartoe een organisatie in staat is en de dynamiek daarvan naarmate zij groeit. Op dezelfde manier als de a priori kennis dat tien pond meer weegt dan vijf pond informeert hoeveel troep we kunnen verwachten in een zak te passen, kan het modelleren van organisaties als parallelle processen ons informeren over de manier waarop we ze ontwerpen.

Wat er binnen die grenzen gebeurt is een kwestie van uitvoering en inspanning; wat er buiten die grenzen gebeurt is onmogelijk.

Het plafond is laag

De werkcapaciteit van een organisatie schaalt hooguit lineair naarmate er nieuwe leden bijkomen.Elk nieuw lid in een organisatie voegt een constant aantal mogelijke werkuren toe aan het totaal aantal mogelijke werkuren van de bestaande werknemers van het bedrijf. De Wet van Amdahl stelt dat bij een vaste taak een parallelle oplossing met NNN processoren maximaal een factor NNN sneller is dan een sequentiële oplossing.

Als parallelle hulpmiddelen worden toegevoegd, neemt de totale tijd besteed aan het parallelle deel van de taak af tot nul; de totale tijd besteed aan het sequentiële deel van de taak daalt daarentegen nooit onder een minimumwaarde. Dit geldt net zo goed voor een groep mensen die software probeert te schrijven als voor een groep CPU’s die het gedrag van sterren in het melkwegstelsel probeert te modelleren. Onze intuïtie zegt ons dat grotere organisaties superlineair gedrag vertonen, maar dit kan letterlijk niet het geval zijn indien indienstneming de enige variabele in de vergelijking is. Daarom ligt onze enige hoop op superlineaire productiviteit in het veranderen van de taak die wordt uitgevoerd. Gelukkig is werkcapaciteit niet hetzelfde als productiviteit.

Als een organisatie meer werknemers aanneemt, moet het werken aan productiviteitsverbetering een constante prioriteit zijn. Interne hulpmiddelen, opleiding en diensten moeten worden ontwikkeld en in praktijk gebracht om ervoor te zorgen dat alle leden in staat zijn te werken aan problemen met een steeds grotere impact. Het onophoudelijke nastreven van krachtvermeerderaars is de enige mogelijke weg naar superlineaire productiviteitsverbeteringen naarmate een organisatie groeit.

Ten slotte moet worden benadrukt dat deze lineaire begrenzing van de werkcapaciteit een plafond is, geen bodem.Men kan niet beter doen dan lineair, maar men kan zeker slechter doen. Er zijn vele andere factoren die als een rem op de werkcapaciteit werken, en organisatie-brede verbeteringen in productiviteit zijn kritisch in het mitigeren van hen.

The Floor Is Lava

Contentionele kosten groeien superlineair als nieuwe leden worden toegevoegd. Parallelle oplossingen voor taken zijn zelden perfect gelijktijdig (en dergelijke taken worden terecht “gênant parallel” genoemd), en vereisen vaak enkele sequentiële kritieke secties. De rijCPU’s of mensen die wachten om een kritieke sectie binnen te gaan, kan worden gemodelleerd als een wachtrij, waardoor we de wachtrijtheorie kunnen gebruiken om te begrijpen hoe de cyclustijd van de wachtrij verandert als de wachtrij groter wordt. Als we de rij voor een sequentiële sectie modelleren als een G/G/1G/G/1G/G/1-wachtrij, d.w.z. zonder beweringen te doen over het aankomstproces of de verdeling van de wachttijd, maar uitgaande van een enkele wachtrijserver (d.w.z. slechts één CPU of persoon kan het slot vasthouden), komen we tot Kingman’s Formule voor de gemiddelde wachttijd:

E(Wq)≈(ρ1-ρ)(ca2+cs22)τ 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, de wachttijd van een wachtrij niet-lineair toeneemt met betrekking tot ρρrhoρ (bezettingsgraad) en kwadratisch met betrekking tot cac_aca (de variatiecoëfficiënt voor aankomsten) en csc_scs (de variatiecoëfficiënt voor diensttijden). (Dit is de gekwantificeerde vorm van de intuïtie dat wachtrijen óf leeg zijn óf overvol.)

De niet-lineariteit hiervan zou ons tot nadenken moeten stemmen, want een toename van het aantal mensen dat om een gedeelde hulpbron vecht, is hetzelfde als een toename vanρrhoρ. Als de conflicten over deze middelen niet worden beheerst, kan de groei van de organisatie resulteren in catastrofale stijgingen van de wachttijd. Op een bepaald moment kan het toevoegen van nieuwe leden de totale productiviteit van de organisatie doen afnemen in plaats van toenemen, omdat de toename van de wachttijd als gevolg van de conflicten groter is dan de toename van de werkcapaciteit. (Dit is de organisatorische versie van de latency pieken die we zien als servers overbelast raken.)

Deze gedeelde bronnen zijn niet noodzakelijkerwijs fysieke dingen, zoals badkamers of printers; ze kunnen digitaal zijn, zoals bestanden in een broncode repository of tickets in een bug tracker, of organisatorisch, zoals code reviews of werkopdrachten. Net als bij het schrijven van toepassingen met een hoge mate van gelijktijdigheid, vereist het bouwen van goed presterende organisaties een zorgvuldige en voortdurende zoektocht naar gedeelde hulpbronnen, en het ontwikkelen van expliciete strategieën om hun invloed op de prestaties te beperken.

Een veel toegepaste maar zelden succesvolle strategie is het gebruik van externe hulpbronnen – bijv. consultants, bureaus, personeelsuitbreiding – als een manier om de strijd om interne hulpbronnen te omzeilen. Hoewel de consultants inderdaad snel kunnen werken in een omgeving met een lage contententie, heeft de integratie van hun werkproduct in de betwiste middelen vaak tot gevolg dat csc_sc’s (de variatie van de servicetijden, of hoe lang een kritisch onderdeel wordt vastgehouden) worden opgeblazen. Dit veroorzaakt een kwadratische piek in wachttijden, waardoor het gebruik toeneemt, wat weer een superlineaire piek in wachttijden veroorzaakt. (Wachtrij-theorie is een harde lerares.) Succesvolle strategieën voor het verminderen van contentie omvatten het verhogen van het aantal instanties van een gedeelde bron (b.v., het toevoegen van badkamers naarmate er werknemers bijkomen) en het ontwikkelen van stateloze heuristieken voor het coördineren van de toegang tot gedeelde bronnen (bijvoorbeeld het groeperen van werknemers in teams).

Zoals bij zwaar gelaagde applicaties geldt ook hier: hoe groter de afstand tussen degenen die de organisatie ontwerpen en het werk dat wordt gedaan, hoe groter het risico van onbeheerde geschilpunten. Top-down organisatiemethoden kunnen leiden tot onderverdelingen die parallelle inspanningen lijken wanneer ze op een dia worden opgesomd, maar die in werkelijkheid zeer afhankelijk zijn van elkaar en in elkaar grijpen. Staffing highly sequential efforts as if they were entirely parallel leads to catastrophe.

Hell Is Other People

Coherence costs grow quadratically as new members are added.Working on complex tasks using parallel resources (or with a group of people) requires communication. Een groep van 333 heeft 333 dyads; een groep van 444 heeft 666; een groep van 555 heeft101010; een groep van NNN mensen heeft N2-N2\frac{N^2-N}{2}2N2-N mogelijke dyads. Point-to-point communicatie (d.w.z. met elkaar praten) kan worden gemodelleerd als de activering van een subset van die dyads.

Hoewel sommige organisaties spraakzamer zijn dan andere, is deze communicatie essentieel voor het delen van informatie en de coördinatie van actie. Maar het is niet gratis. Communicatie kost tijd. Als het relatieve percentage mensen dat met elkaar moet praten om iets gedaan te krijgen constant blijft naarmate de organisatie groeit (d.w.z. x%x%x% van alle dyades), zal de totale tijd die aan communicatie wordt besteed kwadratisch toenemen naarmate de werkcapaciteit van de organisatie lineair groeit.

We kunnen groepsvergaderingen beschouwen als een batching-strategie om het aantal entiteiten dat betrokken is bij communicatie van punt tot punt te verminderen, maar de effectiviteit van deze strategie hangt sterk af van de relatieve overlap van groepen en de groepsstructuren. De mate waarin de groepen elkaar overlappen is in wezen dezelfde factor als het percentage dyads dat nodig is voor de communicatie. Als de groepsgrootte begrensd is, zal de groei van de coherentiekosten met een constante factor afnemen, maar nog steeds kwadratisch toenemen. Het kan verleidelijk zijn om te proberen te gokken op coherentie en het gewoon te laten gebeuren, maar zelfs subtiele vormen van incoherentie hebben enorme bedrijfskosten. De enige schaalbare strategie voor het beheersen van coherentiekosten is het beperken van het aantal mensen met wie een individu moet praten om zijn werk te doen tot een constante factor.

In termen van organisatieontwerp betekent dit het beperken van zowel de soorten als de aantallen geraadpleegde instanties in het proces van de organisatie. Elke extra persoon of groep in een verantwoordelijkheidstoewijzingsmatrix vergroot geometrisch het gebied van die matrix. Elke extra verantwoordelijkheidstoewijzing in die matrix verhoogt geometrisch de kosten van organisatorische coherentie.

Het is ook de moeite waard op te merken dat deze paarsgewijze communicatie niet formeel, gepland, of zelfs maar bekend hoeft te zijn om kosten te hebben. Noch uw werknemershandboek, noch uw agenda zijn accurate voorspellingen van hoe het werk in de organisatie wordt gedaan. Tenzij uw organisatie bemand is met zombies, zullen leden van de organisatie voortdurend de standaardprocedure omzeilen om het eigenlijke werk gedaan te krijgen. Zelfs mieren improviseren. Een nauwkeurige berekening van deze verborgen kosten kan alleen worden ontwikkeld via een eerlijke, schuldloze en voortdurende end-to-end analyse van het werk terwijl het gebeurt.

Principes van voorbij ruimte en tijd

Houd het werk parallel, de groepen klein, en de middelen lokaal.

Wanneer u wordt geconfronteerd met een reeks problemen die superlineair onuitvoerbaar worden naarmate NNN toeneemt, is onze beste gok om NNN klein te houden. Als het de bedoeling van de organisatie is om de levering van waarde te verhogen door meer mensen aan te nemen, moeten de werkinspanningen zo onafhankelijk mogelijk zijn. Leiders zouden praktijken en processen moeten ontwikkelen om te verzekeren dat de werkinspanningen die hun strategieën als parallel beschouwen ook werkelijk parallel zijn. Gedeelde middelen moeten voortdurend worden beheerd op contentie, en waar mogelijk moeten de middelen die een groep nodig heeft bij die groep worden ondergebracht (bv. als het werk veel ontwerp inhoudt, moet een ontwerper aan die groep worden toegevoegd). Gecombineerde wapen doctrine is niet alleen voor soldaten.

Prioriteit geven aan de ontwikkeling van krachtvermeerderaars.

Als een organisatie grotendeels werkt aan dezelfde soort problemen als in voorgaande jaren, dan is dat reden tot zorg. Teams die zich bezighouden met interne tooling moeten worden bemand en expliciet worden belast met het bouwen van tools en het optimaliseren van processen om de productiviteit van hun collega’s te helpen verhogen. Als het percentage van de organisatie dat zich bezighoudt met het verbeteren van de manier waarop de organisatie werkt, begint te dalen, vraag jezelf dan af of we een globaal of lokaal maximum hebben bereikt. Ga voor tools met een hoge leverage, maar blijf geaard in de vraag of ze daadwerkelijk helpen of niet.

Indien mogelijk, verdeel werkproducten in onafhankelijke modules; zo niet, groei langzaam en optimaliseer.

Als uw werkproduct – bijvoorbeeld codebase, documenten, etc. – in onafhankelijke modules kan worden verdeeld, doe dat dan. Het sleutelwoord daar is onafhankelijk. Je shit opdelen in honderd microservices zal je niet helpen als iedereen er tien moet veranderen om iets gedaan te krijgen. Sommige problemen zijn niet bijzonder geschikt om op te splitsen; dit zijn ook problemen die niet veel baat hebben bij extra werkers. Als het probleem een vast punt is, kijk dan naar manieren om het sequentiële deel van het werk te optimaliseren. Weet dat het gooien van mensen naar dat probleem een clusterfuck zal opleveren.

Schaal organisatorische inspanningen over een portefeuille van synergetische producten.

De meeste slimme bedrijven beginnen met één enkel product. Zij gaan lang op hun producthypothese, zetten hun eieren in een enkele mand, en swing for the fences. Als ze het geluk hebben om tractie te krijgen, verdubbelen ze dit. Over. En nog eens. En nog eens. Op een gegeven moment, hebben ze verschillende bataljons van mensen die rond malen, allemaal proberen uit te vinden wie de eigenaar is van de turbo-encabulator UI en of de nieuwe marzelvanes al dan niet volledig antigravic zal zijn tegen de grote herfst marketing push.

Om dat te vermijden, zouden organisatieleiders de ontwikkeling van een productportefeuille als een expliciet doel moeten houden. Feature of productideeën die complementair zijn aan de algemene bedrijfsstrategie van de organisatie maar niet natuurlijk naast het hoofdproduct bestaan, kunnen als afzonderlijke producten door onafhankelijke teams worden ontwikkeld. We hebben aanwijzingen dat softwareontwikkelingsschema’s met maximaal 25% kunnen worden verkort; het zou gemakkelijk moeten zijn om te kiezen tussen één product in 18 weken of twee producten in 24 weken.

Succesvolle nieuwe producten kunnen waar dat zinvol is incrementeel worden geïntegreerd met de bestaande producten, en tooling, bibliotheken en frameworks kunnen worden ontwikkeld door force multiplier-teams om zowel de time-to-market van nieuwe producten als de draagkosten van bestaande producten te verminderen. Niet-succesvolle nieuwe producten kunnen op een nette manier van de markt worden gehaald tegen veel lagere kosten dan features met een vergelijkbare complexiteit. Het verwijderen van een feature uit een product gaat immers gepaard met dezelfde contention en coherencekosten als het toevoegen van een feature. Het komt zelden voor dat de kosten van een feature hoger zijn dan de kosten van het verwijderen ervan, vandaar de prevalentie van Flying Dutchman features.

Als een concreet voorbeeld van de deugdelijkheid van een productportfolio, stel je Amazon Web Services voor als een enkel product, bemand door honderdduizend verdoemde zielen en met een UI die niet meer is dan een reeks knoppen waarmee je virtuele machines, databases, data lakes, robotapplicaties, augmented reality apps, IoT dinguses, en meer kunt maken en bedienen. Zo’n creatuur zou imploderen onder zijn eigen gewicht.

In plaats daarvan, Amazon Web Services is een portfolio van synergetische producten. EC2 heeft zijn eigen onafhankelijke set van functies, ontwikkeld en beheerd door een onafhankelijke set van medewerkers. Wanneer in zijn behoeften kan worden voorzien door een ander AWS-product (bijvoorbeeld het opslaan van virtuele machine-images op S3, of het verzenden van metrieken naarCloudWatch), wordt een cross-productintegratie geïntroduceerd. Deze productstructuur maakt de zeer gelijktijdige organisatiestructuur mogelijk die Amazon in staat stelt om elk jaar een overweldigend aantal nieuwe producten op de markt te brengen, terwijl het de bestaande producten blijft ondersteunen en ontwikkelen. Mislukte diensten kunnen worden stopgezet of afgebouwd zonder de rest van de organisatie te verstoren.

Bewaar de matrices van verantwoordelijkheidstoewijzing klein, spaarzaam en lokaal.

Als een organisatie volwassen wordt, worden ad-hoc rollen vaak ontwikkeld tot volledige teams. Deze specialisatie is vaak essentieel voor het opbouwen van interne schaalvoordelen, maar de formalisering van nieuwe kiesdistricten moet in toom worden gehouden. Elke kolom in uw matrix voor verantwoordelijkheidstoewijzing breidt de mogelijke set van vereiste interacties geometrisch uit; elke toewijzing in de matrix is een coördinatiepunt dat wachten vereist. Waar een matrix wijst op een high-touch relatie tussen twee groepen (b.v. een groep ingenieurs die werken aan een functie en de advocaten die proberen de wettelijke naleving van die functie te verzekeren), zouden inspanningen moeten worden geleverd om de kosten van die interactie te verminderen door hun leden te coloceren (b.v., embed a lawyer with the engineers).

Priorize asynchronous information distribution over synchronous.

A significant source of failure demand for meetings and status updates is the desire oforganizational leaders to keep abreast of who’s doing what. Dit situationeel bewustzijn is inderdaad belangrijk, maar het proberen te handhaven door vergaderingen te beleggen, mensen te berichten op Slack, en mensen in de gangen te betrappen, is een significante systemische rem op de productiviteit van de organisatie.

Een beter model om op de hoogte te blijven van ontwikkelingen terwijl de organisatie schaalt, is voor groepen om statusupdates te publiceren als onderdeel van de regelmatige cadans van hun werk. Leiders kunnen asynchroon deze updates lezen en, als de behoefte zich voordoet, aanvullende, synchrone conversatie initiëren om vragen te stellen, feedback te geven, etc.

Synchrone vergaderingen moeten worden gereserveerd voor samenwerking bij complexe kwesties met een lage latentie; evenzo moet samenwerking worden gereserveerd voor synchrone vergaderingen.

Wat er binnen de grenzen gebeurt is belangrijk.

Dat we sommige grenzen van organisatorische prestaties en hun dynamiek kennen, ontslaat ons niet van het gebruik van ons inlevingsvermogen om menselijke organisaties te bouwen. Bedrijven zijn groepen mensen die gecompenseerd worden omdat ze een deel van hun eindige leven niet bij hun partner, kinderen, huisdieren of supervreemde hobby’s kunnen zijn. Zij verdienen het lid te zijn van organisaties die deze tijd eren door ervoor te zorgen dat hun werk waarde en betekenis heeft. Er is geen wiskundig model om u naar dat doel te leiden.

Dank aan diverse Fiascans voor het nakijken van dit bericht. Eventuele fouten in dit artikel zijn van mij, niet van hen.