18 aug 2016
Local flavour

Technologie: hoe worden nieuwe car2go-functies gereleased?

De droom van elk team is om waarde te creëren voor zijn klanten op een reproduceerbare en betrouwbare manier. Omdat het creëren van de juiste customer experience geen gemakkelijke taak is, moet snel gereageerd worden op veranderingen.  Onze filosofie? Bliksemsnel een productversie lanceren die áf is, en aan het einde op een knop drukken en koffie drinken terwijl het wonder geschiedt.

 

Maar hoe geschiedt dat wonder en hoe automatiseren we dit zodater elke  twee weken een nieuwe app release is die bij 99,9% van onze gebruikers  niets crasht? Kort gezegd ontstaan app releases door continu nieuwe functies te integreren, automatische testen te implementeren en ervoor te zorgen dat elke versie – potentieel – kan worden gereleased.

Laten we nu eens in detail bekijken hoe een functie ontstaat,ontwikkeld wordt en  gebruikers hem in handen krijgen.

 

process

 

Planningfase

Bij de start zijn er natuurlijk veel ideeën voor nieuwe functies. Ideeën komen binnen via verschillende kanalen en zijn afkomstig van car2go-members,stakeholdersen collega’s. Ideeën krijgen  een prioriteit toegewezen en worden aan de planning toegevoegd (later wellicht meer over dit proces).

Ideeën worden onder verdeeld  en  ons designteam moet het probleem door en door begrijpen en starten met een schets. Na enkele pogingen wordt een eerste wireframe prototype door echte gebruikers getest en weten we of we goed bezig zijn.

Dan analyseren we de ideeën van de gebruiker vanuit technisch oogpunt. De Product Owner samen met het ontwikkelingsteam, distilleert en meet de complexiteit van het idee. We maken gebruik van Atlassian Jira voor de tracering van problemen en projecten.

Op basis van prioriteiten schakelen we naar  een hogere versnelling, worden we het eens over de details van de implementatie en splitsen we  het idee op in platformspecifieke taken.

 

Ontwikkelingsfase

We implementeren en testen het idee van de gebruiker door elke taak in een feature branch te voltooien. Daarvoor gebruiken we Gitflow. Bij elke stap wordt het design gecontroleerd en nagegaan of aan alle criteria is voldaan. Dan creëren we een pull request, kijken we of er groen licht is voor de integratietestsen pas nadat andere ontwikkelaars op hun beurt groen licht geven, integreren we de versie in onze CI branch. Bij de samenwerking gebruiken we Atlassian Stash.

 

Distributiefase

De distributiefase start met een team-test-vergadering, waarbij elk lid van ons team de afgewerkte versie kan beoordelen en potentiële problemen kan ontdekken tijdens een handmatige testsessie. Daarbij lossen we potentiële problemen en “coding freezes” op. Wanneer het tijd is om een nieuwe versie van de app te releasen, triggert een van de ontwikkelaars een Jenkins job die automatische testen uitvoert, een binary bouwt, ondertekent en uploadt naar een app store.

Alfa-testers kunnen nu de binary downloaden en de integratie handmatig testen door een testblad door te nemen. Indien er geen obstakels voor vrijgave worden gevonden, gaat de binary in open beta testing.  Na uitgebreide tests en analyse van de feedback van verschillende kanalen wordt door de PO en de belanghebbenden een beslissing genomen om al dan niet live te gaan.

Nog enkele feiten om de evolutie van ons proces te laten zien. De car2go-app is als volgt bijgewerkt: 5 keer in 2012, 6 keer in 2013, 10 keer in 2014, 18 keer in 2015 en 8 keer dit jaar tot de publicatie van dit artikel (de statistieken rekenen geen hot-fix releases mee). Probeer onze nieuwste versie voor AndroidiOSBlackBerry en Windows Phone en vergeet niet om gebruik te maken van de laatste versie van onze app.

Ten slotte heb je misschien enkele actiepunten herkend die mijn team op prijs is gaan stellen. Maar nog belangrijker is het om te begrijpen dat er geen universeel recept is en dat dit slechts een momentopname is van ons continu evoluerende proces, dat al gewijzigd kan zijn op het ogenblik dat je dit leest. Indien je vragen of suggesties hebt, neem dan gerust contact met ons op.