Focus op Agile Development

In februari 2001 is een grote groep wijze mannen uit de software industrie bij elkaar gekomen om over het software ontwikkelproces te praten. Zij hebben daar toen het Agile Manifesto opgesteld. Ik onderschrijf hun bevindingen en heb me dan ook als supporter van het Agile Manifesto aangemeld. Op deze pagina's breng ik het Agile Manifesto en de daarbij horende methodes onder de aandacht. Bovendien geef ik mijn visie daarop en de maatregelen die ik daarbij neem.

Manifesto for Agile Software Development

We are uncovering better ways of developing software
by doing it and helping others do it.
Through this work we have come to value:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on the right,
we value the items on the left more.

subscribers20-20original

Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler
James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick
Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas

Principles behind the Agile Manifesto

We follow these principles:

  • Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  • Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
  • Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  • Business people and developers must work together daily throughout the project.
  • Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  • The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  • Working software is the primary measure of progress.
  • Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  • Continuous attention to technical excellence and good design enhances agility.
  • Simplicity--the art of maximizing the amount of work not done--is essential.
  • The best architectures, requirements, and designs emerge from self-organizing teams.
  • At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.


De ondertekenaars van dit Manifesto zijn de grondleggers of vooraanstaande afgevaardigden van de diverse Agile methodieken zoals RAD, eXtremeProgramming, Scrum, DSDM en Cristal Clear. Ze hebben diverse publicaties over Agile Development op hun naam staan. Als je de boeken die zij hebben geschreven allemaal in je bezit hebt dan heb je een aardige boekenkast vol.

Ik beweer hier niet alle ins en outs van al deze methodieken te kennen maar globaal ken ik de meerderheid wel. De methoden verschillen qua insteek maar allen kenmerken zich door de stelling van het Agile Manifesto. De methode waar ik de meeste kennis en ervaring mee heb is DSDM. Ik heb de DSDM practisioners opleiding gevolgd en ben voor het mondelinge examen geslaagd. Ik mag me dan ook een gecertificeerd DSDM practisioner noemen, met bijbehorend speldje. Met behulp van deze methodiek heb ik diverse erg succesvolle projecten gedraaid en ik sta dan ook volkomen achter de DSDM aanpak en achter de Agile aanpak in het algemeen. Vandaar dan ook dat ik mijn bedrijfsnaam erop gebaseerd heb: Agile Focus. informatie met betrekking tot DSDM is te vinden op de website van het DSDM consortium: www.dsdm.nl en www.dsdm.org. De DSDM methode kenmerkt zich doordat het een raamwerk biedt dat de gehele levenscyclus van het ontwikkelproces ondersteunt. Daarbij steunt het op 9 principes. 

dsdm1. DSDM teams must be empowered to make decisions
2. The focus is on frequent delivery of products
3. Fitness for business purpose is the essential criterion for acceptance of deliverables
4. Iterative and incremental development is necessary to converge on an accurate business solution
5. All changes during development are reversible
6. Requirements are base lined at a high level
7. Testing is integrated throughout the lifecycle
8. A collaborative and co-operative approach between all stakeholders is essential
9. Active user involvement is imperative


Misschien wel het belangrijkste statement wat ik heb overgenomen uit de DSDM methode is het volgende : "Build the right product before you build it right".
Bouw het goede voordat je het goed bouwt. Ik heb te vaak gezien dat mensen producten helemaal specificeren, bouwen en testen om er dan bij de presentatie ervan aan de klant achter te komen dat het niet geworden is wat de gebruiker wilde. Door gebruik te maken van prototypes en daarmee snelle terugkoppeling aan de klant kan voorkomen worden dat de verkeerde dingen gebouwd worden. Daarna is het nog zaak (en niet onbelangrijk) om het goed te bouwen.
Ik denk dat dit dan ook mijn sterkste punt is. Mijn focus ligt bij de klant. Ik kan me erg goed verplaatsen in wat de klant wil. Ik ben sterk in de omgang met eindgebruikers en daarmee met het bepalen wat de werkelijke eisen en wensen van een klant zijn. Kortom, in het identificeren van het goede product en het vervolgens uitwerken tot een goed product. 

Niet overal kan de DSDM methode ingezet worden. Het niet toepassen van DSDM is dan ook geen blokkerende voorwaarde om projecten te doen. Echter, je kunt wel het volgende van toepassing laten zijn:

"You can use all of DSDM most of the time and most of DSDM all of the time."

Bepaalde aanpakken en technieken van DSDM zijn in elke projectsetting te gebruiken en dragen bij aan het succes ervan.

 
In de loop van de tijd ben ik tot de onderstaande lijst van punten gekomen die volgens mij een project tot een succes maken.

  • De inzet van eindgebruikers is noodzakelijk om snel te kunnen schakelen en de juiste oplossing neer te zetten
  • De eindgebruikers moeten gemachtigd zijn om beslissingen te nemen. Wacht niet op lang durende terugkoppelingen.
    Desnoods bouw je één van de mogelijkheden en geef je aan dat als er een andere oplossing uiteindelijk noodzakelijk is en dat die alsnog gebouwd gaat worden (All changes are reversible).
  • Welke eindgebruikers? Degene die het slechts gemist kunnen worden. Als de klant het systeem belangrijk genoeg vind dan moeten die eindgebruikers ook vrijgemaakt kunnen worden. E.e.a. toont het commitment van de opdrachtgever.
  • Niet 100% van de tijd in het project, eindgebruikers mogen het contact met de werkvloer niet verliezen. Ook niet in iedere fase even veel.
  • Stelt wel eisen aan de ontwikkelaars. Niet iedereen kan even goed op een Agile manier werken.
  • Build de right product before you build it right. Gebruik prototypes. Gebruikers weten pas waarvoor ze kiezen als ze het gezien hebben.
  • Verwachtingsmanagement vereist. Een prototype is geen werkend systeem ook al lijkt het dat wel te zijn (of het uiteindelijk ook wordt).
  • Focus is op voortgang. Maak gebruik van zoveel mogelijk beschikbare componenten maar focus je in 1e instantie niet op de bouw ervan.
  • Kies de simpelste oplossing die mogelijk zal werken.
  • Een timebox/iteratie kan nooit uit alleen Must Have's bestaan. De definitie van een Must Have betekent dat er zonder die requirement er geen werkend systeem is. Should en Could Have's zijn noodzakelijk om als "wisselgeld" te dienen.
  • De bouw van een Could Have kan veel bijdragen aan de acceptatie van het systeem.
  • Test zo vroeg mogelijk, laat de eindgebruikers dit al doen.
  • Niet iedere ontwikkelaar kan zich erbij neerleggen dat hij soms 80% oplossingen moet opleveren.
    Of dat wat hij gemaakt heeft maar een tijdelijk doel dient en opnieuw gedaan moet worden.
  • Maximaliseer de hoeveelheid werk die je niet hoeft te doen.
  • Alles wat je doet moet een doel hebben. Anders doe je het niet.
  • Visualiseer zoveel mogelijk, ook de requirements en de voortgang van je project. Gebruik Low-Level tools zoals brownpapers en post-its.
  • You can use all of DSDM most of the time and most of DSDM all of the time.
  • Goede Tooling helpt (snel prototypen, genereren e.d.) maar bedenk:
    "A fool with a tool is still a fool!" (Misschien zelfs nog wel een gevaarlijkere fool).