Wednesday, November 21, 2007

Användbarhet som det lilla extra...

Användbarhet har inom systemutveckling länge betraktats som "det där lilla extra" som man kan ägna sig åt på slutet om det finns pengar kvar. DÅ ska vi göra ett trevligare användargränssnitt, DÅ ska vi bemöta användares feedback, DÅ ska vi titta på vad användarna egentligen vill ha..

Ungefär så har också testning av system betraktats under lång tid, fram till ungefär nu, då fler och fler utvecklare och systemägare börjar betrakta automattestning som en naturlig del av produktens utveckling som sker samtidigt med produktens design och produktionskod.

Att testning börjar få sin naturliga plats i det dagliga utvecklingsarbetet beror på att fler inser värdet av detta, att det på sikt kostar mindre att bygga ett testat system från början.

När skall användbarhet börja betraktas på detta sätt? Som en naturlig och kostnadsbesparande del av systemets tillväxt?

Forskning visar att användarorientering är den faktor som har störst vikt för en produkts framgång och livstid. Företag som satsar på kundorientering och som ägnar all sin kraft åt att bygga det kunderna verkligen vill ha och behöver är de som också har längst livskraft och blir mest framgångsrika.

Varför är det då så att utveckling av ett systems användbarhet fortfarande betraktas som "det lilla extra"? Varför betraktas användbarhetsexperter som något man gärna vill ha men inte har råd med? Hur kan man inte ha RÅD med den största framgångsfaktorn för ett datorsystem undrar jag? Att det sen finns användbarhetsutvecklare och interaktionsdesigners av olika kompetensgrad är naturligtvis lika självklart som att det finns olika kompetenta och erfarna programmerare, projektledare och beställare. Har man russinen i kakan har man större framgångspotential.

Och när man väl lyckats få resurser för en användbarhetsexpert, varför betraktas dennes resultat och dennes förslag ofta som något man gör om man får tid?

Min åsikt är att användbarhet skall ingå i det dagliga arbetet på samma sätt som testning och annan feedback. Om vi idag får feedback från driftsavdelningen att systemet står stilla, sätts alla resurser in för att lösa problemet och starta systemet igen. Om vi idag får feedback från användare att funktionen eller användargränssnittet är obegripligt, läggs feedbacken på hög att prioriteras vid senare tillfälle. Det bör vara samma "stop-the-line"-princip när användare har en ohållbar arbetssituation som när leveransen inte går att installera.

Och naturligvis finns det skillnader på en ohållbar arbetssituation och en ideal arbetssituation vilket produktutvecklare tillsammans med sin teammedlem användbarhetsutvecklaren får hitta ambitionen och gränserna för. Problemet är att all slags användbarhetsanpassning betraktas som det ideala och att det är alltför sällan som något betraktas som ohållbart idag, av andra än - användaren.

Användbarhetsutveckling ÄR systemutveckling.

Thursday, November 15, 2007

Produktägare - i Scrum och agil systemutveckling

Eftersom jag inte hittat någon svensk beskrivning av rollen som Produktägare och alla inte är anglofiler kommer här en sammanfattning av den utmanande och engagerande rollen. Baserat på info från bl.a:
www.scrumalliance.org
Kent Beck - Extreme Programming, Embracing change.
Kent Beck - User stories applied
och egen erfarenhet.

Produktägare
I Scrum och agil systemutveckling generellt, utses alltid en person som har yttersta ansvaret att representera kundens intressen, produktägaren. Denne utför sitt ansvar genom att identifiera och prioritera "user stories" (funktioner) inför varje inkrement av funktionalitet som skall byggas (iteration) . Produktägaren svarar på frågor från utvecklingsteamet under iterationen om vad som skall byggas och hjälper teamet att anskaffa nödvändig information från verksamheten . Produktägaren svarar inför verksamheten på frågor om systemets funktionalitet och prioritering.

Det är en förutsättning att vara tillgänglig för utvecklingsteamet, på plats, särskilt under iterationsplanering och demonstrationer.

