Hvad er agil udvikling ?

Der er mange "grene" under agil udvikling, som RUP, SCRUM, XP og andet og det kunne derfor være meget interessant at finde frem til denne gruppes medlemmers "mening" om hvad der er de vigtigste elementer i de forskellige metoder.

Så jeg vil foreslå at i svarer på dette indlæg og ligger de 3 elementer ind som i mener er de vigtigste vedrørende agil udvikling...

Ex fra mig selv:

-Mennesker over processer
-Skræddersy processen til opgaven (mix metoder som SCRUM og RUP til formålet)
-Test drevet udvikling

Jeg vil så på et senere tidspinkt når mange har svaret prøve at samle denne info op...

 
Det er muligheden for at agere, så længe det er for at opnå ...

Jeg ser du har læst Agile Manifesto! ;-)

En væsentlig forskel og opgør med de traditionelle tanker om udvikling og processer er at det er "god mantra" ikke slavisk at styre de involverede, men at man som involveret selv kan agere som man ser bedst i situationen...

Målet er dog ikke til at flytte med, som jeg ser det: Du skal optimere mod at udvikle de rigtige produkter, så effektivt som muligt og med den forventede kvalitet!

Hér støder vi så ind i både den størst styrke og svaghed ved agil udvikling, da de færreste udviklere egentlig er specielt gode til at udvikle og indføre processer. Hvor meget ved ingeniører f.eks. om de mekanismer, der optimerer et team, når de forlader skolen?

Jeg har set mange eksempler på - i god mening - at agil udvikling er brugt som undskyldning for ren cowboy-programmering, med dårlige resultater og bestemt ikke særlig effektivt!

Egentlig mener jeg at agil udvikling IKKE kan opfylde sin målsætning ved at give alle ret til at gøre som man vil!
I praksis er metoder som XP og Scrum også meget rigide på nøgleområder (de kan IKKE afviges), men meget åbne for justering på andre. Jeg vil derfor ikke mene at din anden bullet er helt rigtig! Den vil kun gælde, hvis der er proces-kompentencer involveret der kan gennemskue de kort- og langsigtede konsekvenser ved den "mix" du ønsker at lave! Ellers bliver det ren søg-og-du-vil-MÅSKE-finde en metode/proces, der er mere effektiv end udgangspunktet! Det lykkes stort set aldrig!

Dét som agil dog betyder er at man som involveret til enhver tid har kontrol over sin egen situation, indenfor visse rammer. Man beholder muligheden for at agere selvstændigt - om ikke andet så indenfor et team. Men det er IKKE absolut personlig frihed til at mixe som man vil!

  • Stem op 0
  • Stem ned 0
 
Angrib risici fra dag ét

Interessant emne.

Da jeg for nylig stillede mig selv spørgsmålet om hvad er agile er for en størrelse kom jeg frem til følgende

  • Projektets risici angribes aggressivt fra dag ét.
  • Teamet har beslutningskompetence, men skal stå til ansvar for følgerne.
  • Alle på teamet har ansvaret for at forbedre processen.

Jeg har faktisk lige skrevet et blog-entry om emnet. Niels, du er velkommen til samle info derfra også. Læs det her http://www.bestbrains.dk/blog

Jeg ved du er af en anden opfattelse Niels, men jeg anser egentlig ikke RUP for at være en agile metode ;-)

Kurt -- Jeg tror dit eksempel på cowboy-kodning er det mest almindelige "agile" anti-pattern :-) Jeg synes egentlig det er et tegn på at et ledelsesproblem, hvis man ikke formår at sammensætte teams med en ordentligt mix af erfarne og uerfarne. Man kan sige sig selv, at hvis man sætter fem folk uden agile erfaring i et rum og siger de skal arbejde "agilt" -- Så bliver det svært :-)

  • Stem op 0
  • Stem ned 0
 
Filosofi frem for teknik

Det Agile (adrætte?) manifesto giver et meget godt bud på nogle vigtige agile elementer. Jeg tror ikke at det giver så meget mening at forsøge at rangordne disse elementer på en absolut skala.

Hvilke elementer, som er vigtigst, vil altid afhænge af den konkrete situation i det firma/projekt, hvor de agile metoder skal anvendes. Hvis automatiserede tests ikke tidligere har været en del af firmaets værktøjskasse, så er det nok en god ting at fokuserer på dette element. Omvendt, hvis der er styr på testene, så kan den være man skal fokuserer på "Responding to change over following a plan" eller en af de andre elementer.

Men jeg tror at det at være "agil" handler langt mere om den indstilling man har til sit projekt og til sine kunder, end det handler om præcis hvilke konkrete processer man følger. Det handler om at have lyst til at arbejde tæt sammen med kunden, at have lyst til at lytte til brugerens ændringsønsker, lyst til at leverer det produkt kunden ønsker, frem for at blot at leve op til kontraktens krav osv. osv.

  • Stem op 0
  • Stem ned 0
 
Filosofien i centrum

Jeg tror, ligesom Nicolai, at man skal have filosofien frem i bussen hvis man skal sige hvad det er der kendetegner Agile.

Min tolkning af termet Agile er at det handler om at være forberedt på ændringer i alle dele af din udviklingsprocess.

Accepterer man der er der en masse ting der pludselig naturligt følger i halen på det, eksempelvis følgende:

  • Det giver ikke mening at lave store rigide designdokumenter. De ændrer sig alligevel hele tiden. Skriv det ned folk har brug for for at være orienteret. Hold alt andet i fleksible systemer der nemt lader sig ændre (Wiki, issue tracking).

  • Hav altid et automatiseret test miljø kørende på alt der kan automatiseres. Når noget ændrer sig i dine forudsætninger skal du hurtigt kunne opdage hvad det er og løse det.

  • Hav så fleksible organisationsprocesser som muligt, det skal ikke tage en krig at mande op eller ned på et projekt.

Jeg synes også at anvar er en key driver i Agile. Alle involverede skal føle at de gør en forskel og skal være i stand til at tage handsken op når der er knas nogen steder.

Det er altså ikke noget der opstår af sig selv. Man skal facilitere det hele tiden. Hvis man har et eksisterende team der skal være agile skal man hele tiden være der og fordre de ændringer der skal til. Folk er vanedyr og falder hurtigt tilbage i cowboy eller BDUF mentaliteten hvis man lader dem. Slutteligt er det to skridt frem og et tilbage hele tiden. Det tager tid. Og der går tid før man ser resultater. Min overbevisning er så at det er det hele værd.

  • Stem op 0
  • Stem ned 0