Agilt är en attityd styrd av värderingar

Facebooktwittergoogle_plusredditpinterestlinkedinmailFacebooktwittergoogle_plusredditpinterestlinkedinmail

Agilt är en attityd

Alldeles nyligen fick jag möjlighet att lyssna på deltagare som gick en kurs i agil kravhantering där det fördes bra diskussioner kring en sådan brännhet fråga som agilitet och kravdokumentation. Av deltagarnas berättelser och funderingar framgick det att det fanns personer i deras omgivning som hävdar saker om agila metoder som inte är korrekta. Inte förvånande men beklämmande. Tyvärr sprids det fortfarande missförstånd som är direkt värdehämmande. Speciellt när det gäller kravhantering ställer detta till det för många verksamheter. Scrum, Kanban, XP, Test-driven development (TDD), etc., är alla vägledande paketeringar av hur man kan arbeta agilt. Men paketeringarna är på intet sätt kompletta eller dogmatiska. Agilt arbetssätt garanteras inte av en metod. Agilt är en attityd styrt av värderingar.

Källan till det agila förhållningssättet är sammanfattat i det agila manifestet. Ett manifest, generellt sett, är en programförklaring och således det som utgör grunden för en ideologi och som uttrycker principer, policies eller intentioner. Det agila manifestet är således fundamenetet och principerna som ska leda vårt arbetssätt. Det sammanfattas i 4 meningar och ett förtydligande.

  1. Individer och interaktioner framför processer och verktyg.
  2. Fungerande programvara framför omfattande dokumentation.
  3. Kundarbete framför kontraktsförhandling.
  4. Anpassning till förändring framför att följa en plan

Det vill säga, medan det finns värde i punkterna till höger, värdesätter vi punkterna till vänster mer.

Det finns alltså värde i det till höger. Allt annat är en vantolkning av det agila manifestet.

Missförstånd 1: Agilt innebär att man inte dokumenterar krav.

Ett agilt arbetssätt gör i grunden upp med kravhanteringsprocesser som säger att alla krav ska samlas in och komplett dokumenteras innan utvecklingsarbetet tar vid. Men det agila manifestet säger ingenting om att man inte ska dokumentera krav. Det agila manifestet försöker kommunicera en inställning som säger att det inte är värdefullt att fokusera på att skriva omfattande kravspecifikationer – syftet är ju trots allt att skapa ett fungerande system. Agilt innebär att man reflekterar över hur mycket som ska skrivas och när – om alls – man ska skriva färdigt dem. Följande bild illustrerar alltså principiellt ett icke-agilt angreppssätt:

Stor kravspecfikation klart från start

Notera: icke-agilt angreppssätt. Det betyder inte att kravdokumentationen måste elimineras. Den stora utmaningen är istället att avgöra om det finns kravdokument som eventuellt är värdefulla, hur de ska se ut och på vilket sätt de ska tas fram. Detta är något som varje organisationen själv måste komma fram till. Fråga exempelvis vad som händer om de tas bort. Vem saknar dem och varför? Vilka problem uppstår? För kortlivade system eller produkter så kan det vara direkt värdeslösande att dokumentera krav. För mer långlivande eller komplexa system eller i en föränderlig organisation kan det vara mer värdefullt.

Om någon ser ett värde i att strukturerat dokumentera krav så kanske det finns ett värde i det och då ska det kanske göras. Beskriv gärna det värdet och kommunicera till alla involverade. Och tänk på att bara för att du inte har hört någon säga det betyder inte att det inte finns någon som har behovet. Lika lite som det kan vara programmerna som kommer att använda systemet, lika lite kan det vara programmerna som har användning av dokumentationen. Kanske är det produktägaren som har stöd av ett sammanhang och en förståelse för all egenimplementerad funktionalitet i ett standardsystem? En begränsad, användbar dokumentation fyller därmed ett värde och kan på ett agilt sätt tas fram inkrementellt. Det agila förhållningssätt kan således se ut så här:

Inkrementell kravspecificering

Hur kraven sedan ska dokumenteras för att nå det rätta värdet kan diskuteras. Och då kommer vi till missförstånd #2.

Missförstånd 2: Användningsfall är inte agilt och definitivt inte Scrum.