Produktägaren hjälper teamet att vid behov lyfta ut funktionalitet ur en iteration eller skala ner åtagandet. Denna person kan komma från olika discipliner och kan naturligtvis använda sig av omgivande kompetenser och kundrepresentanter för att fatta beslut eller för att förstå innebörden av olika vägval och prioriteringar.

Produktägaren skall uppmuntra att systemet växer på ett sådant sätt att det möter speciella behov hos kunderna och marknaden.

Produktägaren ansvarar för ROI och att den funktionalitet som byggs motsvarar ett faktiskt och aktuellt behov hos verksamheten. Inom disciplinen Lean utökas denna roll till att ofta vara både initiativtagare, marknadsförare och del av teknisk utveckling av produkten, detta brukar kallas Produkt-champion.

Produktägaren är inte ensam
Produktägare är en ansvarsfylld roll som innefattar att försöka tillgodose och prioritera mångas intressen. Därför är det vanligt att produktägare omger sig med ett representativt kundteam och användbarhetsexperter där så möjligt. En användbarhetsexpert kan vara ett ovärderligt stöd i att förstå och tillvarata användares verkliga behov, vilket brukar vara nyckeln till en produkts framgång.

Utvecklingsteamet är också ett viktigt stöd till produktägaren genom att vara de som förklarar konskekvenser av olika vägval och prioriteringar, och att komma med förslag, idéer och ifrågasättanden och ständigt hjälpa produktägarens arbete framåt.

ScrumMaster/Projektledare är också ett stöd till produktägaren som beskrivs nedan.

Vad gör projektledaren då?

En projektledare som verkar i ett agilt utvecklingsprojekt har som huvudsaklig uppgift att undanröja hinder för teamet, att vara ett stöd för produktägaren att kommunicera med omvärlden och resten av organisationen, att stimulera och verka för metodförbättring och teamstärkande aktiviteter.

Projektledaren ansvarar för att synkronisera planering med verkligheten och kommunicera detta med intressenter. Projektledare underlättar kommunikation från kunder, användare, sponsorer, ledning mm till teamet och också kommunikationen internt i teamet, den som sker mellan produktägare och utvecklare exempelvis.

Inom Scrum kallas detta ScrumMaster för att rollen inte skall förväxlas med den traditionellt beskrivna projektledarrollen.

Vad som skett är ett skifte av vissa uppgifter till produktägaren, såsom vad som faktiskt skall utvecklas. Vissa uppgifter som traditionellt utförts av projektledare, som detaljplanering av aktiviteter har skiftats till utvecklingsteamet som gör detta under iterationsplaneringar. Inom agil systemutveckling har den kontrollerande uppgiften hos projektledaren ersatts med ofta och regelbundna demonstrationer av den utvecklade produkten, som hålls av utvecklingsteamet själva.

Produktägaren som kund
Produktägaren kan vara ensam kundrepresentant eller ta hjälp av flera kundrepresentanter genom exempelvis ett utvalt kundteam som kan innehålla testare, riktiga användare (inklusive drifts- och supportpersonal) och användbarhetsexperter.

Som kund finns uppgiften att skriva "user stories" (korta funktionsbeskrivningar) som sedan utvecklingsteamet kommer använda i sina planeringsmöten. Det finns flera anledningar till att kunden och inte utvecklarna skriver dessa.

Den ena är att user stories skall skriva på kundens och verksamhetens språk, inte på teknikernas språk. Det gör att kundteamet förstår vad som skall prioriteras och att produktägare och team kan förstå det verkliga värdet och syftet med en user story.

För det andra faller det sig naturligt att produktägaren och kundteamet som de primära visionärerna för produkten är de bästa att uttrycka produktens beteende.

För att skriva bra user stories behövs övning och erfarenhet. ScrumMaster och utvecklingsteam eller andra personer som har tidigare erfarenhet av detta kan assistera produktägare och kundteam för detta.

Det är också kunden som tillsammans med utvecklare skall formulera acceptanstester. För det är kunden som vet vad det förväntade resultatet av en user story är, vilka test som skall passeras för att den utvecklade funktionen skall anses som klar (för denna gång). Utvecklaren hjälper kunden att specificera och implementera testet.

