De filosofie van Agile Software Development

2007-10-15 APLN: Alistair Cockburn

Image by orcmid via Flickr

Ik ben de laatste maanden intensief bezig geweest met het boek Agile Software Development – The Cooperative Game van Alistair Cockburn. Meestal lees ik boeken veel sneller maar dit boek dwong me steeds om te reflecteren, gaf me continu ideeën voor toepassingen. Maar nu is het boek uit, en dus is het tijd voor een bespreking. In deze eerste blog de filosofische basis.

Deel 0 van het boek begint filosofisch: “wat kunnen we eigenlijk weten?”, wat is “knowable”, en wat kan je wel of niet communiceren en documenteren? Alistair’s antwoord is dat perfect weten en communiceren niet mogelijk is, maar dat dit niet betekent dat we helemaal niets meer kunnen doen. Het geeft tegelijkertijd wel aan dat we niet onze ‘ziel-en-zaligheid’ moeten koppelen aan een bepaalde methode of document, want het zal altijd beperkt zijn.

Het beschrijven en aanleren van methoden kan het beste gebeuren aan de hand van de Shu-Ha-Ri aanpak vanuit Aikido. In de Shu-fase, kopieert de leerling exact het voorbeeld van de leraar. De leraar geeft eenduidige instructies, alsof er maar één goede methode bestaat. In de Ha-fase neemt de leerling afstand van de leraar, reflecteert op het geleerde en komt zodoende tot een dieper begrip van het geleerde. Hier wordt duidelijk wat de beperkingen van de methoden zijn, en wordt helder dat er meerdere goede methoden zijn om een taak uit te voeren. Tenslotte in de Ri-fase gaat de leerling boven het geleerde uit. De leerling wordt ‘practitioner’. De leerling volgt de methode niet meer, maar weet intuïtief wat de juiste werkwijze is in iedere specifieke situatie.

Ik herken dat vanuit mijn eigen praktijk. Als ik een cursus geef, bijvoorbeeld mijn “Intro Agile/Scrum” dan laat ik heel veel weg, houd ik het heel simpel en beschrijf ik meestal maar 1 manier om het werk te doen. Terwijl ik, als ik als consultant een afdeling of project begeleid,

veel meer variatie aangeef. “Je zou het zo kunnen doen, maar ook anders, probeer eens wat je het beste bevalt”.

Bijlage B wordt echt filosofisch, in een bespreking van het werk van Pelle Ehn wordt software ontwikkeling besproken in termen van het werk van achtereenvolgens Descartes, Marx, Heidegger en Wittgenstein.

Software ontwikkeling volgens Descartes bouwt een zo exact mogelijk model van de externe werkelijkheid. Als we werken in de stijl van Marx stellen we allereerst de vraag naar wie profijt gaat hebben van het te bouwen systeem. In de lijn van Heidegger is het systeem een tool dat de gebruiker zo min mogelijk moet zien, maar dat hem zoveel mogelijk moet ondersteunen. Wittgenstein is bijna tegengesteld aan Descartes. De bouw van een design is een taalspel dat zich gedurende het ontwerpen ontwikkelt, er worden steeds nieuwe woorden/begrippen aan de taal toegevoegd.

Cockburn ziet software ontwikkeling als een spel (a cooperative game of invention and cooperation), en volgt daarin dus de lijn van Wittgenstein.

Wittgenstein ziet de taal die we gebruiken om een design of requirements vast te leggen

als ‘reminders for our reflections’. Die uitspraak doet me sterk denken aan de definitie van een ‘user story‘; ook dat is geen definitieve beschrijving van het systeem maar een verhaaltje dat ons helpt herinneren aan de discussie die we daarover hadden met de gebruikers. Ook het gebruik van metaforen past prima in deze denkwijze.

Een prachtig voorbeeld van de (on)mogelijkheden van taal komt ook weer van Wittgenstein: “vergelijk eens wat je kan weten en zeggen over (1) hoe hoog de Mont Blanc is, (2) hoe we het woord ‘spel’ gebruiken en (3) hoe een clarinet klinkt”. Zeker dat laatste valt niet of nauwelijks in woorden uit te drukken! Zo zijn er ook veel aspecten van een ontwerp die niet of nauwelijks te documenteren zijn, zeker niet voordat er een concrete vraag gesteld wordt over hoe een systeem uitgebreid zou kunnen worden.

De volgende blog bekijkt software ontwikkeling als game, in plaats van als ‘engineering’.

Advertisements

About André Heijstek

Rijnlands / Agile verbeteren van software ontwikkeling
This entry was posted in Agile, boekbespreking. Bookmark the permalink.

3 Responses to De filosofie van Agile Software Development

  1. Pingback: Software ontwikkeling is geen engineering en zal het ook nooit worden | Andre Heijstek's Blog

  2. Marnix says:

    Lijkt me een boeiend boek. Vraag me af wat de bedoeling is van de koppeling van softwareontwikkeling aan de genoemde filosofen. Suggereert het dat de verandering van exacte nabootsing naar een proces dat als ‘spel’ aangeduid wordt (iteratief, hoge graad van improvisatie)?

  3. Hallo Marnix,
    Ja dat zie je goed. Te lang zijn we ervan uit gegaan dat software ontwikkeling (meer algemeen: kenniswerk) volledig deterministisch is, en dus in detail vooraf gepland en gemodelleerd kan worden. Langzamerhand breekt steeds meer het inzicht door dat software ontwikkeling een complex systeem is, waar oorzaken niet altijd direct met gevolgen gekoppeld zijn. En dus moeten we anders gaan managen. Agile is hiertoe een poging. Het werk van Cynefin (zoek maar op Wikipedia) een andere.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s