1

Wat is (doet) een programmeur

De laatste tijd zijn er klanten die zich afvragen waarom ze 50 euro per maand moeten betalen. Waarom ze dit betalen zelfs al passen ze zelf de teksten aan. Het simpele antwoord is natuurlijk dat dit "vastrecht" is, net als bij de telefoon, net als bij een Energie leverancier.

Daarnaast wordt er natuurlijk betaald voor doorontwikkeling van het systeem, maar is dat nodig en hoeveel van die 50 euro gaat daar dan naartoe? Om te beginnen met de laatste vraag: ongeveer 5 euro. De eerste vraag, is dat dan nodig, is wat moeilijker uit te leggen. In dit artikel zal ik vertellen waarom daarvoor wordt betaald en of het genoeg is, of misschien te veel, of te weinig.

De wereld is software

De wereld zit vol met software. Iedereen weet dit natuurlijk, maar niet iedereen begrijpt dit. Er zit natuurlijk software in je computer, in je IPhone, in het horloge om je pols, maar ook in een oplaadbare batterij [1] zit een beetje software die bijhoudt of de batterij vol is.

Zou je in een auto stappen als ik de software had geschreven

In een ( moderne ) auto zitten 100.000.000 [2] ( 100 miljoen ) regels code. Dat is erg veel. Het lijkt me dan ook dat het belangrijk is of een programmeur kan vertellen of het werkt of niet. Of laat ik het anders zeggen, zou je in een auto stappen als ik de software had geschreven?

En als het antwoord ja is, hoeveel zou je willen betalen voor de zekerheid dat het werkt. Eén euro per rit, twee, vijftig misschien?

Waarom kost het maken van software zoveel tijd

Een huis bouwen is simpel, zeker tegenwoordig waarbij huizen soms in de fabriek worden gemaakt en alleen maar in elkaar hoeven te worden gezet. Maar stel nu dat je een kelder onder je huis wilt. Dan is dat opeens een stuk moeilijker. Dit geldt voor de meeste dingen, dat aanpassingen veel meer tijd kosten dan het produceren.

Bij software is dit precies andersom, het schrijven van software kost veel tijd. Het aanpassen ( als de software goed geschreven is ) is gelukkig weer simpeler. Maar waarom is dat eigenlijk zo. Zou het niet beter zijn dat software schrijven ook weinig tijd zou kosten. Kun je het niet gewoon downloaden en installeren zoals een programma.

Toyota

Spaghetti code

In september 2007 [3] verlieten twee vrouwen, Jean Bookout en haar passagier Barbara Schwarz de snelweg Highway 69 in Oklahoma. Ze reden in een Toyota Camry toen deze opeens steeds sneller begon te rijden. Nadat Jean merkte dat de rem niet meer werkte, trok ze meteen aan de handrem. De banden lieten een 50 meter lang remspoor achter op de weg. De auto bleef echter gewoon doorgaan en kwam uiteindelijk beneden aan de afrit tot stilstand tegen een aarden wal. De vrouwen waren allebei zwaargewond. Barbara overleed aan haar verwondingen en Jean spendeerde vijf maanden in revalidatie.

Toyota haalde tussen 2009 en 2011 [4] 7,5 miljoen auto’s terug. Er werd uitgebreid onderzoek gedaan door de National Highway Traffic Safety Administration ( NHTSA ) en NASA ( die van de raketten ). Beide organisaties konden geen duidelijke reden ontdekken en men schreef de ongelukken toe aan, auto matten die er voor konden zorgen dat het gaspedaal klem kwam te zitten of mensen die zich vergiste in de rem en het gaspedaal.

Maar het geval van Jean en Barbara was anders, er stond een 50 meter lang remspoor op de weg. Als Jean zich had vergist in de pedalen dan was dit niet het geval geweest. Er werd besloten om een onderzoek te starten naar de software van Toyota. Twee verschillende teams met in totaal acht experts bekeken in een afgesloten hotel kamer twintig maanden lang de miljoenen regels code van Toyota.

De eensluidende conclusie was "Spaghetti code". We hebben het hier over een miljarden bedrijf, met honderden programmeurs. En mocht je je afvragen wat "Spaghetti code" betekent, welnu, het betekent ongeveer precies wat het beschrijft, een grote puinhoop waar geen touw meer aan vast te knopen valt.

Mensen mensen

In ieder geval 1, en mogelijk 89 mensen kwamen om het leven. Het kostte Toyota Miljarden in schade vergoedingen en waarschijnlijk nog een keer Miljarden in niet verkochte auto’s door het verlies van reputatie.

Het is te simpel om te zeggen dat 89 mensen zijn omgekomen door de software van Toyota. In sommige gevallen zal het door een vastzittend gaspedaal zijn gekomen, of door het indrukken van het verkeerde pedaal. Laten we eerlijk zijn, het grootste probleem van auto’s is niet de software, het grootste probleem van auto’s is de mens die achter het stuur zit.