Utmaningar för produktägaren
Att vara produktägare är en ansvarsfull roll. Några utmaningar som kan finnas är:
  • Motstå frestelsen att lägga till mer viktigt arbete under iterationen
  • Att vara inställd på att göra svåra och hårda prioriteringar under iterationsplaneringen
  • Balansera avnämares olika och ibland motstridiga intressen
Produktägaren är enligt min uppfattning den mest centrala personen i ett utvecklingsprojekt. Utan produktägare - ingen produkt.

Tuesday, May 1, 2007

Ingen blir en ScrumMaster genom certifikation

Den lättrörliga utvecklingsmetoden Scrum vinner popularitet och det certifieras ScrumMasters till höger och vänster tycker jag mig se. Jag vet fler certifierade ScrumMasters som aldrig arbetat som projektledare än projektledare som är certifierade ScrumMasters.

Med det vill jag säga att det går inte att gå på denna certifikation för att avgöra om en person är en lämplig ScrumMaster eller ej, som om det vore något nytt. Det behövs upprepas.

Sen är förhoppningsvis certifieringskursen givande för aktiva projektledare, men det är huvudsakligen genom andra källor man lär sig bli en bra ScrumMaster tror jag. Deltagande av mer erfarna personer i samma projekt, dvs mentorer, är den bästa källan enligt min uppfattning.

Sunday, April 15, 2007

Det gör ont för en ScrumMaster att inte vara Produktägare

Traditionellt har (den tekniska) projektledaren haft ett övergripande ansvar för att att kraven förmedlas till utvecklare så att rätt funktionalitet utvecklas. Projektledaren har sedan levererat en lösning till kunden, som alltför ofta fått funktionalitet som sedan inte används.

Med lättrörliga (agila) metoder såsom Scrum, XP (Extreme Programming) skjuts det ansvaret till kunden - den som faktiskt skall ha systemet. Det är kunden (i Scrum "produktägaren") som skall ansvara för den löpande kravställningen och att rätt värde levereras i dagligt samarbete med utvecklarna.

Det är detta jag anser som det mest tilltalande i de "nya" metodikerna. Det är självklart att det är kunden som bör ansvara för sin egen funktionalitet. Teknikerna, inklusive projektledaren, skall hjälpa kunden med den tekniska lösningen och med hjälp att formulera krav och förstå vad dessa innebär i omfattning.

Det låter ju enkelt och självklart. I praktiken har det dock visat sig svårt både för
mig som projektledare/ ScrumMaster och för kunden/produktägaren att till fullo förstå innebörden av omfördelningen av ansvar.

Det gör ont för en ScrumMaster att inte längre vara den som utvecklarna vänder sig till för svar på frågor om vad krav betyder. I längden gör det naturligtvis inte ont längre, ScrumMastern får istället tid till annat mer betydelsefulla uppgifter - för en projektledare, än att stå till svars för funktionalitet som inte används av verksamheten. Som ScrumMaster sitter jag ju inte på den verksamhetskunskap som krävs för att kunna definiera dess behov (!)

Ont gör det ändå, det är en omställning och all förändring är förknippad med ångest, som min käre kollega Mats Nyberg brukar säga. Även min egen förändring är subtilt ångestfylld trots att det är jag själv som är min egen förändrings ivrigaste aktivist.

Det är en omställning som tar ifrån mig de uppgifter jag är van att ha, och som vi vet är vanor svåra att bryta, och särskilt dåliga sådana!

Jag är tacksam för att kunden börjar ta sitt ansvar för sin egen funktionalitet, med hjälp av mig, det är den enda riktiga vägen att gå. Men det är först efter lärandet inträffat som lusten finns där på riktigt.

Sunday, April 8, 2007

Är en projektledare administratör eller tekniker?

