Agile is niet Sexy
Ik hoor het vaak. Agile is een modern manier van software ontwikkeling, waarbij de developers veel meer vrijheid hebben. Ze gebruiken allerlei coole tools en schrijven liever geen documentatie. Leve de vrijheid, architecten niet nodig, en we zien wel wanneer het klaar is! Ook veel gehoord: Agile is ‘oude wijn in nieuwe zakken’. Het snel werken naar resultaat deden we al in de jaren ’90, toen heette dat RAD.
Er zijn veel misverstanden over Agile, en dat is jammer omdat iedere onderneming of project op een of andere manier wel voordeel kan hebben bij een goed begrip van Agile. Het gaat bij Agile hoofdzakelijk om drie dingen, die onlosmakelijk met elkaar verbonden zijn.
Action!
Agile zegt dat je aan de slag moet, en wel met je eindproduct. Bouw je auto’s? Begin dan met het maken van auto’s. Bouw je software? Begin dan met het maken van software. Just do It! Je kunt natuurlijk nooit het gehele eindproduct in een keer goed opleveren, en dus maak je het product in stappen. Hiermee is de noodzaak van iteraties geboren. Dit is wat Agile gemeen heeft met RAD en vele andere methodieken zoals RUP.
Wat echter belangrijk is om te benadrukken, is dat een iteratie een compleet project is, waarin test, code, design en analyse wordt gedaan. En er dus software wordt opgeleverd. Binnen SCRUM wordt iedere iteratie ‘potentially shippable software’ opgeleverd, en shippable (voor ieder project) wordt vastgelegd in de ‘definition of DONE’.
Inspect and Adapt!
Maar actie is niet genoeg, want itereren is intensief, en dwingt tot het maken van keuzes, die niet altijd de beste zijn. De scope en ervaring is immers beperkt, zeker in het begin. Daarom is het van vitaal belang dat de kwaliteit van datgene dat wel wordt opgeleverd extreem hoog is. We zijn vaak geneigd om te denken dat perfectie onbetaalbaar is, en hoge kwaliteit duur. Het tegendeel is waar, hele hoge kwaliteit heeft een direct en een indirect voordeel.
Het directe voordeel is dat er veel minder ‘technical waste’ ontstaat. Als je voortdurend itereert, wil je zoveel mogelijk kunnen vertrouwen op alles dat al af is, al is het maar om het weer te veranderen. Dit is een groot verschil met RAD uit de jaren ’90. Mede door de grote druk om op te leveren, werd er veel geprototypt en geen extreme aandacht aan de kwaliteit besteed. Met het gevolg dat iedere iteratie meer achterstallig onderhoud ontstond, en RAD alleen slaagde bij kleine en minder kritische systemen.
Een indirect en misschien nog wel belangrijker voordeel is de focus op kwaliteit. Deze focus maakt een continue verbetering mogelijk. Kwaliteit is namelijk niet iets absoluuts, maar iets dat last heeft van ‘voortschrijdend inzicht’. We leren namelijk in projecten, en wat in een paar maanden geleden een goed idee leek, is misschien nu wel niet meer zo’n goede oplossing. Een continue focus op kwaliteit maakt het mogelijk om gedurende een heel project steeds beter te worden, en te convergeren naar een steeds betere oplossing.
Kwaliteit is niet beperkt tot de applicatie alleen, het geldt voor alle aspecten van een project. Dus ook het proces, het team, de architectuur, het project plan. Daarom zijn werkwoorden veel belangrijker dan zelfstandige naamwoorden:
Niet Het Plan, Het Functioneel Ontwerp, De Architectuur, De Methodiek, maar planning, designing, architecturing en methodiekeren™!Dit is wat veel van de concurrentie ook enorm irriteert aan Toyota Niet alleen scoren ze hoog op alle fronten van betrouwbaarheid, veiligheid en zijn ze inmiddels het grootste autobedrijf ter wereld, maar als er ‘ns een keer iets mis is bij ze, dan hebben ze dat ook in een mum van tijd hersteld! En ze zijn niet te beroerd om daarvoor de hele productie stil te leggen.
Elimate Waste!
Overbodige zaken dienen in een Agile proces te worden vermeden. Dit is wat in eerste instantie dient te worden begrepen als alleen maar dingen maken die de eindgebruiker nodig heeft. Daarom is er in Agile ook een sterke hang naar een ‘pull’ manier van werken, zoals Dell bijvoorbeeld zijn computers uitlevert . Dit is vooral duidelijk in Scrum in de vorm van de product backlog, die continu wordt geprioriteerd. Eindgebruiker moet niet al te letterlijk worden genomen, aangezien er veel meer belanghebbenden zijn in een project. Ook een Agile project gaat in beheer, en dus is er wel degelijk een noodzaak voor diverse soorten documentatie.
Maar ‘eliminate waste’ gaat verder. De meest effectieve vorm van communicatie is face-to-face, en dus hebben alle alternatieve manieren een vorm van waste. Vantevoren een groot ontwerp maken van een systeem (BDUF ) is een vorm van waste aangezien de communicatie over het ontwerp asynchroon en vaak in één richting verloopt. Veel vormen van waste in software development zijn door Tom en Mary Poppendieck beschreven in ‘Lean Software development’. Een belangrijke vorm van waste is ook task switching. Mensen die op meerdere projecten tegelijk werken zijn netto veel minder productief.
Samengevat
Agile is een manier van werken waarin mensen intensief samenwerken om een zeer hoog kwalitatief product op te leveren, waarin continu wordt afgewogen of het juiste voor de opdrachtgevers wordt gedaan, en er steeds wordt onderzocht wat er verbeterd kan worden.
“Agile is about delivering business value early and continuously.”
Het is mijn ervaring dat een Agile werkwijze discipline kost, veel discipline, waarin het moeilijk is om de kantjes eraf te lopen. Sexy? Welnee. Ik herinner me de woorden van een senior developer op zijn eerste Agile project: “ik vind er helemaal niets meer aan, we zijn alleen maar bezig met de klant zijn problemen, ik heb niet eens tijd om ’s een nieuw framework te onderzoeken”. Daarom is het ook een goed idee om een echt Agile team wat slack te geven, en bijvoorbeeld zoals Google doet, tijd te geven om zelf werk te verzinnen buiten het project.
- MichaelFranken's blog
- Login or register to post comments


Recent comments
3 years 15 weeks ago
3 years 17 weeks ago
3 years 18 weeks ago
3 years 18 weeks ago
3 years 21 weeks ago
3 years 31 weeks ago
3 years 31 weeks ago
3 years 31 weeks ago
3 years 38 weeks ago
3 years 39 weeks ago