Online03.03.2015

6 redenen waarom software bouwen zo verschrikkelijk lastig is


Na 25 jaar intensief betrokken te zijn geweest bij het mooie vak van Software ontwikkeling leek het me wel eens handig om op papier te zetten waarom het zo’n moeilijk vak is. Heel vaak, eigenlijk bijna altijd, krijg je de vraag van een klant hoe het toch komt dat je nooit een project op kunt leveren zonder bugs en binnen de tijd en het budget. Er zijn een paar artikelen hierover op het Internet, en ze komen altijd op hetzelfde neer. In deze post zal ik proberen, via een 6-tal punten, aan te geven waarom dit is.

1. Software bouwen kan vergeleken worden met het bouwen van een huis

In de dagelijkse praktijk gebruik ik deze analogie continu. Je moet ook wel, want het vak software ontwikkeling is doorspekt met jargon. Als je een huis gaat bouwen dan is het eerste wat je doet, kijken hoeveel het ongeveer mag kosten. Je hebt een globaal budget, en diep in je hart heb je er al 10% bovenop gezet, omdat je weet dat er zaken zijn waar je niet zeker van bent. Wil je een luxe keuken? Hoe belangrijk is een ligbad in alle badkamers, Een mooie tuin kost ook geld, etc. Met dit budget ga je naar een architect. Samen met de architect ga je op papier zetten wat je wensen en eisen zijn. Niet alleen betreffende te gebruiken materialen, maar je gaat ook nadenken over het toekomstige gebruik. Komen er meer kinderen? Zorg ik er voor dat ik tot op late leeftijd in het huis kan wonen? Kortom, je definieert samen met de architect een heel pakket van eisen. De architect gaat aan de slag, en tekent een eerste schets. We weten op dat moment al dat we moeten betalen voor de architect. De architect weet het budget al, en via standaard tabellen kan hij al een indicatie geven van de kosten. Doordat je tekeningen hebt, en tegenwoordig zelfs 3D modellen, is het voor de opdrachtgever heel gemakkelijk om zich een voorstelling te maken over wat hij gaat krijgen. Als de opdrachtgever en architect in overeenstemming zijn, dan maakt de architect een zogenaamd bestek, waarin alle werkzaamheden zijn uitgeschreven, vierkante meters tegels, muren, dakpannen, hoeveelheid kozijnen, soort glas, waterleiding plan, elektriciteit plan, kortom, een groot boekwerk met alle details van alle werkzaamheden. De opdrachtgever kan deze ook lezen, en begrijpen, want het is iets wat hij kent.

De opdrachtgever weet ook, dat als hij later dingen wil veranderen, hem dat geld gaat kosten, immers, hij weet wat hij eerst heeft gevraagd, en hij snapt dat als het anders moet, dat dit vaak meer werk is. Het is voor een aannemer ook vaak gemakkelijk uit te leggen, en de aannemer zorgt er ook voor dat dit in het contract staat wat hij met de opdrachtgever afsluit.

Iedereen snapt bovenstaand verhaal, maar op het moment dat je dezelfde methodiek voor software wilt hanteren, geeft een opdrachtgever niet thuis. Hij weet gewoon niet hoe hij moet beschrijven wat hij wil, hij kan niet aangeven waarmee het gebouwd moet worden, hij kan zich geen voorstelling maken van het eindresultaat, anders dan de 10% die zichtbaar is voor een eindgebruiker. In het beginstadium van een project worden er dus al totaal verkeerde aannames gedaan, men begint liever direct met bouwen, want dan spaar je de kosten uit voor een gedegen ontwerp en bestek, wat toch niet wordt begrepen door de opdrachtgever.

2. Een software systeem bestaat uit duizenden regels code

Elk nieuw maatwerk project bestaat uit unieke regels code. In de software industrie bestaan wel zogenaamde “Frameworks”, zeg maar legodozen met standaard componenten, maar deze moeten altijd nog aan elkaar worden geprogrammeerd. Als je 10.000 regels code hebt, dan heb je ook direct 10.000 “points of failure”. Verder werken groepen regels samen met andere regels, waardoor de complexiteit, met name van het testen, exponentieel toeneemt. Om dit allemaal goed te testen heb je eigenlijk een goed testteam nodig van professionele testers, een gedegen testplan, en grote sets van test scenario’s. Hier is eigenlijk nooit budget voor, behalve dan voor de zeer kritische software systemen. We vertrouwen dus maar op de “gebruikers” om de code te testen, en we lossen pas problemen op als ze ontdekt worden door gebruikers.

