Mjukvaruutveckling är abstrakt. Vi jobbar med information, kodad kunskap. Om vi tittar på en jukvaruutvecklingsansats (produkt) och försöker förstå olika aspekter av denna samling av information, så är vi i dagsläget begränsade till det vi sådan information vi kan se (och höra). I en framtid kan vi kanske ansluta kropparna så vi får ett mer intuitivt sätt att ansluta till informationen, behandla och förstå den på ett sätt som är kompatibelt med våra individuella tankeprocesser och hjärnor. Men fram tills dess kan informationsradiatorer hjälp oss få grepp om denna informationsklump.
An Information radiator is a display posted in a place where people can see it as they work or walk by. It shows readers information they care about without having to ask anyone a question. This means more communication with fewer interruptions. A good information radiator
- Is large and easily visible to the casual, interested observer
- Is understood at a glance
- Changes periodically, so that it is worth visiting
- Is easily kept up to date
– Alistair Cockburn
Mål och syfte
Fundera över vad du har för mål och syfte med informationsspridningen: vem vill jag nå, hur ofta ville jag att informationen skall konsumeras och hur vill jag att den skall påverka?
Undvik att bygga upp teknisk skuld: börja smått! Testa att manuellt skapa och uppdatera informationen en vecka och ta sedan bort den. Om någon hör av sig och frågar “vart tog den där vägen” så vet du att det finns efterfrågan.
Bygg sedan informationsradiatorn så att mål och medel är i balans. Inte alla informationsradiatorer behöver vara elektroniska och ta timmar att bygga! Radiatorn som kunder på besök möts av kanske behöver ha mer form än funktion, medan radiatorn för ett team framför allt behöver kunna anpassas för att stötta deras aktiviteter som pågår nuvarande sprint, månad eller kvartal.
Information att visa
- Informationen skall vara sådan att den går att agera på. Lite som med Daily Scrum och Sprint Review - fokus skall vara på frågan: såhär ligger det till, vad vill vi gör utifrån detta läge?
- Relevant - att 15 olika team ser exakt burndown för alla de 14 övriga teamen är antagligen bara brus. Vem skall agera på den informationen? En gemensam burndown över programmets tre mål i innevarande sprint däremot kan vara relevant, för att se var man kan behöva hjälpa till.
- Trender och nuvärde istället historik - det är svårt att förändra gammal information i ett stapeldiagram över “mängd teknisk skuld”. Att se tre pilar som förklarar nuvarande trend (och utvecklingen tidigare två sprintar) kan vara tillräckligt för att fråga sig “jobbar i med hållbar takt, tekniskt?”
- Fundera över att visa status och prognos. Vad som är bäst lämpat beror på vad man har för mål med radiatorn, och typ av data. Prognos över kundrapporterade kritiska buggar? Status på exakt datum då vi når milstolpe 38?
Undvik
- Tidtabeller för kollektivtrafik - är det något vi behöver enas om? Det är helt OK att ha sådant i arbetsrummen om det nu är viktigt, men troligen inte på gemensamma ytor. Tänk på mål och syfte med radiatorn - hjälps leveransen av att alla kan se när nästa buss går?
- Väderprognoser - samma sak här: hjälper individen komma ihåg paraplyet, men och hjälper teamet med renare kod (från gladare utvecklare), men inte programmet att enast om vad som är viktigast här och nu (våra utvecklingsmål).
- I allmänhet, tänk “signal to noise ratio”, dvs hur maxar vi budskap och minskar brus?
Olika typer
- Pappersbaserade
- Elektroniska status- och instrumentbrädor (dashboards)
- Belysning
- Människor
Människor är interaktiva informationsradiatorer. Vid t ex Nexus Daily Scrum, eller Scrum of Scrums, kan man ganska snabbt avgöra om det finns problem att hantera genom att titta på ansiktsuttryck, var folk fäster blicken och kroppsspråk. Ställ en relevant fråga och se hur människorna reagerar.
Just “människor” kanske inte uppfyller alla kriterier för att kallas en informationsradiator egentligen, men de frågor som människor ställer är en bra källa till uppslag för vad som efterfrågas.
Belysning är ganska vanligt att använda för att få snabb, tydlig feedback på ett nuläge. Exempel på nulägesfrågor kan vara “har vi några nivå noll-ärenden att agera på”, “status på senaste bygget”, “belastning på våra produktionsmiljö”.
Elektroniska status- och instrumentbrädor finns inbyggda i många verktyg, såsom JIRA, TFS och Mingle för att nämna ett par. De är ofta ganska begränsade och brukar vara starkt knutna till att endast visa den information som finns lagrad i just det systemet. Under verktyg nedan finns länkar till ett par generella brädverktyg som är motsatsen: programvaran håller ingen information själv, utan hämtar och presenterar information från olika källor.
Generella riktlinjer
En sammanfattning av riktlinjer för effektiva informationsradiatorer:
- Enkel - tolkas och förstås omedelbart
- Tydlig - talar ett klart språk
- Aktuell - informationen är uppdaterad och relevant idag
- Nu - informationen är dagsfärsk, blir “gammalt” likt nyheter
- Påverkar - beslutsunderlag att agera på
- Synlig - lättillgänglig
- Få - för många radiatorer skapar brus
Färg och form behöver givetvis hänga ihop. En stor röd siffra betyder troligen “agera”, medan en grön pil uppåt betyder att allt är bra. Använd hellre få färger än många färger.
Vi är många
Placera informationsradiatorer där dina människor rör eller befinner sig. Vad är relevant att se:
- när man går från/till fikarummet,
- kommer innanför dörrarna till kontoret,
- sneglar över axeln i arbetsrumme.
Vad är gemensamt - vad behöver vi hjälpas åt med och vad behöver vi ha en enad bild om? Exempel kan vara:
- vad är viktigast att jobba på just nu: sprintmål, kundsupport, buggar, etc
- Continuous X: kan vi skeppa programvaran nu? Klarar vi av att skicka en hot fix, nu, om kunden ringer?
- när går nästa release ut genom dörren?
Alltså, skilj på arbetslagens radiatorer (talar till lagen) och de som är gemensamma för alla (information i korridoren talar till alla).
Konkreta exempel på sådant som skulle kunna sitta på en gemensam radiator:
- Leveransdatum - så alla vet precis vad som gäller
- Byggstatus - så vi hela tiden kan leverera värde och inte har okända integrationskostnader
- Sprint- eller Nexus-mål - så vi alla påminns om vilket värde vi arbetar för att nå
Konkreta exempel på sådant som skulle kunna sitta på ett arbetslags radiator:
- Trend och utveckling inom teknisk skuld från Sonar
- Vilken version av vår komponent som finns i QA-, pre-prod- och produktionsmiljöerna.
- Senaste byggtiderna, över senast 5, 15, 50 byggena
Sammanfattning
- Informationsradiatorer löser inga problem i sig, men kan hjälpa till med att få många människor att dela uppfattning om vad ett nuläge är, och i vilken riktning saker rör sig.
- Informationsradiatorer skall vara levande - se till att de som berörs av informationen också kan ändra radiatorn. Gäller både förbättring, tillägg och upprensning.
- Less is more - informationsövergödning gör att intresset och fokus tappas. KISS - keep it simple & short.
Verktyg
- Papper och penna
- Dashing
- Geckoboard
- Freeboard
- Atlasboard
- Graphana
- Bootstrap Theme
- Sök på dashboard
Fredriks presentation med exempel finns på SlideShare.