Als je tot op dit punt van het boek gestaag hebt doorgewerkt, kom je vanaf nu opgaves en problemen tegen waarbij je niet zeker bent over hoe je ze op moet lossen. Ik gaf een voorbeeld van een dergelijk probleem hierboven (het vinden van de grootste, de kleinste, en het aantal deelbaar door 3 van tien getallen), en de oplossing die ik bedacht. Een dergelijke oplossing wordt een algoritme genoemd. Maar hoe ontwerp je zo een algoritme?

Ik zie vaak dat studenten code aan het typen zijn zonder dat ze weten wat ze doen of wat ze willen doen. Ze proberen een opgave op te lossen maar weten niet hoe, en dus gaan ze maar typen. Je zult je wel realiseren dat dat geen effectieve manier is om oplossingen te maken (hoewel er op zich niks is tegen een beetje experimenteren).

Wat je in dat soort situaties moet doen is een stapje terugzetten, het toetsenbord met rust laten, en denken: “Hoe zou ik dit als mens aanpakken?” Probeer op te schrijven wat je zou doen als je het probleem met de hand zou aanpakken. Het maakt niet uit of het een saaie taak is die je nooit met de hand zou willen doen – je hebt een computer om saaie dingen voor je te doen.

Als je bedacht hebt wat je zou willen doen, bedenk dat hoe je dat in code kunt opschrijven. Want in principe is dat wat je de computer moet vertellen: de stappen die een mens zou kunnen nemen om de oplossing te bereiken. Als je geen manier kunt vinden waarmee een mens het probleem zou oplossen, dan zul je zeker niet in staat zijn een computer te vertellen hoe het probleem opgelost moet worden.