Innovatie & Strategie

Software-ontwikkeling
Curve

Flattening the curve

Een exponentiële curve hoeft helemaal niet zo erg te zijn, als hij maar heel erg uitgerekt wordt.

© CC0 - Pexels.com Athena
30 september 2020

Teken een assenstelsel. Horizontaal de grootte van systemen. Links een minimaal systeem dat helemaal niets voorstelt, rechts het meest reusachtige systeem dat je kent. En op de verticale as staat de energie die nodig is om een wijziging in die systemen door te voeren. Stel je voor dat je in systemen van verschillende groottes dezelfde wijziging zou moeten doorvoeren. Welke lijn trek je door dit assenstelsel? Een horizontale rechte lijn – een wijziging kost altijd evenveel energie? Een rechte lijn die schuin omhoogloopt? Een lijn die exponentieel omhooggaat?

Grote IT-projecten willen nog weleens misgaan. Het bouwen van een groot systeem is ook niet niks.

Ik ga ervan uit dat het werk aan zo’n systeem exponentieel van aard is. Dat wil zeggen: dat eenzelfde wijziging aan een twee keer zo groot systeem méér dan twee keer zo veel energie kost. Waarom? Omdat de onderdelen van een systeem onderling afhankelijk zijn. Als je één zo’n component uitbreidt of aanpast, dan zijn er componenten daaromheen die ook aangepast moeten worden. Een groter systeem kent meer componenten. Een uitbreiding of wijziging raakt dus potentieel meer componenten die allemaal aangepast en hertest moeten worden. En dan is er nog de procesmatige ballast die steeds groter wordt. Elke aanpassing vergt dat je een deel van de bestaande requirements, testcases en documentatie moet bijwerken. Werken er twee keer zo veel mensen aan het project, dan heb je méér dan twee keer zo veel overleg tussen al die mensen.

Projectmatig zijn we meestal niet klaar voor de exponentiële aard van ons werk. We plannen een project, hakken het werk in stukken en gaan ervan uit dat even grote stukken werk gedurende de hele levensloop van het project evenveel tijd nodig zullen hebben. De werkelijkheid zal helaas meestal anders zijn. In extreme gevallen kost het bouwen van de laatste onderdelen van het systeem 'oneindig' veel energie, zodat het onrealistisch is om het systeem af te maken. Er is niets anders te doen dan die laatste werkzaamheden op te geven. Het project kan niet afgemaakt worden.

Er zal trouwens wel een punt komen waarop het werk niet meer exponentieel is. Zodra systemen dusdanig groot worden dat ze feitelijk een ecosysteem van systemen gaan vormen, worden de afhankelijkheden en interacties weer zwakker. De exponentiële curve zal dus eigenlijk wel een s-curve zijn, eentje met een plafond. In de praktijk komen we daar alleen niet zo vaak. Laten we voor de zekerheid maar uitgaan van exponentiële projecten.

Wat kunnen we er aan doen? Flattening the curve! Een exponentiële curve hoeft helemaal niet zo erg te zijn, als hij maar heel erg uitgerekt wordt – dan lijkt het net een horizontale of misschien lineair oplopende lijn. Die exponentiële lijn 'platslaan' doe je door alle onnodige afhankelijkheden er rigoureus uit te halen, door continu te bezuinigen op onnodige processen, door zo snel en veel mogelijk afscheid te nemen van de ballast die je met het project meezeult. Daar moet je niet mee beginnen als je aan het einde van die curve bent, dat doe je vanaf dag één.

Magazine AG Connect

Dit artikel is ook gepubliceerd in het magazine van AG Connect (septembernummer, 2020). Wil je alle artikelen uit dit nummer lezen, klik dan hier voor de inhoudsopgave.

Reactie toevoegen
1
Reacties
Atilla Vigh 30 september 2020 12:08

Complexiteit kent een aantal variabelen. Een daarvan is de grootte of het aantal der dingen. Maar complexiteit heeft nog een aantal andere variabelen, zoals relaties, context afhankelijkheid, etc.... Alleen aandacht schenken aan twee variabelen zegt helemaal niets. Overigens ken ik nog niet de "formule" voor complexiteit en de wiskunde ook nog niet.