Ruby heerst in programmeerwedstrijd
De wedstrijd RAD Race 2009/10 was een triomf voor programmeertaal Ruby: de eerste plaats en de twee gedeelde derde plaatsen werden ingenomen door ploegen die hun toepassing bouwden met het framework Ruby on Rails. De winnaar werd een ploeg van het Nederlandse internetbureau Holder.
De wedstrijd vond plaats op 9 en 10 oktober op de Provinciale Hogeschool Limburg (PHL) in Hasselt. De opdracht: het implementeren van een aantal specifieke deliverables. Hierbij werden de deelnemers volledig vrij gelaten in hun keuze van programmeertaal, frameworks, libraries, ontwikkelomgeving, documentatie en hardware. Dat er beduidend minder teams deelnamen dan vorige jaren heeft één reden: de crisis.
Belgische opdracht
De zeven ploegen, waaronder drie uit Nederland en één studententeam van de PHL, kregen zoals gewoonlijk een typisch Belgische opdracht: ze moesten in anderhalve dag een toepassing ontwikkelen die op basis van verkiezingsresultaten de zetelverdeling voor alle politieke partijen en de verkozenen van elke partijlijst berekent: ECASS (Election CAlculation and Simulation System).
De teams moesten de ‘methode D’Hondt’ implementeren. Daarmee wordt in een kiessysteem met evenredige vertegenwoordiging (zoals het Belgische kiessysteem) het aantal beschikbare zetels verdeeld op basis van de voor de deelnemende partijen geldig uitgebrachte stemmen. RAD Race-organisator Ivan Verborgh gaf de teams dan ook een spoedcursus in het Belgische kiessysteem.
De methode D’Hondt moest in een aparte module geprogrammeerd worden met gedocumenteerde invoer en uitvoer. In een andere module moesten de teams de verkozenen van elke partijlijst berekenen op basis van de zetels die de partij toegewezen kreeg. Dit alles moest natuurlijk aan elkaar gelijmd worden in een gebruiksvriendelijke toepassing met invoerschermen om de partijlijsten en stemmen in te geven, en een simulatieomgeving met rapportagemogelijkheden. De toepassing moest meertalig zijn.
Op de tweede dag kregen de teams twee uitbreidingen op de opdracht. Ze moesten de Imperiali-methode die in België gebruikt wordt voor de gemeenteraadsverkiezingen implementeren, en de gebruiker een eenvoudige keuze geven tussen D’Hondt en Imperiali.
Dat bleek niet zo moeilijk, aangezien beide methodes slechts in detail verschillen. De tweede uitbreiding was de mogelijkheid om een simulatie op te slaan in een bestand en te e-mailen naar een andere ECASS-gebruiker, die het bestand dan kan importeren in zijn ECASS-omgeving.
Die namiddag werden alle teams ondervraagd door een jury, die bestond uit Jacques Tiberghien (professor aan de VUB en ULB), Peter Strickx (CTO bij Fedict), Jan Detremmerie (interim manager en consultant), Jan Vanthienen (professor beleidsinformatica aan de KU Leuven), Stijn Bijnens (directeur van LRM) en RAD Race-organisator Ivan Verborgh. De teams moesten hun applicatie demonstreren en tonen hoe ze die ontwikkeld hadden.
Ruby, Ruby, Ruby, Ruby
Vorig jaar was al opvallend dat vier teams Ruby on Rails gebruikten, terwijl het framework in de editie 2007/8 helemaal niet te vinden was. Drie van deze teams geraakten zelfs in de top vier.
Dit jaar is de trend nog opvallender: de drie deelnemende Rails-teams zitten in de top vier, en voor het eerst in de geschiedenis van de RAD Race levert het Rails-framework een winnaar op. "We moeten blijkbaar allemaal Rails leren voor rapid application development", laat jurylid Stijn Bijnens zich ontvallen, en ook enkele .NET-ontwikkelaars bij de deelnemers zeggen dat ze zich in Ruby gaan verdiepen.
Ook jurylid Peter Strickx was onder de indruk van de snelheid waarmee de Ruby-teams hun applicatie konden ontwikkelen. Bij de overheid ziet hij heel wat monsterprojecten passeren en krijgt hij schattingen te horen van honderden mandagen voor projecten die op stapel staan. "Ik vraag me nu af in hoeveel tijd een goed Ruby-team zo’n project kan afwerken."
De winnaars van Holder maakten dan ook grote indruk. De drie Ruby-teams maakten bovendien handig gebruik van codegeneratie en Ruby-bibliotheken, waardoor zij slechts een beperkt aantal lijnen code nodig hadden.
Java schittert door afwezigheid
Grote afwezige dit jaar was Java. In de RAD Race 2006/7 haalden Java-ontwikkelaars nog de eerste drie plaatsen, maar in deze editie was de taal nergens meer te vinden. Naast de drie Ruby-deelnemers deden drie ploegen hun ontwikkeling in .NET met Visual Basic of C#. Eén ploeg databasejongens zwoer bij Oracle-technologie.
De belangrijkste succesfactoren blijken jaar na jaar echter dezelfde te zijn: niet de technologie, maar de menselijke factoren. Allereerst is een goede voorbereiding en opstelling van de ontwikkelomgeving onontbeerlijk. Als je slechts anderhalve dag hebt om een applicatie te ontwikkelen, kan je je niet permitteren om een uur te verliezen aan configuratiewerk of het oplossen van problemen. Zo was er een team waarbij het versiebeheersysteem bestanden opslokte, en ook een ander team verloor veel tijd door technische problemen.
Maar misschien de belangrijkste factor is het team: wie dagelijks samenwerkt, heeft in deze wedstrijd duidelijk een streepje voor. Zo was er een team dat nooit eerder had samengewerkt en ook elk ervaring had met andere tools. Dan moet een van de twee zich natuurlijk aanpassen aan de andere, en zal de samenwerking nooit optimaal zijn. Ervaring met rapid application development kan bovendien ook geen kwaad: van de top vier deden er drie vorig jaar ook al mee met de RAD Race.
Winnaar: Holder
Chiel Wester en Stephan Kaag
Tools: Ruby on Rails, MySQL, Betty (eigen Rails plug-in)
Chiel Wester en Stephan Kaag van het winnende team hebben al wat RAD-ervaring op zak: vorig jaar werden ze derde in de RAD Race en ze konden ook al een derde plaats versieren in de Nederlandse editie. Ze werken in het Nederlandse internetbureau Holder bovendien dagelijks exclusief met Ruby on Rails, dat steeds meer geknipt lijkt voor rapid application development. Net als vorig jaar gebruikten ze nu ook Betty, een in-house ontwikkelde Rails-plug-in waarmee ze snel allerlei basiscomponenten kunnen toevoegen aan hun project. "We gaan dit binnenkort commercialiseren onder de naam Bettyblocks", verklapt Chiel, en hun eerste plaats op de RAD Race is dan ook een mooie referentie voor de plug-in.
Net zoals vorig jaar heeft het team een duidelijke taakverdeling: Chiel werkt aan de interface en formulieren, terwijl Stephan de berekeningen en applicatielogica programmeert. Wanneer we het team tegen het einde van de eerste dag zien, lijken ze helemaal niet gestresseerd: "We zitten er lekker in, we zijn goed op schema, en we zien het goed zitten om de opdracht af te krijgen", zegt Stephan.
Wanneer we twee uur voor het einde van de wedstrijd over hun schouders meekijken, is het team al bijna klaar en zegt het nog wat te gaan finetunen. Als de jury hun oplossing bekijkt, is die dan ook onder de indruk van de afwerking, inclusief grafiekjes van de zetelverdeling met kleuren per partij. Zelfs bij heel wat randgevallen en speciale situaties bleven hun berekeningen kloppen.
Bovendien zijn de berekeningen via een web services API aan te roepen, zelfs met authenticatie. De jury was dan ook unaniem onder de indruk van wat Holder gepresteerd had. Ondanks het gemak waarmee ze de opdracht blijkbaar oplosten, noemden de deelnemers het een leuke opdracht met genoeg technische uitdagingen.