iWink's Kirra Cookbook

Wij programmeurs zijn lui. We hebben er een hekel aan hetzelfde werk twee keer te moeten doen. En dat is goed, vooral voor onze klanten. Wij steken namelijk structureel tijd in het bouwen van tools die ons werk uit handen nemen. Een computer kan namelijk repetitief werk doen, zonder daarbij fouten te maken. Eén van deze tools is iWink's Kirra Cookbook. 

iWink ontwikkelt websites op basis van Kirra CMS. Hierbij blinken wij uit in het bouwen van maatwerk: we kunnen bestaande functionaliteit van Kirra aanpassen aan de wensen van onze klanten, en compleet nieuwe functies op maat bouwen. Maar wat gebeurt er als een project afgerond is? Al onze code, waar we zo veel tijd in gestoken hebben, blijft in het project achter en wordt nooit meer herbruikt. Bij het volgende project moeten we weer helemaal opnieuw beginnen. Dat kan beter! Uit frustratie ontwikkelden we het Kirra Cookbook.

Wat is het Cookbook?

Het Cookbook (kookboek) is een verzameling van Recepten. Een Recept vertelt hoe een stuk maatwerk voor Kirra in elkaar zit. Soms in de vorm van geschreven instructies voor een programmeur, maar nog vaker in de vorm van werkende code die automatisch in nieuwe project geplaatst kan worden. Met een druk op de knop wordt er bijvoorbeeld de basis van een Mapbox kaart toegevoegd, of narrowcasting aangemaakt. We hebben inmiddels al 70 Recepten geschreven die het bouwen van maatwerk functionaliteit in Kirra veel makkelijker maken. Dit maakt het niet alleen makkelijker om complexe websites te bouwen, maar omdat de code uit het Cookbook al in diverse eerdere project gebruikt en getest is, is de kans op fouten ook nog eens veel lager.

Omdat Cookbook code wordt gebruikt als basis voor meerdere projecten, wordt de veelzijdigheid en stabiliteit van deze code extra streng gecontroleerd. De basis waarop je werkt wordt daarmee nog beter, en dus komen er minder fouten terug bij onze supportafdeling. Dat zorgt voor blije klanten, en dus leuker werk.

Structuur

Het Cookbook bestaat dus uit een verzameling van Recepten. Elk Recept moet in ieder geval een stukje documentatie bevatten. Hierin beschrijf je als auteur wat jouw Recept precies doet, en in welke situaties het gebruikt kan worden. Om het makkelijker te maken om het Recept terug te vinden, zijn deze ingedeeld in een aantal categorieën: Design, Frontend, Backend of "Hip". Verder is aangeven hoe goed de code getest is: het Recept kan de status alpha, beta of compleet krijgen.

Elk Recept bestaat verder weer uit een aantal vaste onderdelen: ingrediënten, vragen en stappen. Een ingrediënt kan bestaan uit een stuk code, een javascript bestand, een afbeelding, enzovoort: alles wat nodig is om de functionaliteit in de website te krijgen. Verder kun je als auteur een aantal vragen stellen zodat je de functionaliteit van het Recept aan kunt passen aan de specifieke situatie. De stappen beschrijven tenslotte wat het Cookbook allemaal moet doen, op basis van de ingrediënten en de antwoorden op de vragen, om de gevraagde functionaliteit automatisch aan een website toe te voegen.

Gebruik

Het gebruiken van een Cookbook Recept bestaat uit twee fases. In de eerste fase wordt het Recept gesimuleerd: de gebruiker beantwoordt de nodige vragen en doorloopt alle stappen. Vervolgens geeft het Cookbook een beschrijving van wat er allemaal moet gebeuren om het Recept te voltooien: welke nieuwe bestanden in de website geplaatst gaan worden, welke bestaande code aangepast wordt, enzovoort. Pas wanneer de programmeur deze beschrijving heeft gezien en goedgekeurd, gaat het Cookbook door naar de volgende fase.