Den erfarne beställaren av systemutvecklingsprojekt vet att det behövs en tekniker i rollen som projektledare, någon som själv arbetat som systemutvecklare och som är utbildad inom teknik för att projektet skall lyckas, dvs leverera funktionalitet till ett acceptabelt pris som beställaren och dess kunder faktiskt kommer att använda.

En icke-tekniker kan vara en aldrig så god organisatör, men utan den nödvändiga insikten i systemutvecklingens art och problem kommer inte den tekniska lösningen nå ända fram.

Därför finns det en rollbeskrivning "teknisk projektledare" idag som vad jag sett framför allt används inom IT-projekt och byggprojekt.

Vad gör då en teknisk projektledare jämfört med den vanlige "projektledaren" vars efterfrågan jag har sett inom många andra branscher?

Jag ställer mig ofta frågan istället, vad BÖR en teknisk projektledare egentligen göra? Idag uppfattar jag att rollen innehåller till hälften administrativa uppgifter - såsom lokalbokning, allmän facilitering, inköp mm.

Till hälften utför projektledaren tekniska uppgifter, såsom att vara ett metodstöd för beställaren, att tillsammans med beställare och utvecklare fatta tekniska beslut, införa verktyg, hjälpa beställaren med kravformulering, kommunicera det tekniska framskridandet med intressenter mm.

Den första administrativa uppgiften, är minst lika viktig som den andra tekniska delen, utan den första kan knappast den andra fungera. Jag ställer mig dock två frågor:

* Är det ett effektivt utnyttjande av resurser att en systemvetare/dataingenjör/IT-ledare till hälften arbetar med administration? Alla yrken innehåller administration men när blir graden av administration så hög att det inte längre är kostnadseffektivt att låta den i andra områden utbildade och kompetenta personalen utföra uppgifterna?

* Om det är naturligt att projektledarrollen skall innehålla en stor del administration, hur skall organisationer, konsultfirmor mfl lyckas behålla tekniskt kompetent personal i den rollen? Med vad skall de tekniska personerna lockas för att stanna kvar i sin roll som projektledare? För någon som en gång varit utvecklare och tekniker är det svårt att se egna utmaningar och utveckling i administratörsrollen. Det är de tekniska problemen teknikern som projektledare vill hjälpa beställaren att lösa.

Många sk tekniska projektledare väljer någon av dessa två vägar:
* Blir utvecklare igen, kanske något mer specialiserad på metodstödsroll
* Blir verksamhetsutvecklare eller chef (över t.ex andra projektledare)

Så hur ska man behålla teknisk personal som projektledare för tekniska projekt?

Jag ser två sätt:
Det ideala: Projektet får tillgång till administrativ personal för visst organisatoriskt stöd. Med största sannolikhet skulle en sådan uppgift inte ta lika mycket tid i anspråk för en administratör som är en betydligt mer professionell utövare med bättre insikt i tillgängliga rutiner och med befintligt kontaktnät och nödvändiga systemstöd.

Jag träffar administratörer som mer än gärna skulle delta mer aktivt i olika utvecklingsprojekt, därför tror jag att sådan roll skulle uppskattas även av många av dem.

Gemensamt ansvar för uppgifter: Om den tekniska projektledaren sågs på som just en tekniker, som andra i teamet, men med särskilda organisatörsuppgifter, skulle de administrativa arbetsuppgifterna delas lika mellan alla deltagare i projektet. Den spontana reaktionen från utvecklare tror jag skulle bli "men jag skall ju programmera", men - den spontana reaktionen från den tekniska projektledaren borde bli för samma fråga "men jag skall ju hjälpa beställaren att bygga system!"

Delar man de administrativa uppgifterna lika mellan deltagarna i ett projekt blir bördan betydligt mindre, och alla kan ägna sin tid åt det de är där för att göra - teknisk utveckling.

För stunden tar jag oftast rollen som teknisk projektledare med allt vad det innebär, men om inget snart ändras vad gäller fördelningen av administrativa och tekniska uppgifter kommer jag också göra som de andra:
antingen bli enbart utvecklare igen eller
bli verksamhetsutvecklare och chef.

och då står världen återigen med en teknisk projektledare mindre.