Sommige dingen veranderen nooit. Software-ontwikkelprojecten duren veel te lang, worden veel duurder dan gepland en bieden te weinig werkende functionaliteit. Sinds 1997 laten programmeurs in een wedstrijd zien dat het ook anders kan: ze bouwen een goed werkende applicatie in een fractie van de tijd die daar normaal voor nodig is. De RAD Race 2014 vond dit jaar plaats op 28 en 29 maart.
Wedstrijdleider en RAD Race-initiator Ivan Verborgh schreef een realistische opgave die betrekking had op een Europees systeem voor het uitgeven en beheren van nummerborden. De applicatie stelde geen extreme eisen aan de programmeurs. Deze hoefden alleen maar de opgave goed te lezen, een goede analyse te maken en vervolgens in korte tijd veel werkende software te bouwen. Aan die laatste eis voldeden alle deelnemers: iedereen had in die twee dagen een indrukwekkende hoeveelheid functionaliteit geproduceerd. Toch waren er drie partijen, die opvielen doordat ze het beter gedaan hadden dan de anderen.
Allereerst waren dat het Franse Nout en het Nederlandse Servoy. Deze twee partijen deelden de eerste plaats, STB werd tweede. De winnaars bleken alle drie vooral goed nagedacht te hebben over de opgave. In dat aspect bestaat ook een zeer grote overeenkomst met de werkelijkheid: software-ontwikkelprojecten kunnen alleen succesvol zijn wanneer de programmeurs begrijpen wat de klant wil. Doordat de opgave met name aan het begin van de tweede dag wijzigingen onderging, waren de deelnemers nog meer gedwongen agile te werken.
Ex aequo
Ex aequo-winnaar Nout was ooit zo agile, dat de oprichters niet eens specificaties formuleerde, maar na een kort gesprek meteen een prototype bouwden dat ze aan de klant voorlegden. Nout had bij een eerdere RAD Race geleerd dat die aanpak bij een RAD Race niet werkte en had deze keer de opgave heel goed gelezen. Hun applicatie was ook erg vanuit de gebruiker ontworpen. Nout maakte gebruik van een eigen in C++ geschreven kern, Nout Builder, waarmee ze bouwstenen configureren die onder meer in html, Javascript en in toenemende mate in html5 applicaties opleveren. Er wordt niet geprogrammeerd, maar uitsluitend geconfigureerd.
Ook het Servoy-team had eerder meegedaan, zij het in een andere samenstelling, en had daaruit lering getrokken. Servoy blonk uit door een zeer gedegen analyse van de locking bij het reserveren, respectievelijk genereren van nummerborden. Servoy is weliswaar geïnspireerd door 4GL’s maar heeft een eigen taal die gebaseerd is op open standaarden, kent een GUI-designer en is event driven. Servoy heeft ondertussen veel internationale klanten maar is een Nederlands bedrijf, opgericht door Jan Aleman en Jan Blok. Het is vanaf versie 5 open source (AGPL) en de IDE is een Eclipse-plug-in. Het heeft ook een eigen applicatieserver, zowel server als clients zijn te installeren op een zeer groot aantal platforms. Qua functionaliteit ontliepen de twee winnaars elkaar overigens niet: ze hadden de hele opgave af, al had een enkel detail iets beter gekund.
Bij STB (tweede prijs) ontbrak de historie in de applicatie, zodat de rapportage gebreken vertoonde. De functionaliteit was dus iets kleiner. STB maakte gebruik van verreweg het oudste tool: Filemaker, van oorsprong (1985) een tool om data op zeer eenvoudige wijze te importeren in een database, aanvankelijk zelfs zonder relationele kenmerken. Al in 1988 werd Filemaker een Apple-dochter en in de loop der jaren is de tool aan de eisen van deze tijd aangepast en is de functionaliteit sterk uitgebreid. Uiteraard biedt het veel ondersteuning voor iOS- en OS X-apps.
Nieuwe talen en tools
De klassieke 4GL’s die de eerste jaren de RAD Race domineerden, hebben de laatste jaren definitief het veld moeten ruimen voor nieuwere talen en tools. Deze kun je in verschillende groepen opdelen. Allereerst heb je tools die via configuratiecode produceren in populaire talen als Java, Javascript en html, waarbij er niet of nauwelijks wordt geprogrammeerd. Nout hoort in die categorie.
In de tweede plaats is er de categorie van de applicationplatformen. Daarmee kunnen heel snel zeer uitgebreide applicaties worden gebouwd die gebruikt kunnen worden onder heel veel verschillende besturingssystemen. Ze bieden allemaal de mogelijkheid om naast lokaal ook cloudgebaseerd te werken. Servoy was een overtuigend voorbeeld van deze categorie. Outsystems (gebruikt door Coolprofs) is een ander voorbeeld. Outsystems genereert naar keuze Java- of C#-code. Mendix is sterk in het integreren van legacysystemen en kent ook een moderne vorm van projectmanagement middels social collaboration en werkt met een eigen app store. Mendix werd tijdens de wedstrijd gebruikt door een team van gastheer Capgemini. De deelname van de Capgemini-teams was tevens de reden dat oudgediende Ron Tolido deze keer niet in de jury zat.
Dan kennen we sinds geruime tijd frameworks die ontwikkelaars een hoop werk uit handen nemen, omdat ze al heel veel kant-en-klare code aanbieden, of zelfs genereren. Twee teams van Capgemini werkten met een combinatie van frameworks binnen Microsofts .Net-omgeving. Bij het Trinidad-team werd gebruik gemaakt van het gelijknamige framework. Dit genereert software op basis van UML. Het is (mede-) ontwikkeld door Sander Hogendoorn. Ook 4Division maakte overigens gebruik van model driven development. Hun werk viel op door de zeer grondige analyse. Bij dit team werd helaas ontwikkelaar Lieven Mettepenningen na een dag door ziekte geveld en moest Rudi Mariman alleen verder. Daarvoor ontving hij de sportiviteitsprijs.
Ten slotte zijn er dan nog programmeertalen als Ruby waarmee je heel compacte code kunt schrijven en dus heel snel kunt programmeren. In die zin is het een aparte categorie, maar ook het team van Kabisa (het enige Ruby-team) gebuikte frameworks. Het slaagde erin een applicatie te bouwen waaraan de uiterlijke flexibiliteit zeer goed af te zien, met een opbouw die extreem goed afgestemd was op de gebruiker. Het ontwerp van de schermen werd oogstrelend genoemd door enkele juryleden.
Voortschrijdend inzicht
De voor het eerst deelnemende teams hebben naar eigen zeggen geleerd vóór het programmeren eerst wat langer na te denken, zodat ze halverwege minder zaken aan moesten passen. Het soort voortschrijdend inzicht dat de ontwikkelaars tijdens de RAD Race opdeden, vinden we in een andere vorm ook bij de tools terug. Van de 4GL’s die alleen konden draaien op een zeer beperkt aantal systemen en die zeer moeilijk te onderhouden waren tot de open en werkelijk overal inzetbare systemen van nu, is een heel grote stap. Heel fijn ook om te zien dat met die nieuwe versies ook zoveel productiviteit bereikt kan worden, door alle deelnemers, zonder uitzondering. Toch was het overheersende beeld gedurende de twee dagen vooral dat van programmeurs die heel hard code aan het kloppen waren. Met heel veel plezier en in een uiterst sportieve sfeer, dat dan weer wel. Sommige dingen veranderen nooit.
Overzicht gebruikte tools
Nout
Noutbuilder (in C++ geschreven engine die uitsluitend door parametrisatie windows-apps en webapplicaties oplevert
Servoy
Servoy Developer
Servoy Server
Servoy Smart & Web client
Servoy Business Application Plattform
PostgreSQL
iReports/jasperReports
STB
Filemaker (versie 13) met daarin ontwikkelde ‘bouwblokken’ voor gebruikers en groepen, meertaligheid, import- en export functies.
Coolprofs
Outsystems 8.01
4Division
Windows 8/8.1
VS 2012
SQL Server 2012
WebXTC 3.7
Kabisa
Postfix + Roundcube (for email)
Vagrant + VirtualBox
Vim + Tmux
Git
RSpec / Cucumber
Thin (webserver)
Extra componenten:
Sidekiq
Coffeescript, jQuery
Sass, Foundation 5
Haml
Draper
Pry
PgSearch
E=Mx^C (Capgemini Mendix)
Mendix Modeller 5.2.0
Eclipse Kepler
NotePad++
SoapUI
FireFox Browser + Poster
Chrome + Debugging Tools
PostgreSQL 9.2
Capgemini Buurman & Buurman
IDE:
Visual Studio 2013
Xamarin Studio
Productivity tools:
Resharper- Entity templates (for generation of Domain & business entities, services & viewmodels)
BaseProject (for generation of basic cross-platform iOS, Android, Windows Phone & Windows 8 Solution)
FMA (Our own cross platform mobile framework)
Tobago Firestarter
MvvmCross
Cloud applications:
Azure
VisualStudio online
Capgemini Trinidad
Visual Studio
Resharper
ADF
Tobago MDA Generator
Tobago FireStarter
Enterprise Architect
SQL Management Studio
Azure management
Azure website
TFS online
SendGrid
Unity DI
Meer informatie op www.radrace.org.
Jury
Ivan verborgh, staff director logistics bij de Federal Public Service Finance in België, Jan Detremmerie interim manager en consultant, Sherry Bibiana, it-architect en consultant bij ING, Robert de Wolff, agile software fellow bij Fflowing en Dré de Man, it-journalist.
Deze RAD Race bewijst des te meer dat bij het ontwikkelen van software ook meteen gekeken moet worden naar de onderhoudbaarheid van de applicaties.