Vi börjar med att användningsfall inte är agilt. För det första har jag tidigare konstaterat att det agila manifestet förtydligar att det finns ett värde i dokumentation. För det andra måste inte användningsfall betyda omfattande dokumentation. Faktum är att de väldigt sällan bör betyda det. Om ni exempelvis har över hundra användningsfall för ett system har ni troligen gjort något fel (troligen råkat göra funktionell nedbrytning).

För det tredje måste inte alla användningsfall bli ”färdiga” innan inkrementen påbörjas. Faktum är att det är en utopi att tro att ens ett enstaka användningsfall kan skrivas helt korrekt och komplett innan implementation tar vid. 60-90% färdigt kan det möjligen bli innan första kodraden skrivs men komplett kan det inte bli förrän under utvecklingsarbetet. Det betyder inte att det måste göras komplett. Vill man förvalta sin kravdokumentation, vilket betyder att den ska beskriva faktisk implementerad funktionalitet, så bör man ha en aktivitet i sina inkrement som innebär uppdatering av kravdokumentationen.

Det går således utmärkt att ha ett agilt förhållningssätt till användningsfall. De är ett utmärkt modelleringsverktyg för att förstå vad man ska göra innan man börjar designa och implementera. Och du måste alltså inte förvalta dem.

Och så lite mer ved på elden: Alistair Cockburn /ˈkbərn/, en av de som varit med och formulerat och undertecknat det agila manifestet, har också skrivit boken ”Writing effective use cases”. Och tidigare har jag skrivit om Ivar JacobssonAnvändningsfall 2.0. Till och med Dean Leffingwell tar i sin bok ”Agile software requirements” upp användningsfall (och hänvisar till Alistair!).

Scrum då? Är inte det synonymt med användarhistorier? Nja, Scrum i sig förespråkar inte användarhistorier. Visst har användarhistorier blivit i det närmaste synonymt med agila metoder i allmänhet men det är inte ett måste att använda det. Ken Schwaber och Jeff Sutherland, upphovsmännen till Scrum, har skrivit den definitiva guiden till Scrum. Inte på ett enda ställe står det att krav ska skrivas som användarhistorier. Vad det däremot står är backlogen fylls på med poster – men ingenting om att dessa poster ska vara användarhistorier. Det kan alltså vara det men måste inte.

Användarhistorier är ett sätt att beskriva vad användare vill göra med systemet och fungerar som en bas för att utveckla systemfunktionalitet. Det används mycket i agila angreppssätt men det är inte nödvändigt att göra så i Scrum och det är definitivt inte det enda sättet att fånga underlaget för att bygga systemfunktionalitet. Användarhistorier räcker inte för att förstå vad som ska byggas (kvalitetskrav, acceptanstest, …). Och det är sannerligen inte det bästa sättet att dokumentera förvaltningsbart (sammanhang saknas).

Värdering, attityder och beteenden

Beteenden är lätta att påverka, attityder är svårare att ändra, värderingar upplevs ofta som orubbliga. Kanske är det därför agilt arbetssätt kan vara svårt att få till?

Sammanfattningsvis: agilt är en attityd som styrs av värderingar. Det är allt. Paketeringar i form av Scrum, Kanban, etc., ger dig praktiska råd och riktlinjer – ett beteende – att följa. Resten måste anpassas till din organisations behov. Bilden ovan är en generell illustration av vad som styr individuella handlingar. Beteendet är det omgivningen tar del av. Detta styrs av de under ytan dolda attityderna som i sin tur styrs av de grundläggande värderingarna.

Långsiktigt förändring kräver förändring av värderingar och framförallt attityder. Att direkt applicera Scrum eller Kanban kan ses som kognitiv beteendeterapi men alla svaren ligger inte i metoden. Det finns inte heller en färdig metod eller ett färdigt arbetssätt som passar för alla organisationer och verksamheter. På sikt måste man förstå principerna, attityderna och förhållningssättet. Arbeta med ledarskapet. Finns inte förutsättningarna eller om du bryter mot någon princip – ja, då kan du naturligtvis inte förvänta dig att få alla de vinster som angreppssättet utlovar.

Facebooktwittergoogle_plusredditpinterestlinkedinmailFacebooktwittergoogle_plusredditpinterestlinkedinmail