Is programmeren echt zo moeilijk dan?

Scratch editor met bewegende katSinds begin dit jaar probeer ik als newbie coach te helpen bij CoderDojo Genk. Ik moet eerlijk zijn, ik ken nog niet écht veel van Scratch en nog veel minder van micro:bit, maar ik ga ervan uit dat dat wel zal komen. Soit, afgelopen weekend vertelde de moeder van 2 deelnemers me dat programmeren haar zo moeilijk lijkt. In de chaos van het moment heb ik daar amper op geantwoord, maar die opmerking heeft de schoolmeester in mij toch een beetje wakker gehouden. Want is programmeren echt zo moeilijk? Als een “leek” het werk van een échte developer op het scherm ziet, lijkt dat ongetwijfeld ondoorgrondelijke tekst met hier en daar enkele herkenbare Engelse woorden waar verder kop noch staart aan te krijgen is. Het succes van Scratch is dat het die letterspaghetti verbergt achter mooi gekleurde blokjes die logisch in elkaar kunnen worden geklikt om zo de basisconcepten van het programmeren spelenderwijze aan te leren. Maar zitten er achter die Scratch-blokjes eigenlijk geen eenvoudige ideeën die iedereen zou kunnen begrijpen?

Ik probeer even met een denkbeeldig spelletje waar je een vliegtuigje moet besturen;

  • in elk computerprogramma (software) zitten er acties; toon een vliegtuigje en een achtergrond, … (dus dikwijls “uitvoer” naar de gebruiker van de software)
  • er is logica om de gebruiker toe te laten om die actie te beïnvloeden (de invoer of input), bijvoorbeeld het pijltje naar boven of beneden om het vliegtuigje te besturen
  • die invoer wordt getoetst aan “als … dan” voorwaarden (testen): dalen of stijgen is afhankelijk van welk pijltje wordt ingedrukt, maar een voorwaarde kan even goed controleren of de positie van het vliegtuigje te laag vliegt waarop het crasht of landt (een nieuw actie dus)
  • software zal dikwijls informatie bijhouden (en soms tonen) in “variabelen“, bv. de huidige positie van het vliegtuigje of een score of het aantal levens dat je nog resten in een spel
  • als scores worden bijgehouden kan om de high scores te tonen een lus gebruikt worden. zo een “loop” kan een vast aantal keer doorlopen worden (zoals een top 5 om de eerste vijf resultaten uit een al geordende lijst), maar een lus kan ook doorlopen worden tot er aan een voorwaarde voldaan is (bijvoorbeeld als je een oneindig aantal pogingen krijgt om woord te raden, in dat geval blijf je in die lus tot je het woord geraden hebt).

Is dat echt alles? Nee, er komt natuurlijk meer bij software development kijken; het opvangen van fouten, de code veilig maken voor hackers, de code leesbaar en onderhoudbaar houden voor collega’s zorgen voor technische documentatie, zorgen voor automatische testen en het communiceren met databases of andere software om maar een paar zaken te noemen. Vanzelfsprekend bevat zowat elk stukje software honderden of duizenden acties, voorwaarden, loops, variabelen en databank velden, maar bovenstaande concepten geven wel een beeld met welke betrekkelijk eenvoudige basisblokken software wordt geschreven.

Programmeren is in de eerste plaats dan ook volgens een bepaalde logica nadenken. De juiste vragen stellen en proberen, falen, je afvragen waarom het niet werkt en met dat nieuwe inzicht opnieuw proberen tot het werkt. Dat heb ik dikwijls ook geantwoord op de Coderdojo aan de Scratchende kinderen/ tieners; “Wat denk je zelf dat er moet gebeuren?” en “OK, probeer het eens en kijk of het werkt”. En zo leer ik ook beetje bij beetje Scratchen 🙂