h1

Prototype Driven Development – En utopi?

torsdag, 29 april, 2010

Denna vecka har jag fått seriösa griller i huvudet. Företaget jag höll kurs för i tisdags arbetade hårt med prototyping för att undersöka vilka koncept som fungerade och inte fungerade. Tänk om hela produktbackloggen kunde ersättas med en levande prototyp?

Fram tills i tisdags betraktade jag prototyping endast som ett verktyg för teamet och produktägaren för att flytta en funktioner och features från ”Anarchy” or ”Complex” space ner mot ”Complicated” eller ”Simple” space.

Prototypen blir närmast ett verktyg för groomingen av produkt-backloggen. När produktägare och kund sett och klickat runt i prototypen kan EPIC User Stories brytas ner, detaljeras och prioriteras (eller förkastas). När detta arbete är gjort har prototypen spelat ut sin roll. Den fungerar alltså bara som ett ”hur”, ett verktyg att förstå vad man vill ha och vad som fungerar bäst, ett steg i utvecklingsprocessen på resan mot att leverera värdefull och användbar mjukvara.

Med lite tur kan man ibland återanvända lite kod från prototypen till den ”riktiga” produkten men oftast har den spelat ut sin roll och förkastas till skräpkorgen (eller arkivet).

.

Men nu snurrar (för mig) många nya tankar, åtminstone kring prototyping av gränssnitt och dialoger. POC:ar för att undanröja tekniska frågetecken eller risker lämnar jag därhän för tillfället.

.

För, tänk om…

  • Vi inte alls förkastar våra olika prototyper utan prototypen föds i tidig analysfas och fortsätter sedan leva, förändras och växa genom hela projektet.
    .
  • Prototypen är så enkel att bygga ut och laborera med att Produktägaren själv kan experimentera med att lägga till dialoger, skapa dummy-funktioner och koppla ihop systemet på olika sätt. (Kanske har produktägaren ett prototyp-team till sin hjälp eller så spenderar ordinarie team en viss tid av sin sprint för att skulptera prototypen som ett steg i det kontinuerliga analys- och designarbetet.)
    .
  • Prototypen kan ”spelas upp” i olika skepnader. Man bygger inte en helt ny prototyp för att gestalta en annan variant av dialogen utan prototypen kan ställa in i vilket version vi vill experimentera med denna testkörning. Skepnader och flödesvarianter kan enkelt konfigureras on the fly.
    .
  • Vissa delar av prototyp-produkten består av luddiga dialoger och grova funktioner medans andra är tydligare, mer detaljerade och närmare en implementerbar nivå.
    .
  • Prototypen låter sig delas upp i funktioner och komponenter som teamet kan estimera.
    .
  • Estimaten behöver inte lagras i en separat lista någon stans utan är en del av modellen och kopplas till ”prototyp-komponenter”.
    .
  • Komponenterna kan innehålla dolda attachments som inte syns vid körning. Exempelvis word dokument, sökvägar in i wikin, osv.
    .
  • Komponenterna kan innehålla annan meta-information som t.ex:
    • Prioritet
    • Att-Göra-lista med öppna frågor för produktägaren
    • Vilket team som eventuellt ska bygga funktionen
    • Vilken release/sprint funktionen eventuellt är planerad till
      .
  • Slutligen så går prototypens komponenter att skriva ut som en prioriterad lista. Denna lista kommer snarare likna ett träd med grenar som spretar iväg. Ibland lever flera varianter av samma funktion (User Story) fram tills dess att en av dem implementeras och andra förkastats.

Kommentar: När jag skriver ”komponent” ovan menar jag inte modul eller klass, jag syftar till en dialog eller en specifik funktion i användargränssnittet.

.
.

Om denna fantasi besannas har vi då helt och fullt lyckats ersätta produktbackloggen med en prototyp?

Men varför stanna där? Anta att plattformen och språket vi bygger prototypen med är samma som vi använder när vi bygger den ”riktiga” produkten och att implementera en komponent/funktion i prototypen enbart handlar om reda ut återstående detaljer, skriva koden bakom, testa av samt rensa bort döda versioner och aspekter?

Når vi hela vägen hit är vår release-branch helt enkelt en specifik konfigurering av prototypen. Känns definitivt som en utopi men kanske ett vision att arbeta mot?

5 kommentarer

  1. Kan man verkligen begära att produktägaren ska kunna utveckla i ett språk som C# eller Java? Är det inte mer rimligt att produktägaren kan lägga till och expandera om prototypen skrivs i något enkelt scriptspråk?
    I övrigt brukar prototyper behöva slängas eftersom dom innehåller undermålig kod, det är ju trots allt en mockup för att testa något innan man lägger energi på att göra det ”på riktigt”, och frågan är om man inte skjuter sig själv i foten om man antingen försöker hålla produktionsstandard i prototypen (vad är då poängen) eller försöker använda prototypen i produktion.


  2. Jag håller med, vare sig C# eller Java är troligtvis inte alls den typen av språk/verktyg som förverkligar ovanstående fantasi. Och jag vet inget annat verktyg/språk idag för den delen heller som lämpar sig för ovanstående arbete…

    Prototyper skriva med dagens ”skarpa” språk blir ofta mockups som sedan får slängas pga av design- eller arkitekturkrav. Jag tror tyvärr inte ovastående ”vision” är möjlig att förverkliga inom snar framtid.

    Men jag kan inte riktigt släppa idéen 🙂


  3. Det finns ju ramverk och RAD-verktyg för att ta fram gränssnitt och simulerade scenarion, tom sådana som är nästan enbart peka-klicka, och jag tror det är jättebra att använda sådana för att produktägare ska kunna göra mockups. Det tror jag finns i alldeles för låg grad i ”den vuxna världen”, men det används otroligt mycket i spelvärlden, där level och ai-designers sköter sin egen prototyping i relativt hög grad på många företag.


  4. Det låter mera som det verktyg jag ser framför mig 🙂

    Inser förövrigt när jag läser min egen text några timnmar efter publisering att jag trots det långa inlägget missade att beskriva hur det färgade trädet i illustrationen hänger ihop med produktbackloggen bredvid. *muttrar* Återkommer imorgon med en beskrivning av detta.


  5. Det gör inget, länken till bilden är ändå trasig 🙂



Lämna ett svar till Tobias Avbryt svar