3. Commitment van de eindgebruikers

Heel veel software systemen worden bedacht door speciale consultants, aangestuurd door het management. Zij hebben de specificaties geschreven, hebben hiervoor budget gekregen, en begeleiden vaak de bouw. We zien helaas maar al te vaak dat deze consultants het jargon van software development goed beheersen, maar dat ze veel te weinig kennis hebben van de dagelijkse gang van zaken rondom de bedrijfsprocessen waarvoor de software wordt gemaakt. Heel vaak zien eindgebruikers de software als een bedreiging voor hun eigen werk, en nog vaker zullen zij ervaren dat heel erg veel uitzonderingen, die voor een eindgebruiker evident zijn, totaal niet zijn meegenomen in het ontwerp. Hierdoor ontstaat er een (terechte) aversie vanuit de eindgebruikers, waardoor implementatie en testen moeilijk en tijdrovend wordt.

I know it when I see it

Zoals al bij punt 1 aangegeven, is het voor een gebruiker heel erg moeilijk zich een voorstelling te maken hoe het nieuwe system hem gaat helpen bij zijn werk. Pas als hij het daadwerkelijk ziet, en er daadwerkelijk mee aan de slag gaat, wordt dit duidelijk. Pas dan gaat een gebruiker echt nadenken over wat het systeem eigenlijk zou moeten doen om een goed stuk gereedschap voor die gebruiker te worden. Er volgen wijzigingsvoorstellen, die vaak voor een gebruiker zeer logisch zijn, maar voor een software ontwikkelaar een nachtmerrie blijken te zijn. Een op het oog kleine wijziging kan een zeer grote verbouwing van de software betekenen. Zie het maar als die opdrachtgever van dat huis, die, als de aannemer met het dak bezig is, er achter komt dat hij toch wel heel graag een wijnkelder wil in het huis, het is toch maar een kleine ruimte? Iedereen snapt direct dat om dit te realiseren er zeer grote kosten gemaakt moeten worden. Voor software is dit vaak niet evident voor de klant.

4. Er is een groot verschil tussen een programmeur en een goede programmeur

In elk vakgebied heb je vaklui en talenten. Omdat programmeren een combinatie is van beiden, zijn er zeer grote verschillen tussen programmeurs. Allereerst kennen we de 10.000 uur regel. Deze regel is gebaseerd op wetenschappelijk onderzoek, waarin wordt betoogd dat als je goed wil worden in een vak, je minimaal 10.000 uur moet investeren in dit vak. Dit komt neer op bijna 6,5 jaar. Daarnaast moet je talent hebben. Volgens mij betekent talent voor een belangrijk deel dat je zoveel van een vak houdt dat je bereid bent jezelf daar aan te wijden, op een bijna obsessieve manier. Niet iedereen kan, en wil dit opbrengen. De productiviteit tussen programmeurs kan daarom erg verschillen, soms wel met een factor 20! De oplossing zou dus simpel moeten zijn, huur alleen maar hele goede programmeurs. Dit is helaas niet gemakkelijk, ze zijn dun gezaaid, en als ze al werk hebben waar ze hun talenten kunnen botvieren, zijn ze niet snel geneigd om over te stappen naar een onzeker nieuw project.

5. Externe factoren

Het is zo goed als onmogelijk om alle invloeden van externe factoren goed in te schatten. Stel je moet een complexe portal bouwen die benaderbaar moet zijn via een webbrowser. Er zijn nog steeds bedrijven die met Internet Explorer 6 werken! We hebben zeker 4 versies van Internet Explorer, meerdere versies van Firefox, Chrome en Safari, we hebben Opera, en nog een dozijn andere exotische browsers. We hebben Browsers voor telefoons, voor tablets, voor phablets, voor PC’s voor laptops, etc. Verder worden de browsers regelmatig voorzien van nieuwe functies en updates, om dit allemaal in de gaten te houden heb je alleen al een team nodig. Je hoopt altijd dat de ontwikkelaars van al deze browsers en systemen rekening houden met oudere software die moet werken binnen hun browsers, dat ze zich aan standaarden houden, maar dit is bijna nooit het geval, waardoor het risico dat de software die je aan het bouwen bent, of net hebt geleverd, plots niet meer werkt. Jouw software heeft dan ineens “bugs”, terwijl het eigenlijk de browsers of systemen zijn die niet “backwards compatible” zijn.

6. Het is altijd nieuw