In de tweede fase wordt het Recept "gebrouwen". De handelingen die tijdens de simulatie waren beschreven, worden nu daadwerkelijk uitgevoerd. Ook wordt alles wat gebeurt nog weggeschreven in een logboek en in ons eigen intranet, zodat we later eventueel na kunnen kijken wat er precies allemaal gebeurd is. Bij de beste Recepten ben je nu al klaar: de functionaliteit is toegevoegd aan de website en direct beschikbaar. Mochten er na afloop nog extra handelingen nodig zijn van de programmeur, dan kan dit expliciet door het Cookbook vermeld worden.

Een overzicht van beschikbare Recepten in het Cookbook
Een overzicht van beschikbare Recepten in het Cookbook

Waarom telkens het wiel opnieuw uitvinden als we ook bestaande ideeën en concepten kunnen blijven verbeteren? Door slim gebruik van het cookbook blijft er tijdens projecten meer tijd over voor details die het verschil kunnen maken.

Een stukje geschiedenis

Het is voorjaar 2013, en de programmeurs van iWink hebben zich verzameld voor hun periodieke overleg. Een voor een vertellen we vol trots over de nieuwe functionaliteit die we over de afgelopen periode gerealiseerd hebben. Na elk praatje zijn de reacties vergelijkbaar: complimenten voor het werk, en vragen of deze functionaliteit ook herbruikt kan worden in nieuwe projecten.

Het herbruiken van goede code blijkt in de praktijk echter vaak onpraktisch te zijn: het kost te veel moeite om maatwerk uit een project te halen, aan te passen, en dan toe te passen op een nieuw project. Bovendien bestaat het risico dat dingen over het hoofd gezien worden, wanneer code die in het ene project wel werkt, in het andere weer stuk gaat. Dan is het makkelijker om alsnog zelf iets te bouwen.

We zijn het allemaal eens: dit kan beter.

Bevindingen

De waarde van het Cookbook blijkt cumulatief te zijn: hoe meer kennis erin wordt gestopt, hoe meer er mogelijk wordt en hoe meer het gebruikt wordt. Bovendien wordt de code nu van project tot project steeds beter, in plaats van elke keer opnieuw vanaf nul te beginnen. Een echt succesverhaal hierbij is "related components". Deze uitbreiding maakte het mogelijk pagina's in Kirra aan elkaar te verbinden. Deze functionaliteit was eerst als maatwerk gebouwd voor een project waar dit nodig bleek. Toen we zagen hoe handig dit was in gebruik, werd de code al snel overgenomen in een volgend project, en daarna nog een. Telkens werden er kleine verbeteringen gedaan. Het Cookbook maakte het gebruik van related components zelfs zo makkelijk dat het in een meerendeel van nieuwe websites toegepast werd. Nu, ruim een jaar later, is de "related component" functie zelfs ingebouwd in Kirra en standaard beschikbaar. Hetzelfde verhaal gaat op voor het concept van "flexpages" - een functie die het mogelijk maakte voor beheerders om meer controle te hebben over de indeling van pagina's op de website. De eerste versie werd speciaal voor een project gebouwd. Daarna kwam het steeds terug, het kwam uiteindelijk in het Cookbook terecht en zit nu standaard in Kirra.

In het begin werd Cookbook nog beperkt gebruikt. Hergebruik is een mindset, en het duurde even voordat deze overgenomen werd. Wat wel bleek was dat, hoe beter Cookbook zijn nut bewees, hoe sneller mensen begonnen over te stappen. Hierbij waren twee soorten Recepten van speciaal belang: die van een zeer goede kwaliteit, en Recepten die breed inzetbaar waren. Breed inzetbare Recepten zorgden er voor dat iedere programmeur of codeur tenminste een keer per project naar het Cookbook keek. Recepten van goede kwaliteit maakten het Cookbook populair doordat het gebruik van die Recepten een soort "statussymbool" voor de website werd.

Tegenwoordig is het Cookbook "ingeburgerd". We zijn op het punt gekomen waar, als een programmeur iets nodig heeft voor een website, hij niet direct iets gaat bouwen maar eerst gaat kijken of er al iets beschikbaar is. En aan het einde van nieuwe projecten loopt een programmeur het project door op zoek naar herbruikbare functionaliteit, en deze te "Cookbookifyen" zoals dat in heel gebroken Engels mag heten. Met het Cookbook kunnen we een nog stabielere basis creëren voor onze online producten.

E-mailhosting Google Analytics