Software ontwikkeling wordt nogal eens met andere industrieën vergeleken. Populair is bijvoorbeeld om het te vergelijken met de bouwsector of de productie industrie. Op zich niets mis mee, ware het niet dat de verschillen wellicht groter zijn dan bedacht. Daarmee zijn de conclusies die bij de vergelijkingen getrokken worden op zijn minst arbitrair.
Laten wij maar eens beginnen bij de bouwsector. Die kan tenslotte projecten netjes op tijd en binnen budget opleveren. Waarom dan altijd die uitloop en overschrijding van het budget bij software ontwikkeling? Nou klopt het dat duizenden woningen op tijd en binnen budget zijn gebouwd. Maar zelfs daar gaat het fout als iemand iets anders wil. Dat is bij mij in ieder geval tot op heden nog altijd fout gegaan. Ook vertonen unieke bouwprojecten dezelfde eigenschappen als software ontwikkeltrajecten. Wie kent niet de voorbeelden van de grote infra-structurele projecten in ons land. Die lijken alleen maar in het nieuws te komen door overschrijding van budget en tijd en kennen diverse op het eerste oog eenvoudig te voorziene problemen waar geen rekening mee gehouden is. Een mooi voorbeeld is de aanleg van de Erasmusbrug in Rotterdam, waar men geen rekening had gehouden met het feit dat in ons land de combinatie wind en regen kan voorkomen. Het gevolg was een 'dansende' brug die daardoor langdurig buiten gebruik werd gesteld.
En dan de productiesector die al jarenlang succesvol de productie uitbesteed aan lage lonen landen. Hierdoor is veel arbeidsintensieve industrie uit het westen verloren gegaan. Het voorland dus voor de het arbeidsintensieve programmeerwerk volgens velen. Maar ik betwijfel dat ten zeerste. Heeft iemand enig idee bij hoeveel stuks het goedkoper is om het te laten produceren in een lage lonen land? Vast niet bij het eerste stuk. Weet iemand eigenlijk waar het eerste stuk van een productie ontwikkeld wordt. Waarschijnlijk niet in een lage lonen land. Want hier drukt de overhead voor afstemming, inregelen en beoordeling van het resultaat zwaar op de kosten. Het omslagpunt ligt pas daarna, als er massaproductie gedraaid kan worden. En daar zit nu het verschil met software ontwikkeling. Die wordt niet in massa ontwikkeld. Het betreft altijd unieke producten die in nauw overleg met de opdrachtgever ontwikkeld moeten worden. Opdrachtgevers die ook nog eens last hebben van voortschrijdend inzicht. Het ontwikkelen van software heeft meer kenmerken van design dan van productie. En design is nog bij uitstek een vakgebied voor de westerse wereld.
Ik kan mij daarom ook vinden in het artikel 'Problemen en misverstanden rondom IT-offshoring' van prof.dr.ir. Rini van Solingen waarin hij aangeeft dat kostenbesparing niet de drijfveer achter offshoring mag zijn. Van Solingen betoogt 'De belangrijkste voordelen van offshoring liggen in het makkelijker opschalen, toegang krijgen tot schaarse kennis en resources, het benutten van tijdverschillen, en het dichter bij (potentiële) klanten zitten'. Een waarheid als een koe, waarmee offshore een aanvulling wordt op lokaal ontwikkelen en niet een vervanging ervan. Dat neemt niet weg dat als wij ons vakgebied niet blijven ontwikkelen deze concurrentie ons onvermijdelijk gaat inhalen. De huidige ontwikkeling op methoden en technieken bieden volop kansen om het design gedeelte te versterken en het ontwikkel stuk kleiner te maken. Ik geloof dus heilig in het behoud van het vakmanschap op het gebied van software ontwikkeling in Nederland.
Helemaal waar wat je stelt. Te vaak is dat een excuus om leerpunten uit andere engineering disciplines dan maar helemaal links te laten liggen. Daar is het ondenkbaar dat er vaklieden iets gaan maken, voordat er een architect en constructeur over nagedacht hebben. Dat vakmanschap is inderdaad iets wat je dicht bij de klant moet houden, maar waar de IT-sector als geheel de kansen moet pakken om met name het design gedeelte van de software ontwikkeling goed in te vullen. Of de productie dan in Nederland, in een nearshore land of in een offshore land wordt uitgevoerd is dan vervolgens een minder relevante keuze. Als we het zo invullen ben ik, net als minister Verhagen, niet bang voor offshoring.
Als je software maken vergelijkt met de bouwsector is de code niet hetzelfde als een huis of een brug. Code lijkt meer op bouwplannen. Bouwvakkers “compileren” de bouwplannen van de architect en maken zo een huis. Als je dat zo bekijkt dan is elke programmeur een architect.
Het bijzondere is dat in Software Engineering de productiefase dus al geheel geautomatiseerd is. De bouwvakkers zijn de compilers (zoals Java, Ruby, PHP, etc).
Softwareontwikkeling gaat waar niemand ooit is geweest, zeker nu de virtualisering van de wereld hand over hand toeneemt en we te maken krijgen met “Big Data”. De enige manier om echt een heel stuk verder te komen in de ontwikkeling van de mensheid is door een intiem ge(re)combineerde virturealiteit te bouwen. In de productie/constructie gebeurt dat met digital manufacturing/factory en baanbrekende simulatie en het gebeurt ook in de eScience en het gebeurt in “normale business”. De “vergelijking” met andere takken van sport gaat dan ook in toenemende mate gewoon mank; die vergelijking stamt van het NAVO-congres uit 1968 in Garmisch-Partenkirchen, alwaar de term “software engineering” voor het eerst werd voorgesteld. Dat is wel ruim 40 jaar geleden. Waarschijnlijk betekent het artikel in Computable, dat de meeste softwareontwikkeling anno nu een herkenbare variant is op de stand van de jaren 70. Daar kom je straks dus steeds minder makkelijk meer mee weg.
In de bouw worden projecten misschien wel op tijd opgeleverd. Maar ik herinner me dat bij oplevering van ons nieuwe kantoor er 1500 restpunten waren. Dat willen we toch niet overnemen? 😉 Een jaar lang liepen er nog mensen rond om deze te repareren.
Ik denk er zaken zijn in de software industrie die we kunnen vergelijken met andere takken van sport, van de aldaar opgedane ervaring kunnen we veel leren. Maar het probleem dat wij hebben is dat we in vergelijking met de meeste andere takken nog erg onvolwassen zijn, en we zijn niet erg goed in leren van anderen. Ik werk al 20 jaar in de automatisering en nog steeds worden dezelfde fouten gemaakt.
De alinea die begint met “En dan de productiesector die al jarenlang succesvol de productie uitbesteed aan lage lonen landen.” vind ik erg sterk en een inzicht.
Als je dan bouwen en ICT software ontwikkelen vergelijkt zijn de vergelijking toch niet heel slecht hoor!
De kwaliteit van de architect is erg belangrijk, zeker met unieke projecten. Maar ook de uitvoerders die met de poten in de klei staan vormen een belangrijk aspect (de projectmanagers), en als laatste de kwaliteit van de bouwvakkers is te vergelijken met de programmeurs (niet ontwikkelaars!).
Als de keten goed is, komt het zowel bij de bouw als bij het softwareontwikkeling traject wel goed.
Wat wel nog steeds een groot verschil is dat er voor de bouw allemaal regels en wetten en vergunning bestaan en software maken nog steeds tot het “wilde westen” hoort. Iedereen mag alles en standaarden zijn ver te zoeken.
De bouw is dan ook wel een eeuwenoude sector en IT nog relatief nieuw. Over 100 jaar zal het daar ook best beter gaan.