Maar is het belangrijk of je kunt zeggen dat de software in een auto werkt, of het doet wat je verwacht en misschien nog wel belangrijker, dat het NIET doet wat je NIET verwacht.

Knight Capital

Goede zaken

Knight Capital [5] was een zo genaamde "flash" handelaar. Hiervoor hadden ze een software programma die aandelen in kleine beetjes kocht totdat het streef bedrag was gehaald en dan werden de aandelen weer verkocht.

In juli 2012 installeerden ze nieuwe software op 7 van de 8 servers. Op de 8ste server stond nog de oude software maar deze hadden ze uitgezet door middel van een variabele. Je moet het zien als een schakelaar.

De nieuwe software gebruikte deze variabele echter voor iets anders. Hierdoor werd per abuis de schakelaar weer op aan gezet en de oude software geactiveerd. Deze oude software begon vervolgens kleine hoeveelheden aandelen te kopen. Maar omdat er geen streefbedrag stond ingesteld bleef de oude software hier eindeloos mee doorgaan.

Een computer is heel snel. Een Intel Core i7 kan 238 miljoen instructie per seconde uitvoeren. Nu betekent elke instructie niet dat er een aandeel gekocht wordt, maar zelfs als je 1000 instructies nodig hebt om een aandeel te kopen, dan nog hebben we het over honderdduizenden aandelen per seconde.

Verlies

De programmeurs wisten dat er iets niet klopte, ze wisten alleen niet wat en het duurde 45 minuten voordat ze het probleem hadden gevonden. In die 45 minuten had de software van Knight Capital toegezegd om 397 miljoen [6] aandelen te kopen. Het totale verlies was 440 miljoen dollar en het bedrijf fuseerde in december 2012 om aan de ondergang te ontkomen.

Stel je gaat vanavond vroeg naar bed, je programmeur heeft je verteld dat hij vannacht een update zal uitvoeren. Je hebt een goed lopend bedrijf er staan miljoenen op de bankrekening, je hebt een marktaandeel van 17%, het leven is goed.

En de volgende morgen heb je geen bedrijf meer.

Is het belangrijk dat een programmeur kan vertellen of het werkt of niet en hoeveel tijd is dat je waard?

Edsgar Wybe Dijkstra [7]

Edsgar Wybe Dijkstra ( 1930 – 2002 ) studeerde in 1956 af aan de Leidse Universiteit met een Bachelor in Wiskunde en een Masters in Theoretische Natuurkunde ( een slimme man ).

Hij leerde programmeren in Engeland ( Cambridge ), nadat zijn vader een advertentie voor een cursus programmeren had gezien. Hiermee werd Edsgar de eerste Programmeur in Nederland. Het vak was zo nieuw dat toen hij trouwde en zijn beroep moest opgeven, de ambtenaar van de Burgerlijke stand het beroep programmeur niet accepteerde.

Edsgar ging werken in Amsterdam. Daar hadden ze een paar jaar eerder de eerste Nederlandse Computer ARRA [8] ( Automatische Relais Rekenmachine Amsterdam. ) gebouwd.

Een programmeur

Je moet je voorstellen wat het vak van programmeur in hield.

  1. Als je iets wilde programmeren dan moest je eigenlijk eerst een computer bouwen [9]
  2. Er waren geen harde schijven, werkgeheugen kon je met het blote oog zien
  3. Programmeren ging met pen en papier
  4. Dat kwam goed uit, er waren toch geen toetsenborden of beeldschermen.

Een goede technicus kon aan de lampjes zien waar in het geheugen een probleem was. Het vak programmeur bestond niet, de programmeertalen kon je op 1 hand tellen, de totale hoeveelheid programmeurs in de wereld kon je op een paar handen tellen.

In Engeland in de jaren zestig was een programmeur

Tot 1984 was de verhouding man-vrouw voor programmeurs vergelijkbaar. Met de introductie van de PC veranderde dit. De marketing was gericht op ( blanke ) jongens en het aandeel vrouwen nam spectaculair af.

Waarheid

Toen Edsgar moest kiezen tussen Programmeur en Theoretische Natuurkunde besloot hij te kiezen voor Programmeur (slimme man) om zo een bijdrage te kunnen leveren aan het nog in ontwikkeling zijnde vak.

Edsgar zag programmeren als een vorm van Wiskunde en in de Wiskunde kun je over zaken zeggen of ze waar of niet waar zijn, dit is anders dan bijvoorbeeld in de Natuurkunde waar je alleen kunt zeggen of iets NIET waar is. Dit heet in de wetenschap falsifieerbaarheid [10] .

