Advent of Code: Een spannende uitdaging voor programmeurs van alle niveaus
Ken je die adventkalenders in december waarbij je elke dag een deurtje open doet en een chocolaatje mag opeten? Er bestaat een versie die veel uitdagender en leuker is, speciaal voor iedereen die van programmeren houdt. Advent of Code is een jaarlijks IT-evenement dat je programmeervaardigheden op de proef stelt en je creativiteit stimuleert!
Het concept is even simpel als geniaal: elke dag in december, tot aan kerst, krijg je een nieuwe programmeerpuzzel voorgeschoteld.
Michaël Hompus, een Microsoft MVP en ervaren IT-architect bij Info Support, vertelt je alles over zijn ervaringen met Advent of Code. Zijn enthousiasme voor dit jaarlijkse evenement is groot.
De essentie van Advent of Code
“Advent of Code is een adventskalender aan het einde van het jaar, net voor kerst, 25 dagen lang, waarbij elke dag een vakje geopend mag worden,” legt Michaël uit. “Alleen in dit geval zijn die vakjes puzzels en dan specifiek puzzels die je moet oplossen door te programmeren.”
Hij benadrukt dat het niet uitmaakt welke programmeertaal je gebruikt: “Het idee is om gewoon lol te hebben met code. Of je het nou oplost met Excel, Python, .NET, of C++, daar gaat het niet om. Het is 25 dagen lang puzzels oplossen.”
Een uitdaging voor iedereen
Een van de sterke punten van Advent of Code is dat het toegankelijk is voor programmeurs van alle niveaus. Michaël licht toe: “Of je nu twintig jaar ervaring hebt of pas net begint, het leuke is om echt na te denken over wat nou echt het probleem is en wat de mogelijkheden zijn om dit op te lossen.”
Hij voegt eraan toe: “Of jouw code nu meteen optimaal is of superinefficiënt, als je maar tot het juiste antwoord komt, dan maakt het niet uit.”
Een leuke tool voor persoonlijke groei
Deelnemen aan Advent of Code is niet alleen leuk, maar ook heel geschikt om jezelf uit te blijven dagen. “Het is voor veel mensen een vermakelijke manier om met een nieuwe programmeertaal aan de slag te gaan, of om hun huidige kennis van de programmeertaal te verbreden.
Neem bijvoorbeeld het werken met ASCII tekst. In de puzzels van Advent of Code kom je dit vaak tegen. Normaal gesproken zou je in .NET standaardmethodes gebruiken om tekst om te zetten naar getallen. Maar omdat ik weet dat mijn puzzels alleen maar met ASCII werken, kijk ik of ik die code sneller kan maken.”
Michaël legt enthousiast uit hoe hij zijn code heeft geoptimaliseerd: “Ik heb geleerd om allerlei checks uit te schakelen die ik niet nodig heb. Als ik een karakter tegenkom dat 48 is, weet ik dat dat staat voor het getal 0. Door op het karakter de som “min 48” te doen, krijg ik als resultaat het decimale cijfer 0 terug. Dat is veel efficiënter dan gebruik te maken van de default parse code van .NET.”
De jacht op snelheid
Een fascinerend aspect van Advent of Code is de mogelijkheid om je code steeds verder te optimaliseren en sneller te maken. Michaël vertelt: “En om dat echt goed te meten heb ik tegenwoordig Benchmark.NET nodig. Die kan echt in de nanoseconden meten in plaats van in milliseconden. Dit is dezelfde tooling die ook in de industrie wordt gebruikt om de performance van code te analyseren.
Ik heb één puzzel uit Advent of Code genomen en ben die gaan optimaliseren. Mijn applicatie begon met een uitvoeringstijd van 500 milliseconden. Door steeds verbeteringen aan te brengen, eindigde ik uiteindelijk met een uitvoeringstijd van 600 nanoseconden. Dat is bijna duizend keer sneller, puur door code aan te passen!”
Van puzzels naar de praktijk
De vaardigheden die je opdoet bij Advent of Code zijn ook praktisch toepasbaar. Michaël legt uit: “In de echte wereld, vooral in de IoT-omgeving waar heel veel meetdata langskomt, kun je deze kennis gebruiken om je systemen efficiënter te maken.”
Hij voegt toe: “Dit heeft direct invloed op de kosten, omdat je in de cloud vaak betaalt voor de resources die je gebruikt. Hoe efficiënter je code, hoe lager je kosten. Daarnaast heeft het ook een positief effect op duurzaamheid. Minder computergebruik betekent minder energieverbruik en dus minder CO2-uitstoot.”
Voor iedereen die dieper in wil gaan op de optimalisatietechnieken, heeft Michaël zijn ervaringen en benchmarks gedeeld op GitHub. “Ik heb heel veel benchmarks gemaakt om te achterhalen waarom mijn code nou steeds sneller werd. Het geeft inzichten in wat ik moest doen en hoeveel effect het had op CPU en op memory. Kijk vooral op mijn GitHub als je meer wil weten over performance en hoe dit impact maakt.”
De strijd met vakgenoten
Advent of Code heeft ook een competitief element. Er is een wereldwijde leaderboard, maar voor de meeste deelnemers is dit niet haalbaar. Michaël vertelt: “Bij Info Support hebben we een leaderboard waar collega’s aan meedoen. Zo hebben we een binnen Info Support een competitie, waarbij het leuk is om te kijken wie van de collega’s het snelst is.”
Het blijft goed om te benadrukken dat het niet slechts voor professionals is. Michaël benadrukt: “Afgelopen jaar had Info Support ook voor IT-studenten een leaderboard opgericht om een meer gelijk speelveld te hebben met medestudenten. Er waren leuke prijzen te winnen. Dit jaar gaan we dat zeker weer doen.”
Hij voegt toe: “Tijdens Advent of Code praten we onderling via ons interne kanaal Slack over de puzzels. Als iemand klem zit, kun je elkaar zo verder op weg helpen. En wanneer we de oplossing hebben, delen we deze in een apart kanaal om spoilers te voorkomen.
“Verder is er een actieve community op Reddit, waar volop memes worden gedeeld en waar Advent of Code niet ontbreekt. Ook zijn er in Nederland user groups, waarin gezamenlijk aan puzzels wordt gewerkt.”
Zo begin je met Advent of Code
Ben je helemaal enthousiast geworden over Advent of Code? “Je kunt alvast beginnen met oefenen! De puzzels van afgelopen jaar, of zelfs van vijf jaar geleden, zijn nog steeds beschikbaar op adventofcode.com.”
Handige links:
Doe mee aan Advent of Code!
Op 1 december begint Advent of Code 2024, met elke dag een nieuwe puzzel die je programmeer-skills steeds verder op de proef stelt. Doe mee aan ons private leaderboard van Info Support en maak kans op leuke prijzen voor de netste code, de creatiefste oplossing én de snelste inzending!
Ben jij een IT-student die van een uitdaging houdt? Ga in de decembermaand 25 dagen aan de slag met een nieuwe puzzel. Schrijf je hier in.