Het dilemma

Voor nieuwe functionaliteit is het als developer je taak de weg af te leggen van user story naar productie; je gaat van user story naar design, naar implementatie, naar testen, naar acceptatie, om uiteindelijk de eindgebruiker te bedienen.

Idealiter leg je deze weg weg in een keer af en heb je topkwaliteit voor de laagste prijs. Echter is de realiteit weerbarstiger; het komt vaak de kwaliteit ten goede om een of meerdere stappen terug te kunnen zetten tijdens dit proces, maar dit gaat ten koste van de prijs.

De oplossing

Bij Freave lossen we dit dilemma op door de kosten van de stappen te minimaliseren. Door het creëren van ruimte om stappen terug te zetten wordt het makkelijker kwaliteit te leveren.

Hoe doen we dit? Hoofdzakelijk door kleine stappen te nemen, zo vroeg mogelijk te constateren of een stap terug gezet moet worden, en te automatiseren waar mogelijk.


Ons proces

  1. Elke twee weken bereiden we het werk voor de komende twee weken voor; we schatten gezamenlijk in wat we op kunnen leveren door de openstaande taken door te spreken en qua belasting in te schatten. Deze korte periode houdt de planning realistisch waardoor het vaker uitkomt, en houdt de kosten van de planning klein genoeg om te herhalen.
  2. We hebben afspraken over communicatie en tools die de drempel laag leggen en de beschikbare hoeveelheid informatie groot maken, waardoor het gemakkelijk is een extra stel hersens in te schakelen wanneer nodig.
  3. Elke wijziging van de codebase doorloopt een code review, waarbij een tweede developer de code beoordeelt, en bij verbeterpunten de code teruglegt bij de schrijver.
  4. Elke geaccepteerde wijziging wordt in een omgeving klaar gezet waarop intern getest wordt. Zo vangen we onvolkomenheden af voordat het de klant tijd kost.
  5. Na de interne test wordt de klant uitgenodigd de wijzigingen te beoordelen. Dit voorkomt dat onverwachte zaken uitrollen naar de eindgebruiker.
  6. Pas dan worden de wijzigingen uitgerold naar productie.

Automation

Automatisering van de stappen zorgt ervoor dat de drempel van het herhalen laag wordt. Door het verwijderen van handmatige handelingen worden fouten in het proces voorkomen en frustreert herhaling niet.

Het bereik van automatisering is groot. Door middel van infrastructure as code tools richten we omgevingen in, zodat we garanderen dat dezelfde omgeving ontstaat ongeacht de onderliggende machine (dezelfde web server, dezelfde utilities, dezelfde configuratie, etc.). Door middel van continuous integration / continuous deployment tools trappen we bij elke nieuwe feature een proces af dat de opgeleverde code controleert op kwaliteit (voltooit het build proces zonder fouten? Wordt aan onze code standaarden voldaan? Slagen de unit tests?) en onze omgevingen voorziet van de laatste wijzigingen.


Conclusie

Voorbereid zijn op verrassingen met een goed doordachte en gestroomlijnde workflow waarborgt kwaliteit. Wij bereiken dit door onze werkwijze van veel korte stappen met zoveel mogelijk automatisering. That’s how we developers get shit done.