"Een theorie is falsifieerbaar als het mogelijk is een experiment uit te voeren, waarvoor geldt dat voorafgaand aan het uitvoeren van het experiment exact aan te geven valt, bij welke uitkomst van het experiment er aanleiding zou bestaan om de geldigheid van de theorie te verwerpen [11] "

En de regels zijn streng, als er één baksteen is die omhoog valt dan klopt de zwaartekracht theorie niet. Als er één vogel is die een konijn uitbroedt dan klopt de evolutie theorie niet. Je bewijst niet of iets waar is, je bewijst dat alle dingen die het NIET zijn, NIET kloppen. Vandaar dat wetenschappers nooit iets zeker weten. Er is altijd nog wel een test te verzinnen die aan toont dat het niet klopt.

Gestructuureerd programmeren

Om toch aan te kunnen tonen of een programma waar of niet waar is ontwikkelde Edsgar een 3-tal instructies waaruit een software programma moest zijn opgebouwd en dit noemen we tegenwoordig gestructureerd programmeren [12]

1. Opeenvolging

Het resultaat van de ene instructie is de begin waarde voor de volgende instructie.

Deze instructies ( functies ) voeren een kleine taak uit ( 1 om precies te zijn ). Wanneer je van alle instructies kunt zeggen dat ze waar zijn, en wanneer deze instructies een ononderbroken keten vormen, dan zou je kunnen zeggen dat het hele programma waar is.

2. Selectie

Waarschijnlijk de meest bekende in het programmeren. Als dit dan dat, anders dat.

if n == 1
  return "Je bent nummer één!"
else
  return "TILT"

3. Herhaling

Een herhaling duurt zolang het start criterium waar is en stopt wanneer het niet meer waar is. Deze herhaling zal net zolang doorgaan totdat het getal n niet meer kleiner is dan 10 waarnaar het nieuwe getal n terug zal geven.

while n != 10
  n = n + 1

Elk van deze drie elementen heeft een ingang en één uitgang. Wanneer je dit zou onderbreken door een 2de uitgang dan kun je niets meer zeggen over de waarheid van het programma.

Conclusie

doet onze software niet, wat het niet moet doen

Wanneer je het hele programma opbouwt uit deze 3 structuren kun je zeggen of het waar of niet waar is en of het doet wat het moet doen en vooral NIET doet wat het NIET moet doen.

In dit laatste stuk zit hem de kneep, want helaas voor Edsgar lijkt programmeren meer op Natuurkunde dan op Wiskunde. Er zijn talloze manieren waarop iets mis kan gaan en kosmische straling is daar zelfs één van en dat betekent om een goed software programma te maken, je bij elke functie de volgende stappen moet doorlopen

  1. Definieer vooraf duidelijke waar en niet waar criteria
  2. Formuleer vragen voor elke van deze criteria om deze te testen

Dit kan door middel van Test Driven Development [13] ( TDD ) en dat gaat in 3 stappen

  1. Schrijf één falende test.
  2. Schrijf de simpelste hoeveelheid code om de test te laten slagen
  3. Vereenvoudig de code

Dit, net als de wetenschappelijke methode is minutieus werk. Je begint met het uitsluiten van alle dingen die NIET moeten gebeuren en zodra je bent aangekomen bij wat er wél moet gebeuren helpen de testen om te zorgen dat wat NIET moet gebeuren ook NIET gebeurd.

Zou je nú in een auto stappen als ik de software had geschreven

Ik zou in de auto stappen waarvoor ik de software had geschreven.

waarom we geen plugins gebruiken

Elke 5 jaar verdubbeld de hoeveelheid programmeurs in de wereld. Dit betekent dat op elk willekeurig moment de HELFT van alle programmeurs minder dan 5 jaar ervaring heeft.

Toyota is een miljarden bedrijf met honderden programmeurs. Vele daarvan met meer ervaring dan ik, met meer kennis dan mij en tóch "Spaghetti Code".

Omdat het veel belangrijker is dat software NIET doet wat het NIET moet doen, dan dat het wel doet wat het wel moet doen. Je kunt rustig gaan slapen met het besef dat je nog geen export kunt maken van je kwartaal cijfers. Kun je ook rustig slapen als die software elke seconde 100.000 x 1 cent overmaakt.

is 50 euro per maand genoeg

Hoeveel is het je waard dat jouw auto werkt. Hoeveel is het je waard dat de software niet 100.000 keer per seconde iets doet wat het eigenlijk zou moeten laten. Vertel mij maar of dat 50 euro per maand waard is.

Contact met één van onze Pro's?   TP Project bespreken


 
 

Privacy Waarbog

DDMA

8,4
klanten vertellen
38 Beoordelingen
zelf beoordelen bekijk beoordelingen

Beoordeling door klanten :
8.4/10 - 38 beoordelingen