Als je begint aan een nieuw project wil je 9 van de 10 keer ook de nieuwste software en de nieuwste technieken gebruiken. Je moet ook wel, want het systeem waarop je software komt te draaien is vaak nieuw, de apparaten waarmee je software wordt benaderd zijn tegenwoordig altijd automatisch up-to-date, en er is geen klant ter wereld die zal zeggen, gebruik maar Cobol, want dat is “proven technology”.

Juist omdat je dus te maken krijgt met de nieuwste tools, en de nieuwste omgevingen, is het zeer moeilijk, zo niet onmogelijk, om een accurate schatting van de tijd en de kosten af te geven. Het is dan geen wetenschap meer, maar een kunstvorm. Alleen als je al tientallen projecten hebt gedaan, je het ontwikkelteam door en door kent, is het mogelijk om een “best educated guess” af te geven. Mijn ervaring is dat je dan eigenlijk vaak nog tussen de 15 en 45% marge nodig hebt. Kom daar maar eens om bij het bouwen van een huis!

Conclusie

Het bouwen van software is nog steeds een ambacht dat in de kinderschoenen staat. We bouwen al duizenden jaren huizen, maar pas 25 jaar software op grote schaal. De ontwikkelingen gaan zo razendsnel en de complexiteit neemt zo sterk toe, dat het goed begroten van een project eigenlijk ondoenlijk is. Ook al gebruik je technieken als “Agile” en “Scrum”, je moet er vanuit gaan dat de kans dat een project binnen tijd, binnen specificaties en binnen budget wordt opgeleverd ongeveer 4% is. De enige manier om de kosten en de tijd in de hand te houden is voor de ontwikkelaar om volledige transparantie te betrachten gedurende het hele bouwproces, en continu aan te geven waarom er vertraging optreedt. Voor de klant is het essentieel om samen met de ontwikkelaars intensief op te trekken. De klant zal, of hij het wil of niet, mee moeten in de complexiteit van het ontwikkeltraject, en zal continu keuzes moeten maken die zowel de prijs als de opleverdatum zullen beïnvloeden. Pas als je als een team samenwerkt met de klant, oog en oor hebt voor elkaars doelstellingen en uitdagingen, dan pas zijn de juiste voorwaarden geschapen voor een succesvol software project.

Herman Vissia

Dr. Herman Vissia is DGA van het software ontwikkelbedrijf Byelex en doet al jaren onderzoek naar geautomatiseerde beslissingsondersteunings-systemen en kunstmatige intelligentie in nauwe samenwerking met de Staatsuniversiteit in Minsk. Verder staat hij bekend als een gepassioneerd spreker die thuis is op grote internationale conferenties en hij publiceert regelmatig wetenschappelijke artikelen over onderwerpen die gelieerd zijn aan Big Data.

...

Verder lezen over Developers

Samsung Developer Conference 2024: een decennium aan open innovatie

Samsung organiseert op 3 oktober de Samsung Developer Conference 2024 (SDC24) in het San Jose McEnery Convention Center in Californië. Deze alweer tiende editie van de SDC viert een decennium vol open innovatie en samenwerking met developers, partners en klanten. Dit jaar legt Samsung de focus op de nieuwste AI-innovaties.

Events29.08.2024

Samsung Developer Conference 2024: een decennium aan open innovatie

en nu met AI in de spotlight
Veelgemaakte fouten bij het bouwen van een website en hoe ze te vermijden

In het digitale tijdperk kan het bouwen van een effectieve website een uitdaging zijn. Dit artikel belicht veelgemaakte fouten tijdens het ontwikkelen van websites en biedt oplossingen om ze te vermijden.

Online29.04.2024

Veelgemaakte fouten bij het bouwen van een website en hoe ze te vermijden

Dit zijn de 20 baanbrekende uitvindingen die kans maken op de James Dyson Award 2023

Vandaag start de internationale fase van de James Dyson Award 2023, een wereldwijde ingenieursprijs die studenten en pas afgestudeerden oproept om een ontwerp te maken dat een probleem oplost. Dit is de wereldwijde short...

Technology18.10.2023

Dit zijn de 20 baanbrekende uitvindingen die kans maken op de James Dyson Award 2023

​Buitenlandse professionals oplossing voor tekort software ontwikkelaars

Het tekort aan IT-talent wordt in Nederland steeds nijpender. Vooral software ontwikkelaars zijn op onze arbeidsmarkt amper te vinden. De oplossing ligt voor de hand: buiten de eigen vijver vissen. Wereldwijd is er een z...

Online18.10.2023

