Brugervenlighed i programmeringssprog

Forleden læste jeg en artikel, som stillede spørgsmålet Hvorfor er programmeringssprog så dårligt designet?. Artiklen citerer et forsøg lavet på S. Illinois Universityhelt tilbage fra 2011. Konklusionen er dog stadig overraskende og aktuel: For en nybegynder er et vidt udbredt programmeringssprog som Perl akkurat ligeså svært at lære at bruge, som et sprog, der er tilfældigt sammensat.

Hvordan har man fundet ud af det? Det viser sig, at man kan brugervenlighedsteste programmeringssprog på samme måde, som når man brugervenlighedstester et e-handels-site. Metoden er den samme: Giv 5 mennesker, som ikke er programmører, nogle konkrete programmeringsopgaver og observér, hvordan de klarer sig. Test-personerne i det konkrete forsøg var delt op i tre grupper. Nogle skulle løse opgaver i det meget udbredte sprog, Perl, andre i Randomo, et sprog med tilfældigt genereret syntaks. Sidste gruppe brugte universitets eget sprog, Quorum, som ikke overraskende viste sig at være i en klasse over de to andre, når det gælder brugervenlighed.

Deltagerne klarede sig akkurat lige dårligt, uanset om programmeringssproget var designet af en programmør (Perl) eller af et kast med terningerne (Randomo). Tænk hvis knapperne på instrumentbrættet i din bil viste sig at være akkurat så svære at betjene som nogle, der var spredt tilfældigt ud? Det ville ikke være godt for Audis eller Toyotas renommé.

Måske er forklaringen simpelthen, at programmeringssprog sjældent bliver skabt med det formål at være brugervenlige. De bliver skabt af overnørderne, dem som klarer sig lige godt i Perl som i Randomo. Ikke fordi de bevidst er designet til at være vanskelige at bruge. Men fordi målgruppen simpelthen er eksperter — ligesom designerne.

Noget andet interessant, forskerne fra Southern Illinois University fandt, var at besvær med sproget kunne redegøre for omkring halvdelen af alle deres problemer undervejs i testen. Syntaksen er ikke altafgørende, men den er pokkers vigtigt. Det gode spørgsmål er nu, hvordan designer man  et sprog, som er brugervenligt?

I mange programmeringssprog bruger man et udtryk fra matematik til at fortælle computeren, at den skal gentage en handling, nemlig for:

for (int i=0; i < 10; i++) {
    ...
}

Ved at brugervenlighedsteste forskellige muligheder, fandt forskerne, at denne måde var næsten 7 gange så nemt at forstå:

repeat 10 times
   ...
end

Forskningen viste, at ordvalget var meget vigtigt. Ord som repeat og times var genkendelige.

Her er samme stykke kode i sproget Ruby:

10.times do
    ...
end

Selvom ordet repeat ikke indgår, er det ganske meget nemmere at læse for mennesker, som ikke er programmører. Eller hvad?

Det kunne være interessant at tage fem klassiske aspekter af brugervenlighed op af hatten og betragte programmeringssprog i deres lys: Indlæring, fejl, effektivitet, memorability og satisfaction. De er svære at oversætte præcist til dansk, så jeg håber du er ok med at jeg lader dem stå på engelsk.

Learnability Hvor let er det for brugerne at udføre grundlæggende opgaver, første gang? Det er især her, at undersøgelsen fra Illinois, tager fat og spørger: Holder vi nybegyndere ude fra faget ved at gøre det alt for svært at komme igang? Hvis vi i stedet designer programmeringssprog i med repeat og times i tankerne, så skræmmer vi meget færre væk fra faget.

Error Hvor mange fejl kan brugerne gøre, hvor alvorlig er disse fejl, og hvor let de kan komme forbi fejlene? Det var et af hovedformålene med undersøgelsen i Illinois af måle antallet af fejl. Antallet af fejl, en programmør laver, har en meget direkte indflydelse på vores kunders tilfredshed og især på vores kunders kunders tilfredshed.

Efficiency Når brugere har lært at bruge den, hvor hurtigt de kan udføre opgaven? Det kunne være interessant at teste effektivitets-aspektet i virkeligheden. Undersøgelsen fra Illinois kommer ikke rigtig ind på det.

Der er en praktisk udfordring ved at lave testen på rutinerede programmører: At finde 20 test-personer, som aldrig har programmeret før, kan lade sig gøre; de vil alle stort set være på samme niveau. At finde 20 erfarne programmører på samme niveau på tværs af tre programmeringssprog, eller tage højde for mange forskellige slags karriereforløb, er … ikke enkelt. Og så skal man også tage højde for intellisense og andre hjælpeværktøjer.

Høj eller lav effektivitet stammer nemlig ikke udelukkende fra programmeringssprogets indbyggede kvaliteter. Der findes mange værktøjer, som kompenserer for programmeringssprogets mangler ved at give programmøren ekstra information på skærmen – vi kalder det ofte intellisense.

Memorability Når brugere vender tilbage efter noget tid, kan hvor let kan de genetablere færdigheden? Her kunne det være interessant, hvis S. Illinois University tog de samme testpersoner ind her to år efter, og testede hvor godt de huskede det, de lærte dengang.

Satisfaction Hvor behageligt er brugerfladen at bruge? Det er noget, man kigger meget på indenfor User eXperience. Hvis brugeren hygger sig eller har det behagelig eller endda sjovt med dit website, så bliver hun der simpelthen længere. Efter at Jeff Atwood havde bygget StackOverflow.com med .NET, er han nu ved at bygge Discourse … i Ruby. Årsagen? Han peger blandt andet på Rubys bevidste formål, at optimere for glæde.

Værktøjet påvirker produktet
Er du gammel nok til at huske 90’ernes Windows programmer? Alle var “designet” i de samme grå toner, og stort set ingen gik nye veje indenfor interaktionsdesign. Hvorfor? Fordi vi kan ikke undgå at lade os påvirke af den verden, vi selv befinder os i. Vi reproducerer vores egne omgivelser. Et grimt værktøj giver groft sagt grimme produkter. Et uvenligt programmeringssprog giver uvenlige apps og websites.

Hvad mener du? Er det at trække analogien lidt for langt? Eller kunne vores programmeringssprog ligeså godt være lavet af en flok aber, som hamrede løs på et tastatur?

Kategorier: Design, Udvikling

Tagged as:

Skriv et svar

Udfyld dine oplysninger nedenfor eller klik på et ikon for at logge ind:

WordPress.com Logo

Du kommenterer med din WordPress.com konto. Log Out / Skift )

Twitter picture

Du kommenterer med din Twitter konto. Log Out / Skift )

Facebook photo

Du kommenterer med din Facebook konto. Log Out / Skift )

Google+ photo

Du kommenterer med din Google+ konto. Log Out / Skift )

Connecting to %s