Programmeren is een kunstvorm. Een docent programmeren is in veel opzichten vergelijkbaar met een tekenleraar.
Veel mensen krijgen tekenlessen op de middelbare school. Een tekenleraar vertelt eerst over materialen: potloden en papier, verschillende kleuren, verschillende hardheden, gummen, inkt, inktpennen, verf, etcetera. De leerlingen maken hun eerste tekeningen en schilderijen op basis van die kennis. De leraar legt technieken uit: het mengen van verf, het creëren van speciale effecten, de combinatie van technieken, het gebruiken van perspectief, etcetera. De leerlingen krijgen opdrachten als “teken een kat,” en de leraar geeft een beoordeling zowel wat betreft het gebruik van materialen als in hoeverre wat door de leerlingen geproduceerd wordt daadwerkelijk lijkt op een kat.
Een docent programmeren heeft vergelijkbare taken. Eerst vertelt hij de studenten over programmeerprincipes, basis taalelementen die in iedere computertaal aanwezig zijn. Hij vertelt hoe die taalelementen gebruikt kunnen worden om eenvoudige programma’s te schrijven. Daarna gaat hij dieper op de taal in, en bespreekt geavanceerde technieken die de studenten kunnen gebruiken om complexere programma’s te maken, en lastige concepten op een eenvoudige manier in programma’s op te nemen. Studenten krijgen opdrachten als “schrijf een programma dat een tekst alfabetiseert,” en ze worden beoordeeld zowel op de mate waarin ze programmeertechnieken beheersen, als in hoeverre hun programma’s in staat zijn de taak uit te voeren.
Een tekenleraar zal stellen dat een student die voor de opdracht “teken een kat” een cirkel met twee driehoekjes erboven en twee puntjes in het midden inlevert weliswaar een kat heeft getekend, maar niet de materiaaltechnieken beheerst. Een student die een prachtige tekening van een boom inlevert is misschien een meester in materiaaltechnieken, maar kan ze niet gebruiken om een taak uit te voeren. En twee studenten die precies dezelfde tekening van een kat inleveren, hebben overduidelijk plagiaat gepleegd. Dat gezegd hebbende, er is niet slechts één acceptabele tekening van een kat. Er zijn vele mogelijke tekeningen van een kat die leerlingen kunnen inleveren om aan te tonen dat ze op weg zijn artiesten te worden.
Op dezelfde wijze wil een docent programmeren die een opdracht geeft, zien dat zijn studenten de kennis die ze hebben opgedaan creatief inzetten om een versie van een programma te creëren dat aan de opdracht voldoet. Studenten die de technieken niet beheersen kunnen de taak niet oplossen, of kunnen slechts een gedeeltelijke oplossing inleveren. Studenten die de technieken wel beheersen kunnen nog steeds niet in staat zijn om wat ze hebben geleerd te combineren op nieuwe, originele manieren om een oplossing te produceren. En twee studenten die exact dezelfde oplossing inleveren, hebben die ergens vandaan gekopieerd en proberen weg te komen met plagiaat.
Programmeren is een kunstvorm, waarvoor je niet alleen technieken moet leren beheersen, maar ook moet leren die technieken op een creatieve manier in te zetten om problemen op te lossen. Het grootste verschil tussen het bouwen van programma’s en het maken van schilderijen is dat je wat betreft schilderen nog kunt debatteren of een plaatje van een bulldog met puntoren volstaat als weergave van een kat, terwijl het bij programmeren veel gemakkelijker is om programma’s te diskwalificeren als oplossing voor een specifiek probleem.
Iedereen weet dat je nooit een goede artiest zult worden als je alleen materialen bestudeert. Je moet met de materialen oefenen, en je vaardigheden trainen door verschillende taken uit te voeren. Voor programmeren geldt precies hetzelfde: je kunt niet leren programmeren zonder een hoop programma’s te schrijven. Programmeren vereist niet alleen kennis, maar ook vaardigheden die door toepassing ontwikkeld worden, en een soort creativiteit die je in staat stelt je vaardigheden uit te breiden en nieuwe taken aan te pakken.
Het ligt voor de hand dat er slechts weinig meester-kunstenaars zijn wiens werk in tentoonstellingen te zien is. Maar we kunnen allemaal tekeningen van een kat maken, en dat volstaat voor wat we dagelijks nodig hebben. Op dezelfde manier zijn slechts weinigen in de wieg gelegd om meester-programmeur te worden, maar dat is voor de meesten onder ons ook niet nodig zolang we maar in staat zijn om de programmeerproblemen op te lossen die we tegenkomen in studie en werk. Maar besef wel dat het niet volstaat om slechts de basistechnieken te beheersen: creativiteit is altijd nodig.