​Buitenlandse professionals oplossing voor tekort software ontwikkelaars

IT-vacaturebank No Fluff Jobs pleit voor salaris-transparantie

No Fluff Jobs is een nieuwe vacaturebank voor voornamelijk gespecialiseerd IT-personeel waarbij de belangrijkste waarden eerlijkheid, respect en transparantie zijn. Dat betekent duidelijkheid over alle aspecten van een b...

Technology13.07.2023

IT-vacaturebank No Fluff Jobs pleit voor salaris-transparantie

Waarom dure API’s problematisch zijn voor het internet

Twitter-gebruikers die willen tweeten via een derde partij zijn de laatste tijd van een koude kermis thuisgekomen. De reden? Twitter heeft zijn API (een stukje software dat je in je software moet inbouwen en dat Twitter...

Social Media05.06.2023

Waarom dure API’s problematisch zijn voor het internet

Aan de slag met Kubernetes: wat je moet weten

De toepassing van containers wordt steeds gangbaarder. Volgens Gartner zal tegen 2024, 15% van alle applicaties in containers draaien en zal 75% van alle organisaties containers gebruiken in productie. Dit komt door de s...

Technology22.02.2023

Aan de slag met Kubernetes: wat je moet weten

​Raspberry Pi? Je kunt ook Odroid proberen

Het is mede door de chiptekorten niet heel eenvoudig om een Raspberry Pi te kopen. Jammer, want deze apparaten zijn enorm veelzijdig en kunnen onder andere in een smarthome een leuke rol spelen. Is er een alternatief? Ja...

Gadgets25.10.2022

​Raspberry Pi? Je kunt ook Odroid proberen

Verder lezen over Software

Microsoft Outlook loopt vast door deze heel gewone activiteit

Even snel iets kopieren-plakken is er niet meer bij voor mensen die Klassieke Outlook gebruiken. Maar er is een oplossing.

Online04.11.2024

Microsoft Outlook loopt vast door deze heel gewone activiteit

Er is een workaround
Apple Intelligence komt ook naar jouw iPhone

Binnenkort kun je Apple’s AI ook gebruiken op jouw iPhone. Hoewel, ‘binnenkort’: dit is pas in april 2025, dus nog een klein half jaar van nu.

Mobile29.10.2024

Apple Intelligence komt ook naar jouw iPhone

Adobe verrast met tool om platte tekeningen 3D te maken

Adobe heeft het nog niet ingebouwd in tool, maar het is gemaakt voor Illustrator. De tool heet nu nog Project Turntabel en het laat mensen versteld staan van wat de computer allemaal kan bedenken.

Artificial Intelligence21.10.2024

Adobe verrast met tool om platte tekeningen 3D te maken

Pas op: er is een groot beveiligingslek in WordPress-plugin Jetpack

Het zit al sinds 2016 in Jetpack en het zorgt dat gebruikers die ingelogd zijn kunnen lezen wat er in ingediende formulieren staat.

Cybercrime15.10.2024

Pas op: er is een groot beveiligingslek in WordPress-plugin Jetpack

ING introduceert Budgetteren: een maandbudget voor boodschappen, sporten, enzo

ING komt met Budgetteren. Hierdoor heb je hulp met het in de gaten houden van je uitgaven voor meer grip op je financiën.

Online14.10.2024

ING introduceert Budgetteren: een maandbudget voor boodschappen, sporten, enzo

TomTom werkt aan de slimste kaart ter wereld

TomTom werkt aan de slimste kaart ter wereld, en doet onder andere samen met grote techbedrijven. Dit ‘collaborative map making’-proces brengt een nieuw businessmodel en veranderende bedrijfsprocessen met zich mee. Met RISE with SAP kan TomTom deze veranderingen sneller absorberen en de toch ambitieuze doelen realiseren.

Technology14.10.2024

TomTom werkt aan de slimste kaart ter wereld

5 handige programma’s voor online samenwerken

Online samenwerken kan voor problemen zorgen: miscommunicaties ontstaan vrij snel. Met deze tools gaat samenwerken beter.

Online11.10.2024

5 handige programma’s voor online samenwerken

Logitech MX Creative Console: gemaakt voor alle digital content creators

Logitech heeft onlangs de MX Creative Console aangekondigd: een nieuwe productcategorie in het portfolio van Logitech die is gericht op alle digitale creators. Het is een device waarmee zij zich volledig kunnen focussen op hun artistieke ambities.

Gadgets10.10.2024

Logitech MX Creative Console: gemaakt voor alle digital content creators