|
Snygg lösning på fel problem
2005-04-18 09:18 sista ordet
Många anser att om utvecklade program leveras i tid så
är projektet lyckat. Om programmet dessutom inte kostar
mer än beräknat så har projektet lyckats ännu bättre.
Jag har dock varit inblandad i projekt som varit både
försenade och kostat för mycket, men som ändå blev
lyckade därför att kunden fick ett system betalade sig
snabbt, vilket gjorde kunden väldigt nöjd (till slut).
Så hur man än vänder och vrider på det så måste man nog
säga att det ultimata testet om projektet är lyckat ofta
beror på om kunden är nöjd eller ej.
Så hur gör man för att utveckla program som gör kunden
nöjd?
Nyckeln är att förstå vad som är viktigt för kunden. Som
utvecklare är vi ofta kreativa och är bra på att komma
fram med lösningar. Saken är dock att vi tenderar att ta
fram snygga lösningar på fel problem.
Det kan ställa till med svårigheter.
Ett exempel:
Vi startade ett projekt för att utveckla ett verktyg för
att analysera källkod. Vi anställde en smart
programmerare för att göra jobbet. Kunden förklarade för
programmeraren hur det var tänkt att verktyget skulle
fungera och vilka funktioner som var viktigast.
Programmeraren var kreativ och föreslog snart en rad
tilltalande funktioner. Kunden tackade för förslagen,
funderade en stund och meddelade att detta var
funktioner som inte var nödvändiga. Funktionerna skulle
därför inte införas.
Programmeraren blev mycket upprörd och förklarade att
kunden skulle få funktionerna i stort sett gratis
eftersom grovjobbet redan var gjort.
Kunden blev nu också upprörd och ansåg att
programmeraren skulle fokusera på de funktioner som var
viktigast, inte de som var enklast att implementera.
Diskussionen slutade med att vi enades om att
programmeraren kunde föreslå funktioner, men att kunden
är den som bestämmer vilka funktioner som ska införas
och i vilken ordning.
Faktum är att vi har tillämpat denna princip mer och mer
därför att den gör alla inblandade nöjda. Vi anordnar
arbetsmöten där varje kundrepresentant (inklusive
slutanvändare) får berätta vad som är viktigast för
dem.
Vi skriver ner alla önskemål så att inget önskemål glöms
bort. Om ett önskemål är oklart så diskuterar gruppen
tills alla förstår vad det innebär.
När alla önskemål är nedskrivna så är det utvecklarnas
tur att bedöma hur mycket arbete varje önskemål medför.
När kundrepresentanterna vet hur mycket varje önskemål
kostar så är kan de prioriterera och välja vilka
önskemål som ska genomföras inom den utsatta tidsramen.
Mötet avslutas när kundrepresentanterna har enats om en
lista med krav som ryms inom tidsramen.
När kraven är genomförda så träffas gruppen igen för ett
nytt möte då implementeringen utvärderas och nästa
omgång önskemål och krav planeras på samma sätt igen.
Det första mötet kan vara trevande, men efter ett antal
möten formas en gruppkänsla som gör att de flesta känner
att projektet är på rätt väg. Förklaringen är att
kundrepresentanterna känner att utvecklarna lyssnar och
förstår vad som ska prioriteras. Utvecklarna får
dessutom en känsla för vad som är viktigt och behöver
inte ägna dyrbar tid åt att införa funktioner som inte
behövs.
Det som kanske är mest slående är att principen är
enkel. Den är inte ny eller revolutionerande heller.
Jag har varit med i projekt på Ericsson där man
tillämpade detta med stor framgång. Kent Beck
förespråkar något liknande för kravhantering i Extreme
programming.
Den enda haken är att man måste ha tillgång till
kundrepresentanter, vilket kan vara ett nog så svårt
problem och får bli ämnet för en annan krönika.
Mikael Lindvall |