Det finns ett område inom människa-dator-interaktion som det nästan inte verkar finnas något skrivet om, och det handlar om var och när komplexitet uppstår, både i användarinterfacet och i den bakomliggande datamodellen.
Det hela bygger på att det inte finns någon koppling mellan "funktionalitet" och "användarupplevelse". Alltså att om jag lägger till eller tar bort en funktion i systemet så finns det inget "hos funktionen" som ger en indikation om hur stor effekten blir på användarupplevelsen. En liten skitgrej som tar 20 minuter att programmera kan ju göra att hela användningsflödet går mycket lättare. Och tvärtom kan en liten liten valmöjlighet i en fjärran meny i menysystemet göra att hela den bakomliggande modellen måste byggas om.
Den här sortens komplexitet tycker jag är helt central att kunna diskutera, men jag vet inte riktigt hur man ska börja...
Ett exempel kanske är hur man ställer volymen i en PC. Det här att det finns en central systemvolym och samtidigt en separat volymkontroll för varje ljudapplikation gör att man inte utifrån att lyssna på ljudet kan förutsäga om exempelvis ett kommande systemljud spelas starkt eller svagt. Har jag satt mediespelarens volym väldigt lågt och systemvolymen högt, kan jag få obehagliga överraskningar, men de kanske kommer så sällan att jag inte märker på ett tag att jag har konstiga inställningar.
När det sen har gått några (dator)generationer har de flesta vant sig vid att det finns dubbla volymkontroller, så då uppkommer möjligheten att införa ytterligare en samverkande volymkontroll -- kanske på ljud-controllern eller överföringen till Bluetooth-högtalarna. Med fyra volymkontroller som ska hållas i bra balans, och där alla fyra direkt styr den upplevda volymen kommer även expertanvändare att uppleva stor frustration.
Ett annat exempel är lite liknande. Det gäller på vilket "objekt" man kan ställa in vissa "egenskaper". Det finns ett modelleringsprogram i Microsoft Office-familjen som heter Visio. I det kan man exempelvis bygga flödesscheman. Det är i princip ett 2D-program, men har vissa möjligheter att visa 3D-effekter, exempelvis skuggor.
Frågan är då på vilken nivå man ställer in "skuggornas egenskaper", som vilket håll ljuset kommer i från, och hur långt ifrån objektet som skuggan sträcker sig. Följande nivåer kan man tänka sig:
Hårdkodad inställning för alla objekt som inte går att ändra på.
- Hårdkodad inställning för alla objekt som inte går att ändra på.
- Inställbart per användare.
- Inställbart per fil.
- Per sida i filen
- Per lager
- Per objekt
Generellt kan man säga att "funktionaliteten" ökar ju mindre enhet som inställningen gäller. Har man en inställning per användare är ju funktionaliteten låg, men om man kan ställa i det här fallet skuggningen för varje objekt får man ju mycket funktionalitet.
Men samtidigt ökar komplexiteten, både i användarinterfacet, och i koden. Vill man ändra skuggningen för alla objekt riskerar man att få göra det ett efter ett.
Var ska man då lägga sig? I fallet med skuggning är det ju en funktion som har en motsvarighet i "den verkliga världen". Den representerar "verkligt" ljus som faller på "verkliga" objekt som befinner sig på ett avstånd från underlaget som skuggan faller på.
Så att sätta inställningen "per sida" betyder att man säger att allt som ligger på den sidan ligger på samma avstånd från underlaget och belyses av samma slags ljus. Det kommer att fungera för en hel del fall, men inte för andra.
I det här första exemplet fungerar det ju bra. Men sen visar det sig att man kan sätt olika färg på skuggan för olika objekt, och när man lägger dem på varann är dom inte direkt i samma plan längre...
Och det är ju förstås ingen riktig skugga. Bara en färgplatta som ligger bredvid objektet, vilket man ser om man lägger objekten precis intill varann.
För att sammanfatta: med de här exemplen ville jag förstås inte förhåna Visios bristande tredimensionella modellering, utan snarare visa hur datamodellen skulle kunna se ut på olika sätt och prata lite om konsekvenserna av det.
Om det är någon som har någon referens inom området är jag mycket mottaglig.
/Simon
Ett konstaterande som ligger nära detta går ungefär så här:
- Om man har en kontroll och lägger till ytterligare en, blir gränssnittet inte dubbelt utan tre gånger så komplext eftersom användaren nu behöver först de två kontrollerna OCH relationen mellan dem.
Orginalet är bättre formulerat. Minns inte vem som sa det.
Posted by: Tommy | 31 augusti 2005 at 09:14
En snabb tanke till:
Tror TV-apparater med kringutrustning är ett bra exempel på detta. Jag har bara en hårddisk-DVD och en TV, men båda anser sig vara den apparat som skall slå på och av TV:n, vilket säkert är tänkt att vara hjälpsamt, men i själva verket krockar och blir fel.
Och jag har förstått att detta är ett mycket större problem för dem med satelitboxar och digitalboxar, där alla apparater försöker anpassa bildproportioner etc. Så till den milda grad att Don Norman - som annars är en vettig person - i en av sina krönikor är lyrisk över en fjärrkontroll vars främsta funktion är *att slå på apparaterna i rätt ordning*.
Posted by: Tommy | 31 augusti 2005 at 09:45