kompleksitet
Jeg har gået og funderet over lidt af det samme det sidste stykke tid. Det er ret tydeligt at samfundet har bevæget sig fra robust technologies til brittle technologies, du kommer selv med eksempler. Intet sted er det mere tydeligt end i software industrien der lider af flere problemer:
software er oftest lavet af en række komponenter man ikke selv er herre over, eller har bygget. Mange af dem er mere eller mindre udokumenterede og/eller fejlfyldte. De fleste programmører har prøvet at arbejde med et API eller et library der ikke gjorde som forventet.
Der er mere fokus på at software skal ud af døren end der er på kvaliteten af det. Med det resultat at der sniger sig fejl ind.
Et nogenlunde kompliceret stykke software er tit afhængig af flere tusinde komponenter der alle skal fungere. Set i lyset af ovenstående er det faktisk utroligt at der overhovedet er noget der fungerer...
Resultatet viser sig også med jævne mellemrum. Der går ikke en dag uden at man som almindelig bruger oplever fejl med computere.. Styresystemer der crasher, sites der ikke kan fås forbindelse til, browsere der hænger, routere der går ned. Fortsæt selv...
Eftersom vi bliver ved med gladeligt at bygge ovenpå de eksisterende API'er og libraries bliver fejlene sværere og sværere at finde, og samtidig akkumuleres de. En udvikler mener måske at hvis hans program fungerer i 99.9% af tilfældene er det godt nok. Men hvis alle de ti tusinde småprogrammer du er afhængig af for at skrive en kommentar på ing.dk har en oppetid på 99.9% skal der ikke den store statistiker til at se at der er et problem. Prøv selv at tænk igennem hvor meget der rent faktisk skal gå godt for at jeg kan skrive en kommentar og du kan se den. Browser, stavekontrol, styresytem, diverse routere, webservere, databaser og så videre. alle afhængige af tusinde af komponenter.
den måde vi håndterer kompleksiteten på er at vi debugger, og prøver at tage højde for fejl som aldrig før. En fornuftig programmør kunne aldrig drømme om at lave et databasekald eller bruge et tredjepartsbibliotek uden at tage højde for hvad der sker hvis det fejler på den ene eller anden måde. Vi bruger længere og længere tid på at tage højde for alt det der kan gå galt i vores brittle systemer, og kortere og kortere tid på rent faktisk at skrive den kode vi gerne vil.
Det værste er at problemet kun bliver større med tiden efterhånden som der bliver lagt flere lag på.


Kommentarer (43)