Ik verspilde dagen aan het automatiseren van een taak van 5 minuten
Leonard Tibben
—
Engineering

Written by
Dit artikel is oorspronkelijk geschreven in het Engels.
Heb je er wel eens bij stilgestaan hoeveel tijd je kwijt bent aan het automatiseren van taken? Als developer heb je vaak behoorlijk complexe workflows. Programmeurs hebben een hekel aan het twee keer doen van hetzelfde. En ze hebben de beschikking over het krachtigste gereedschap ter wereld: de computer. Dus waarom niet alles automatiseren wat je kunt?
Mijn mening is grotendeels gevormd door mijn ervaring als Flutter developer. Specifiek door alles rondom het eigenlijke Flutter/Dart-ontwikkelproces, zoals CI/CD en versiebeheer.
Hoeveel tijd bespaar je nou echt?
Als je iets gaat automatiseren, is het de moeite waard om écht even te gaan zitten en de tijdsbesparing door te rekenen. Stel: je hebt een taak van 5 minuten die je elke maand doet. Als je er meer dan 5 uur in steekt om die te automatiseren, bespaar je over een periode van 5 jaar helemaal niets. Ik heb dit precies zo gedaan bij het deployen van mijn Flutter-app (ik zou de app graag laten zien, maar hij is nog niet gereleased. Wat ik wel kan laten zien, is wat we met Baseflow hebben gedaan met Flutter voor Waste Vision).
Je app bouwen en uploaden naar de Google Play Console of App Store Connect is letterlijk een klus van 5 minuten. Ik heb eindeloos zitten vechten met Fastlane en Xcode Cloud. Fastlane is ongetwijfeld een krachtige tool als je weet hoe het werkt. Maar als junior developer had ik al genoeg aan mijn hoofd met het doorgronden van hoe StreamControllers werken. Dit voegde gewoon te veel complexiteit toe aan mijn stack. Als het werkte, was het inderdaad snel. Maar het onderhouden ervan, en het oplossen van problemen als er iets stukging, kostte meer tijd dan ik terugkreeg.
Hetzelfde geldt voor Xcode Cloud. Als je alles precies doet zoals Apple het wil, werkt het als een tierelier. Maar ga je ook maar een klein beetje buiten de lijntjes kleuren, zoals een Flutter-app bouwen in plaats van een native iOS-app in Swift, dan wordt het al snel een stuk ingewikkelder.
Wat je moet begrijpen: automatiseren betekent vaak niet "instellen en vergeten". In mijn ervaring ben je vaker tijd kwijt aan het onderhouden van je automatisering dan aan de taak die je eigenlijk wilde automatiseren.
Onnodige afhankelijkheden
Een deel van je workflow automatiseren kan betekenen dat je meer afhankelijk wordt van tools van derden. Ik probeerde versiebeheer te automatiseren in mijn Flutter-app. Het plan: een GitHub Action die het ceder-pakket gebruikt voor automatische semantic versioning. Opnieuw: een klus van 30 seconden die je makkelijk bij elke PR doet. Het kostte me een hele dag worstelen met GitHub Actions om tot dezelfde conclusie te komen: dit doe je beter gewoon met de hand.
Zelfs als het me uiteindelijk tijd had bespaard, en dat zou hooguit een paar minuten per maand zijn geweest, wil ik de extra onrust niet van het vertrouwen op een pakket van een derde partij en een extra GitHub Action die ik moet bijhouden.
Het houdt je scherp
Dit is moeilijker te meten, maar ik merk dat het handmatig uitvoeren van dit soort taken me een beter gevoel geeft van wat er in mijn project speelt. Ik krijg een beter oog voor kwetsbare plekken en code die binnenkort refactoring nodig heeft. Automatisering kan je de illusie geven dat je codebase in orde is, puur omdat de automatisering slaagt.
Sommige dingen hebben ook gewoon een menselijke afweging nodig. Semantic versioning is, per definitie, semantisch. Wanneer is iets een patch, een feature of een major release? Ik denk dat daar geen eenduidig antwoord op is. En automatisering lost dat niet op.
Stel: jij en je collega hebben verschillende ideeën over semantic versioning en je loopt tegen een versieconflict aan. Automatisering neemt de menselijke fout niet weg, maar nu heb je er een extra probleem bij: je weet niet meer welke PR naar welke versie is gebumpt, want dat is allemaal weggeautomatiseerd. Als je dit soort taken handmatig doet, word je gedwongen bewuste keuzes te maken. Dat voorkomt problemen in de toekomst, en als ze toch opduiken, zijn ze makkelijker op te lossen.
Conclusie
Mijn boodschap: doe iets een paar keer handmatig voordat je het probeert te automatiseren. Automatisering kan geweldig zijn op het juiste moment. Maar je overschat de noodzaak ervan vaker dan je denkt.




