De Programmeur

19-03-2018

Door: Bart Barnard, Hanzehogeschool Groningen

Het veld waar de programmeur zich in beweegt is nogal divers en instabiel. Niet alleen is er een groot aantal programmeertalen voor handen (we noemen bijvoorbeeld Java, C#, JavaScript, Python, PHP, Ruby), maar de verschillende versies van deze talen volgen elkaar in razend tempo op. En dan kan er ook nog gekozen worden tussen een keur aan frameworks (wat bijvoorbeeld te denken van JQuery, React, Vue, Angular – om alleen maar de vier grootste JavaScript frameworks te noemen). Hoe leid je mensen op om zich in een dergelijk volatiele omgeving te kunnen handhaven? Hoe zorg je ervoor dat datgene wat ze tijdens een opleiding hebben geleerd niet door de werkelijkheid achterhaald is? Bart Barnard, hoofddocent van de leergang Programmeren en hogeschooldocent Software Engineering aan de Hanzehogeschool Groningen, legt hieronder uit.  

De opleiding

Om dit probleem te adresseren bewandel ik tijdens de opleiding altijd twee paden. Allereerst breng ik studenten de fundamentele concepten bij die ten grondslag liggen aan al deze programmeertalen en die, ondanks de razendsnelle ontwikkelingen binnen het domein, sinds de jaren tachtig en negentig, slechts marginaal zijn uitgebreid of aangepast. Op een voldoende abstract niveau zijn de meeste programmeertalen goed met elkaar te vergelijken, en het is mijn doel de studenten op dit niveau te brengen. Programmeren appelleert meer aan een bepaalde manier van denken dan aan kennis van specifieke talen of tools, en het blijkt telkens weer dat mensen die zich deze manier van denken eigen hebben gemaakt behoorlijk flexibel zijn ten aanzien van nog onbekende of nieuwe technieken.

Programmeren appelleert meer aan een bepaalde manier van denken dan aan kennis van specifieke talen of tools

Daarnaast stimuleer ik de kritische en onderzoekende houding van studenten. Ik motiveer ze om niet tevreden te zijn met een stukje werkende programmacode, maar om te doorgronden waaròm het werkt en op welke manier ze dit kunnen aanpassen en toepassen in hun eigen situatie; dat iets werkt is triviaal, maar hoe werkt het en het hoe zou je op een andere manier hetzelfde kunnen bereiken? Als professional in een gebied dat continu in beweging is, moet je altijd open staan voor nieuwe ideeën en inzichten en moet je, omgekeerd, eveneens bereid zijn om je kennis met anderen te delen. Programmeren is een activiteit die je fundamenteel met anderen doet: met collega's binnen je team, maar ook met die onbekende helpende hand op Stackoverflow.


De programmeur van de toekomst

Deze twee eigenschappen – de intellectuele flexibiliteit en het gebruiken en creëren van gedeelde kennis – neemt in de toekomst alleen maar toe. De problemen of vraagstukken waar programmeurs heden ten dage mee geconfronteerd worden zijn te complex om binnen een realistisch tijdsbestek louter door het kleine team van ontwikkelaars op te kunnen lossen – hulp van buiten is altijd nodig. Daarnaast zijn de API's van de diverse grote programmeertalen dusdanig uitgebreid geworden dat het niet haalbaar (of zelfs maar wenselijk) is voor iemand om die volledig te beheersen. En de noodzaak daarvan verdwijnt ook steeds meer: documentatie is altijd voor handen en er zijn altijd mensen te vinden die een vergelijkbaar probleem als jij al hebben opgelost en hier iets over hebben geschreven.

Dat alles laat onverlet dat een gedegen kennis van de fundamenten van het programmeren noodzakelijk is en zal blijven. Je kunt immers al je vragen wel aan je teamgenoten of aan Stackoverflow delegeren, maar dan moet je nog altijd wel een besef hebben van wát je moet vragen, en of het antwoord dat wordt gegeven wel écht goed past binnen jouw situatie – een besef dat je niet krijgt door alleen maar stukjes code te kopiëren, maar alleen maar door zélf dingen uit te zoeken, te proberen en tegen problemen aan te lopen. Ondanks de gedeelde kennis en het teamwork blijft het programmeren om die reden een creatief proces, wat vraagt om een sterke intrinsieke motivatie om dingen uit te proberen, om bij te blijven en om te willen snappen hoe het werkt.

Het is bekend dat software die niet wordt gebruikt of wordt onderhouden gedoemd is te verdwijnen. Iets vergelijkbaars geldt voor de programmeur: wanneer die zijn of haar kennis onvoldoende gebruikt, uitbreidt of onderhoudt ontstaat er heel snel een achterstand die maar met moeite, of helemaal niet, weggewerkt kan worden.


Bart Barnard


Hoofddocent Programmeren bij de IT Academy & hogeschooldocent Software Engineering bij de Hanzehogeschool
Hoofddocent Programmeren bij de IT Academy & hogeschooldocent Software Engineering bij de Hanzehogeschool