Skip to content

Add blog post with fairy tale of clean coder #1

@dashorst

Description

@dashorst

De Schone Coder
Er waren eens een projectmanager en een productmanager die graag een softwareproject wilden doen. Toen de productmanager een keer op een sabbatical was geweest en een consultant gesproken had kwam hij terug met een Visie: een productvisie. Als het jaar voorbij is zal je een project starten! En ja hoor, deze visie werd werkelijkheid en voordat het jaar voorbij was startten de project- en productmanager hun lang begeerde softwareproject.
Vlak voordat ze met de ontwikkeling begonnen hielden ze een feestelijke Kickoff om de neuzen allemaal dezelfde kant op te krijgen. Er zijn 13  leveranciers met kennis van Software in het Rijk maar de managers hadden slechts plek voor 12 en besloten één leverancier niet uit te nodigen. 
Tijdens het feest beloven de eerste 11 leveranciers hun beste en snelste ontwikkelaars aan de projectmanager en de productmanager, en hun mooiste projectaanpakken en de geweldigste cloud-architecturen. Alles lijkt in kannen en kruiken.
Maar dan komt plots de dertiende binnen: Prins 2. Die is boos want Prins 2 kon niet meedoen met het gegraai en gebouw. Dus hij doet een boze voorspelling: "Het project zal na 15 maanden een pijnlijke dood sterven wanneer jullie het in productie brengen."
Gelukkig is de twaalfde leverancier nog niet geweest met het doen van loze beloften. Hij kan de vloek niet ongedaan maken maar wel verzachten: het project zal niet doodgaan maar slechts in een coma raken van technical debt totdat er een prinses langs komt die het zal redden.
Het feest raakt enigszins in mineur, maar met goede moed gaat iedereen hard aan het werk. De leveranciers doen natuurlijk niet wat ze beloofd hadden en overladen ze het project met een waterval aan methoden, processen en managers met eigen agenda's. De beloofde geweldige programmeurs worden al snel op andere projecten gezet en vervangen door junior programmeurs. Om de deadline toch te kunnen halen wordt er een plethora aan handige raamwerken, technologieën en buzzwords geïntroduceerd in het project. Ze gebruiken microservices, Hibernate, polyglot, hybrid cloud, bundler, grunt, maven, gradle, nant, Spring, XML, SOAP en nog veel meer. En al die frameworks worden aan elkaar geknoopt met een enterprise service bus.
Na maanden gesoebat en het uitstellen van de geplande release van 4 maanden naar 15 maanden is het eindelijk zover: de media lancering. Ze hebben een geweldig mediaplan opgesteld en de toegestroomde pers kijkt uit naar het event. Wanneer de gebruikers daadwerkelijk van het product gebruik gaan maken valt het uit elkaar van ellende: de performance was verschrikkelijk:
"Zelfs zo langzaam dat het opzoeken van gegevens sneller gaat via het ouderwetse archiefsysteem (kast openmaken, map zoeken, map doorbladeren, gegevens overnemen, map opbergen, kast dichtmaken). En al die tijd was het systeem bezig met inloggen. Niet gelukt trouwens."
De applicatie ligt er vaker uit dan dat het werkt. En tot overmaat van ramp is het geld ook op. De leveranciers trekken hun ontwikkelaars en managers van het project af en rijden met hun dikke leasebakken naar hun volgende gedoemde project. 
Alleen Assertpoetser blijft over om het project in leven te houden en de kritieke bugs op te lossen. Maand na maand ploetert Assertpoetser door het doornbos van brakke en dode code om deze  te voorzien van fixes voor de crashes. Maar elke keer dat hij een bug fixt duiken er drie nieuwe op. Zoals voorspeld door de twaalfde leverancier lijkt het project in een coma: de technical debt heeft zich opgestapeld en iedereen is maar wat blij dat ze van het project af zijn.
Op een dag rijdt princes Agile langs op haar fiets die ze "Uncle Bob" heeft genoemd en zag het verwilderde codebos. Ze begint met haar zwaard Refactoring in te hakken op het takkenwoud en verwijdert wat de dode code. Ze ziet met lede ogen hoe Assertpoetser in z'n eentje probeert de wildgroei ongedaan te maken en begint met Assertpoetser te pair programmen.
Als eerste vereenvoudigden ze het releaseproces zodat ze in plaats van een week nog maar een paar minuten nodig hadden om een nieuwe versie op productie te zetten. Daarna gaan ze samen testcases schrijven die controleeren of de functionaliteit wel werkt zoals bedoeld.
Samen met Assertpoetser gaat princes Agile aan de slag om de code base te fixen, te repareren, te voorzien van unit tests en te ontdoen van overbodige frameworks en libraries. Met elke twee wekelijkse release wordt de applicatie langzaam aan stabieler en sneller.
De overgebleven gebruikers merken het langzaam aan ook en beginnen andere mensen te vertellen over het product. Steeds meer gebruikers gaan gebruik maken van de applicatie en druppelt er steeds meer geld binnen. Uiteindelijk wordt het project toch nog een succes met meer dan 70% marktaandeel.
Assertpoetser en princes Agile coden nog lang en gelukkig.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions