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

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

​Prometheus biedt een kijkje in de wereld van grote developers

Er zijn heel veel stereotyperingen van ontwikkelaars, maar natuurlijk klopt dat zeker niet allemaal. De nieuwe film Prometheus is gearriveerd om je beeld weer even wat te veranderen want hierin komen diverse grote ontwik...

Technology24.10.2022

​Prometheus biedt een kijkje in de wereld van grote developers

​Online marketingbureau Red Banana lanceert dé nieuwe standaard voor webshops

Roosendaals online marketingbureau Red Banana is gestart met een nieuwe service: Smooothie. Met deze service voorzien zij klanten op een efficiënte en snelle manier van 100% betrouwbare, snelle en gebruiksvriendelijke w...

Marketing06.09.2022

​Online marketingbureau Red Banana lanceert dé nieuwe standaard voor webshops

Verder lezen over Software

Bescherm jij je online identiteit wel genoeg?

We kennen allemaal wel de verhalen van mensen wiens Instagram-foto’s worden gestolen om een catfish-account aan te maken, of mensen, bedrijven en merken bij wie hackers toegang hebben gekregen tot een van de social media accounts.

Cybercrime15.04.2024

Bescherm jij je online identiteit wel genoeg?

Dit is Google Vids – de nieuwe Workspace app

Google Cloud heeft vandaag, tijdens het Google Cloud Next event in Las Vegas, nieuwe innovaties en verbeteringen aangekondigd voor Google Workspace.

Video10.04.2024

Dit is Google Vids – de nieuwe Workspace app

​Hoe gepersonaliseerde software innovatie aandrijft

In een wereld waar technologie razendsnel evolueert en bedrijfsprocessen steeds complexer worden, is de behoefte aan softwareoplossingen die naadloos aansluiten op specifieke bedrijfsbehoeften urgenter dan ooit. Maatwerk...

Technology28.03.2024

​Hoe gepersonaliseerde software innovatie aandrijft

​OBI4wan, Spotler en Squeezely samen verder als één organisatie

OBI4wan, Spotler Nederland en Squeezely integreren hun operationele bedrijfsvoering en gaan verder als één organisatie onder de naam Spotler NL. Alle drie de bedrijven zijn al geruime tijd onderdeel van de Spotler Grou...

Marketing06.03.2024

​OBI4wan, Spotler en Squeezely samen verder als één organisatie

Zo’n 1.000 Xpeng-eigenaren gaan een bètatest doen

Apple en Android brengen bètaversies uit van nieuwe OS-versies, zodat developers alvast aan de slag kunnen hun apps te testen in een nieuw OS, en gebruikers er ook bugs en andere niet helemaal goed werkende functies uit...

Automotive06.03.2024

Zo’n 1.000 Xpeng-eigenaren gaan een bètatest doen

Zou jij gaan rondrijden in een auto met test software?
Een goed kassasysteem: de must voor iedere winkel eigenaar

Als winkel eigenaar ben je ongetwijfeld bekend met het belang van een efficiënt kassasysteem. In dit blog gaan we dieper in op waarom een goed kassasysteem essentieel is voor iedere winkel, en we belichten de voordelen...

DC Business22.02.2024

Een goed kassasysteem: de must voor iedere winkel eigenaar

​4 tips om als ZZP’er professionele facturen te maken

Misschien doe je al een tijdje een job naast je werk, maar begin je daar inmiddels zoveel mee te verdienen dat het tijd is voor een inschrijving bij de KvK. En dat het tijd is voor een herkenbare huisstijl, die je dan we...

DC Business14.02.2024

​4 tips om als ZZP’er professionele facturen te maken

Tijdmachine: LimeWire had niks met citrusvruchten te maken

Vroeger downloadden heel veel mensen illegaal hun muziek. We hadden het laatst al over Winamp dat je gebruikte om geripte of gedownloade muziek te beluisteren of te branden op je pc, maar hoe kwam je aan die muziek? Lime...

Online12.02.2024

Tijdmachine: LimeWire had niks met citrusvruchten te maken