software ongevallen-raad?
Jan Friso Groote beschrijft in dit artikel op een goede en leuke manier een probleem in het ontwikkelen van software. Hij zou heel graag een software-ongevallen raad hebben die in het geval van mislukken of een ramp uit kan rukken om te bepalen wat er mis is gegaan en om van die fouten te leren. En op zich heeft hij gelijk. Een van de uitspraken die je vaak hoort is "als we auto's bouwen zoals we software bouwen, dan kostte een auto 10 millioen, kon hij niet rechtsaf slaan (patch komt) en past de auto radio van een andere fabrikant niet vanwege niet duidelijke standaarden".
Waar Groote echter niet op in gaat is hoe jong de software industrie is. Vorig jaar schreef ik dit stukje over een gesprek met mijn jongste. De computer industrie en de daarbij horende software ontwikkeling staan nog steeds in hun kinderschoenen. Software bouwen en ontwikkelen wordt vaak (te vaak) vergeleken met het bouwen van een huis.
Echter huizen bouwen doen we al honderden jaren. We weten hoe we dat moeten doen. Maten, standaarden, manieren waarop zaken gedaan moeten worden, alles is bekend. Bij het bouwen van een huis zijn er aannemers die werken met over het algemeen standaard contracten en afspraken. Er zijn architecten die van begin tot eind het project volgen en leiden. Die bewaken dat er aan de standaarden voor het bouwen van huizen wordt voldaan.
Bij het bouwen van huizen kun je tegen een metselaar zeggen: "zo breed, zo hoog, zo diep, standaard raam type 3a in het midden met steen type 12". De metselaar weet dan genoeg.
Dat is een niveau dat we bij het bouwen van software nog niet gehaald hebben. De standaarden voor het bouwen van huizen is over een periode van honderden jaren onstaan in een periode waar industrialisatie een nog onbekend woord was. De bouwers van huizen hebben de tijd gehad om te leren en te integreren.
De huidige maatschappij evolueert met een steeds groter wordende snelheid. Een snelheid die ongekend is. In 150 jaar hebben we meer veranderingen gezien dan in de millenia daarvoor. Binnen de software industrie is deze snelheid nog duidelijker voelbaar. Een stukje code dat niet binnen een half jaar bewijst dat het goed is of voldoet wordt vervangen door een ander stukje code.
Een nieuw huis bouwen van begin tot eind, vanaf het moment dat de opdrachtgever de opdracht geeft duurt vaak ruim een jaar tot twee jaar. Dat is tijd die in de software ontwikkeling niet gegeven wordt.
De mensen die software bouwen zijn nog steeds ambachtsmensen, het zijn echter ook mensen die zich maar al te goed beseffen dat we er nog niet zijn. Steeds meer ontwikkelingen zijn gaande om orde en standaarden te scheppen. SDMC's (software fabrieken), ontwerp methodieken, organisaties zoals TOGAF, archimate, architecten verenigingen. Dit zijn allemaal goed initiatieven in een poging om tot een hoger niveau te komen.
Een software-ongevallenraad zou nog weleens veel te zwaar kunnen zijn op dit moment. Zolang er geen duidelijke standaarden zijn waartegen een software ramp gemeten kan worden, zal een ongevallenraad alleen maar kunnen concluderen dat het fout is gegaan.
Wat er wel moet gebeuren, en daarin geef ik Groote gelijk, is veel meer commitment vanuit de politiek en de onderwijs instellingen. In het bedrijf waar ik werk, leiden we mensen op tot programmeur omdat we de mensen die we nodig hebben niet kunnen krijgen vanuit de onderwijs instellingen. Een metselaar leert het vak van metselen, we hebben software ontwikkelaars nodig die software kunnen ontwikkelen. We hebben architecten nodig die dat vak geleerd hebben.
Den Haag spreekt over een kennis economie, maar neemt geen stappen om deze te bewerkstelligen, Den Haag wil dat we voorop lopen maar bouwt geen fundament waarop we dit kunnen bouwen.
De software industrie is op de goede weg, in de 25 jaar dat ik in deze industrie rondloop heb ik veel goede vooruitgang gezien, ook slechte, maar die waren gelukkig vaak kortstondig. Over 10 jaar kunnen we een ongevallenraad gebruiken, nu kunnen we opleidingen, standaarden en hele goede ambachtsmensen gebruiken om het fundament te leggen voor die raad.