Arjan Lamers, CTO @ First8
Woensdag 1 november 2017 was het zover: de jaarlijkse NLJUG Masters of Java: een fun-progging contest, waarbij plezier en uitdaging hoog in het vaandel staan. In teams van maximaal 2 developers wordt er tegen elkaar gestreden om na 5 rondes de ‘Master of Java’ te kunnen kronen. Elk jaar strijden de beste Java programmeurs van Nederland tegen elkaar om de prestigieuze titel ‘NLJUG Master of Java’. Elk jaar wordt de strijd mooier en spannender. Zou het Team Faalhaas (Tom Wetjens en Remco Siemonsma) lukken om hun titel te prolongeren?
Masters of Java (ook bekend als het officieuze NK Java Programmeren) is een vast onderdeel van de J-Fall pre-conferentie. De editie van dit jaar is voor het eerst internationaal gegaan met de deelname van de Belgische Java community. Een groot deel van de deelnemers had zich al geregistreerd voor de officiële uitnodigingen waren verstuurd. De limiet van het aantal deelnemers was dan ook al vrij snel bereikt. Met de Belgische inbreng waren er ruim 70 deelnemers, verdeeld over ruim 40 teams. Geweldig!
Vanuit het mooie Van der Valk hotel in Veenendaal hebben we de hele middag contact gehad met de deelnemers in België. Alle teams kregen dezelfde opdrachten, dus naast een onderling spannende strijd in de zaal, hebben we er ook een België – Nederland strijd van gemaakt. Na een kort welkomstwoord door Roy Wasse (NLJUG) en Arjan Lamers (CTO bij First8) en uitleg van de spelregels begon de wedstrijd.
First8 was, net als afgelopen edities hoofdsponsor. In de maanden voorafgaand aan de Masters of Java zijn we druk geweest met het bedenken, testen en bijschaven van de opdrachten. Daarnaast werd het tijd de bestaande Masters of Java software eens onder handen te nemen. We hebben de hoofden bij elkaar gestoken, gebrainstormd en de schouders eronder gezet om een compleet nieuw framework te kunnen gebruiken.
Het gezamenlijk meedenken en meewerken aan deze programmeerwedstrijd wordt door mijn First8 collega’s zowel plezierig als leerzaam ervaren. En wat is er nu mooier dan samen tot een mooi succes te komen!
Voortgang
Ieder team was even fanatiek. Vijf rondes lang. Men kreeg per opdracht 30 minuten voor het oplossen ervan. Opdracht 1 was meteen een lastige inkomer. Uiteindelijk heeft alleen team Craftsmen daarbij 431 punten gescoord. Bij de opdrachten erna werd er door iedereen goed gescoord en wisselde de ranglijst continu. Na de vierde opdracht had team EatSleepCodeRepeat (Johan de Jong, Sogeti) een kleine voorsprong opgebouwd. De laatste opdracht was de beslissende en na 5 speelronden en 4 uur funproggen kwam uiteindelijk het winnende team uit de bus. Met slechts 50 seconden voorsprong op de nummer 2 won wederom team Faalhaas, bestaande uit het bevriende duo Tom Wetjes (Freelance) en Remco Siemonsma (CGI). Uiteraard werden deze Masters of Java tijdens de keynote van J-Fall nog eens eervol in het zonnetje gezet! Uit handen van Roy Wasse kregen ze op het podium de felbegeerde prijs uitgereikt: beiden wonnen, naast de felbegeerde beker, een Anki Cozmo Robot.
Nieuw framework
Na 14 jaar gebruik van dezelfde client server software, werd het tijd de Masters of Java competitie in een moderner jasje te steken. De ontwikkelaars bij First8 hebben er voor gekozen om een webapplicatie op basis van Spring Boot te bouwen, in combinatie met een nieuwe UI op basis van HTML5. We hebben de concepten die de afgelopen 14 jaar aan het framework toegevoegd zijn, zoals het gebruik van Git, Maven en JUnit, als primaire pijlers kunnen hergebruiken. Het berekenen van de scores is flexibeler gemaakt, waardoor we komende jaren kunnen experimenteren met andere manieren van scores en statistieken berekenen. Daarnaast hebben de deelnemers nu onder andere syntax highlighting gekregen, een enorm verschil met de kale JTextArea van 14 jaar geleden!
Opdrachten
Je krijgt per opdracht een beknopt Java project waarvan je in regel slechts één bestand kan aanpassen. Door gebruik te maken van een paar meegeleverde tests kun je je oplossing controleren. Als je denkt een juiste oplossing te hebben kun je eenmalig je oplossing indienen. Heb je de opdracht goed, dan krijg je de resterende tijd aan punten plus een bonus. Is de oplossing niet correct, dan krijg je geen punten. Om het de deelnemers niet te makkelijk te maken worden bij sommige opdrachten extra controles uitgevoerd. De tests te slim af zijn werkt dan ook lang niet altijd.
De opdrachten bestaan veelal uit het uitwerken van algoritmen, maar ook het gebruik van minder bekende Java API’s en het oplossen van goed verstopte bugs behoren tot de mogelijkheden. Met name de laatste categorie kan zonder live debugger zeker pittig zijn. Voor Masters of Java 2018 hebben we al nieuwe uitdagende concept opgaven klaarliggen.
Ongeveer de helft van de deelnemers had al eens eerder meegedaan en kwam nu voor revanche. Ook de diverse winnaars van de afgelopen jaren waren van de partij. Elke opdracht begon met een humoristische inleiding: er werd dan ook veel gelachen tijdens deze informele wedstrijd.
Wij kijken terug op een zeer geslaagde dag, met enthousiaste deelnemers, uitdagende opdrachten en een spannende finale. De organisatoren van First8 en NLJUG kijken gezamenlijk terug op een geslaagde competitie. First8 is volgend jaar zeker weer van de partij, jij ook?
De opdrachten van de 2017 editie staan op onze GitHub, zie https://github.com/First8/mastersofjava/tree/assignments/2017.