De aarde is niet plat maar rond (toch nog in twee keer goed)

Agile software developement wordt meestal vanuit het Engels vertaald als wendbaar ontwikkelen. Waar vroeger het te bouwen systeem voorafgaande aan de bouw gedefinieerd werd (en dit veranderde daarna amper), wordt nu tijdens de bouw snel geanticipeerd op nieuwe inzichten en veranderende wensen. Ik hoef agile ontwikkelen niet verder uit te leggen: Wikipedia: Agile en het lezen van het sublieme Scrum from the trenches geeft al voldoende info om er enthousiast van te worden.

Helaas is Agile ontwikkelen niet voor ieder project weggelegd. Ieder groot project is op te delen in kleinere deelprojecten, grootte mag het probleem dus niet zijn. Een belangrijke factor is de organisatie zelf. Agile ontwikkelen vergt veel communicatie over en weer met direct betrokkenen welke ook nog eens beslissingsbevoegd moeten zijn. En die personen moeten dus ook nog eens echt beslissingen gaan nemen. Als in het verleden altijd mooie nieuwe glimmende applicaties (..) over de schutting gegooid zijn dan is dit een aardige cultuurschok. De klant mag meekoken met de kok. En er komt tevens een redelijke macht bij de (power) users te liggen dus ‘politiek’ ligt ook nog eens op de loer. Kortom, agile projecten slagen voornamelijk in agile organisaties welke hun waterval verleden kunnen loslaten.

Maar er is nog een belangrijke factor waar heel eenvoudig aan voorbij gegaan wordt, ook door direct betrokkenen. Agile projecten moeten uitgevoerd worden door agile ontwikkelaars. Want hoewel het snel opleveren van steeds betere iteraties ronduit verslavend is, moeten door hen ook offers gebracht worden.

Er valt veel voldoening te halen uit het opleveren van solide code welke meegroeit met de organisatie en de veranderende wensen van gebruikers. Je probeert dus in te spelen op mogelijke toekomstige veranderingen in je ontwerp. En je wilt ook nog eens leren van fouten uit je verleden dus speel je al in op mogelijke tekortkomingen in de gebruikersvereisten. Want je wilt het nu eindelijk eens in één keer goed doen…

Maar dat is dus niet agile! Want agile betekent eigenlijk loslaten. Als ontwikkelaar moet je niet bang zijn eenmaal gemaakte keuzes toch weer snel los te laten. Neem je verlies, verander je ontwerp, refactor je code of begin desnoods opnieuw. Dit is moeilijk en vergt een nieuwe mindset. Want dit betekent dat je dus bij de tweede keer implementeren pas goed zit. Geef de poweruser de ruimte om tot inzicht te komen en wees luchtig met het op tijd wenden. Dit is geen nonchalance of een tekortkoming. Want de keuzes in het verleden waren goede keuzes met de kennis die toen voorhanden was. Dus als de gebruiker vind dat de aarde plat is, dan maak je zonder tegenzin een applicatie voor een platte wereld. En als een sprint later blijkt dat de aarde toch rond is, dan pas je jouw ontwerp gewoon net zo eenvoudig weer aan.

Ga dus niet zitten brommen dat de aarde wel degelijk rond is, want voor sommige organisaties is de aarde nog steeds plat. En dit loslaten is de ware wendbaarheid van agile projecten.