Codebash

Omschrijving

De derde activiteit die ik in de kijker wil zetten is Codebash, georganiseerd door Info Support. Codebash is een programmeerwedstrijd die open staat voor alle hogeschoolstudenten in België. Tijdens de programmeerwedstrijd was er tijd voorzien om te netwerken, te eten en natuurlijk de programmeeruitdaging aan te gaan.

De wedstrijd draaide om het oplossen van een complex algoritmisch probleem omtrent het opslaan en uitzenden van goederen in een warenhuis dat bemand wordt door robots. De deelnemers moesten een programma schrijven dat, op basis van een inputbestand, simuleerde welke acties de robots moesten uitvoeren om zoveel mogelijk bestellingen af te handelen. Deze simulatie moest worden omgezet naar een tekstbestand dat alle acties van elke robot beschreef. Op basis van het outputbestand werd de score berekend op hoe efficiënt de simulatie was. In totaal waren er zeven verschillende inputbestanden met elk verschillende gegevens, waaronder de lengte van de simulatie, de bestellingen en de locatie van de verschillende robots bij de start van de simulatie. Elk van deze bestanden had zijn eigen uitdagingen en moeilijkheden.

Er namen in totaal 40 studenten deel aan de wedstrijd, elk in teams van één tot vier personen. Aan het einde van de avond werden de winnaars bekend gemaakt, die elk twee tickets kregen voor het Nerdland Festival in Nederland.

Het doel van deze programmeerwedstrijd was om studenten de kans te geven om zichzelf te bewijzen en een idee te geven van wat voor algoritmische problemen zich kunnen voordoen in een realistisch scenario.

Zelf heb ik ervoor gekozen om deel te nemen aan deze activiteit omdat ik nog nooit had deelgenomen aan een echte programmeerwedstrijd. Het gaf me ook de kans om samen te werken met twee andere studenten van de PXL, Brecht Maes en Yu Hang Hu.

Mijn persoonlijke doel was om ervaring op te doen met realistische scenario's die ik later in het werkveld zou kunnen tegenkomen, om zo te weten hoe deze problemen in teamverband opgelost kunnen worden. Natuurlijk deden ik en mijn team ook mee om, hopelijk, de wedstrijd te winnen.

Kern

Bij aankomst op het kantoor van Info Support werden we begroet door de verschillende organisatoren, waarna we de tijd kregen om een plek te vinden waar we wilden gaan zitten. Door het kantoor heen waren verschillende plekken waar we onze laptops en andere benodigdheden konden neerzetten en gereed konden maken.

codebash banner afbeelding werkplekken

Na enige tijd waren alle deelnemers aanwezig en werd ons gevraagd om te verzamelen voor een presentatie over hoe de avond zou verlopen. Tijdens deze presentatie kregen we uitleg over wat er van ons werd verwacht en wat de opdracht precies inhield. Op dit moment leerden we ook dat de opdracht gebaseerd was op enkele van hun klanten waar ze software voor hebben geschreven. Er werd ons ook verteld dat het gebruik van AI-tools zoals ChatGPT en CoPilot was toegestaan, en zelfs werd aangemoedigd.

Verder kregen we ook een inlogcode voor een website. Op deze website stonden zowel de opdracht en de inputbestanden als de manier om onze oplossingen in te dienen. De inhoud van deze website was echter gesloten tot 14:00 uur, het tijdstip waarop de opdracht officieel van start ging.

afbeelding inloggegevens afbeelding codebash website na login

Nadat de opdracht beschikbaar was, kreeg ieder team ook enkele fysieke kopieën van de opdrachtbundel, zodat ze deze konden gebruiken tijdens het programmeren. De bundel telde in totaal 12 pagina's, inclusief de voorpagina.

afbeelding codebash bundel afbeelding codebash bundel p5 afbeelding codebash bundel p4

Zodra iedereen van ons team de opdracht grondig had doorgenomen, hadden we een korte vergadering om te controleren of iedereen de opdracht goed had begrepen. Na deze bespreking besloten we om eerst een programmeertaal te kiezen en een methode om data uit de inputbestanden te halen. Als programmeertaal kozen we Java omdat deze taal een eenvoudige manier heeft om zowel bestanden uit te lezen als op te slaan. Vervolgens lieten we een simpele file-parser maken door ChatGPT. Deze file-parser was natuurlijk nog niet perfect, dus hebben we deze samen nog aangepast en uitgebreid.

Om de ontwikkeling gemakkelijker te maken, hadden we voorafgaand aan de opdracht al een git-repository gemaakt, zodat we gemakkelijk code met elkaar konden delen.

screenshot van repository voor de codebash opgave

Nadat de parser gereed was, besloten we om samen te werken aan de basisversie van onze oplossing door middel van peer-programming. Tijdens deze fase van de wedstrijd kwamen er enkele onduidelijkheden naar boven, maar gelukkig stonden de organisatoren altijd klaar om onze vragen te beantwoorden. Door deze vertragingen waren we net op tijd klaar met onze oplossing tegen de deadline van 18:00 uur. De oplossing die we hadden gemaakt, was echter wel volledig werkend en hield met bijna alles rekening.

Om 18:00 uur was de opdracht voltooid en kregen we tijd om te genieten van welverdiende pizza. Daarna kregen we ook de kans om te praten met de andere teams. Hier leerden we dat veel teams geen oplossing hadden kunnen maken tegen de deadline.

Nadat iedereen klaar was met eten, werden de top 3 teams aangekondigd, waar mijn team, genaamd "Code Simps", de tweede plaats wist te bemachtigen.

afbeelding eindscores codebash

Zoals te zien is, was er een grote discrepantie tussen de scores van de eerste, tweede en derde plaats. Dit kwam doordat het team van 'Git Bashers' een maas in de wet had gevonden in hoe de scores werden berekend, waardoor ze zonder het probleem op te lossen toch veel punten konden scoren. Natuurlijk was dit niet in strijd met de regels, en kregen ze alsnog de eerste plaats, maar veel teams vonden dat het niet in de geest van de opdracht paste.

Reflectie

Ondanks dat mijn team en ik niet hebben gewonnen, ben ik toch zeer tevreden dat ik heb deelgenomen aan deze programmeerwedstrijd. De wedstrijden waar ik tot nu toe aan heb deelgenomen lagen vaak buiten mijn comfortzone, maar Codebash was iets wat perfect aansloot op mijn kennis. Het feit dat we ons eigen team konden samenstellen en dus konden samenwerken met mensen die we al kenden, was een duidelijk pluspunt.

Het feit dat Codebash het gebruik van GPT en CoPilot aanmoedigde, vond ik zeer fijn, aangezien het gebruik van AI-tools nu eenmaal steeds meer bij softwareontwikkeling hoort. Ik denk echter wel dat hierdoor het probleem voor velen te complex werd, wat ook wel te zien was aan de eindresultaten.

Tijdens het programmeren hadden ik en mijn team natuurlijk wel enkele problemen ondervonden, maar deze kwamen vooral door misverstanden rondom de opdracht. Gelukkig zijn we hier altijd zeer snel overheen gekomen door zowel onderling te communiceren als vragen te stellen aan de organisatoren.

Een van de dingen die ik minder vond aan de hackathon was natuurlijk het eindresultaat. Hoewel ik heel blij ben dat we op de tweede plek zijn gekomen, kan ik toch niet helpen om mezelf af te vragen hoe het zou zijn gelopen als het team dat eerste werd geen maas in de wet had gebruikt.

Doorheen deze wedstrijd heb ik zeker mijn doelen bereikt die ik voor mezelf had opgesteld. Niet alleen heb ik mogen werken aan een oefening die effectief voorkomt in het werkveld, maar ik heb ook geleerd hoe het is om samen na te denken over een moeilijk probleem. In de opleiding hebben we altijd geleerd dat peer-programming goed is voor dit soort problemen, maar om er effectief eens gebruik van te maken is een heel andere ervaring waar ik zeker iets aan ga hebben in de toekomst.

De manier waarop mijn team en ik aan peer-programming deden, was ook iets dat de organisatoren opviel. Ze vonden de manier waarop we naar elkaars commentaar luisterden en elkaar controle gaven zeer bewonderenswaardig, wat ze ons ook hebben gezegd na afloop van het evenement.

Ik heb ervoor gekozen om deze activiteit op te nemen in mijn portfolio omdat het aantoont dat ik graag mezelf uitdaag en mijn eigen vaardigheden verbeter. Het laat ook zien dat ik kan samenwerken met andere ontwikkelaars, zelfs als het ontwikkelaars zijn die ik persoonlijk ken.

Deze hele ervaring heeft mijn vertrouwen in mijn programmeervaardigheden versterkt, en de samenwerking met vertrouwde teamgenoten maakte het proces niet alleen aangenaam, maar ook zeer leerzaam.