O kompromisech uživatelské přívětivosti

25. 9. 2020 23:10 Daniel Novotný

Každému z nás se někdy při spolupráci s počítačem stalo, že si povzdechl: „Proč je to udělané právě takto? Nešlo by to jinak, ____?“

Záměrně jsem vynechal konec věty: jsou totiž dva různé povzdechy tohoto typu. Ti z vás, kteří s výpočetní technikou spíše bojují než spolupracují, si na vynechané místo doplní slůvko „jednodušeji“. Takoví lidé se často diví, proč je „kolem toho“, co chtějí udělat, tolik dalších matoucích hejblátek a věcí, ve kterých se třeba moc nevyznají. Po přečtení této úvahy, by měli pochopit, že situace prostě není tak jednoduchá, protože je tu zakopaná celá smečka psů.

Existuje totiž druhé možné doplnění povzdechu v prvním odstavci této úvahy. Místo slůvka „jednodušeji“ tam potom bude slovíčko „aby…“ následované popisem některé vlastnosti daného softwaru, které by mluvčí rád viděl. Ono „aby“ je v jistém smyslu v opozici k tomu „jednodušeji“, jak uvidíme dále. Dohromady tvoří něco jako váhy, na kterých se musí balancovat.

Abych začal prvním náhledem odpovědi na otázku „proč to nejde jednodušeji“, odpovím nejpovšechněji: kvůli obecnosti. Většina přístrojů, se kterými se člověk potká, slouží k jednomu nebo několika málo účelům: autem se dostáváme odněkud někam, pomocí rádia posloucháme hudbu, fotoaparát snímá obrázky okolního světa… Počítač je udělán tak, aby byl obecný. Tak rozdílné úkoly jako psaní článků, přehrávání hudby, komunikace s jinými lidmi, hraní her, prohlížení internetu… vše zvládne jediný přístroj a není omezen jen na tu oblast použití, kterou dostal „do vínku“ od svých tvůrců. Mohou vzniknout programy i na podporu činností, které ještě neexistovaly (nebyly lidstvem vynalezeny) v době, kdy se daný druh počítače projektoval. Ona obecnost je poté motorem dalšího vývoje a může se dostat do křížku s uživatelskou přívětivostí – „jednodušeji“ se dostane do křížku s „aby…“, jak uvidíme dál.

Je nutné si totiž uvědomit, že i když je počítač obecný, je to stále „jenom“ stroj – nedokáže věci „odhadnout“ lidským zdravým rozumem. Vezměme si například jednoduchý uživatelský vstup, kde počítač vypíše „Zadej jméno:“ a poté očekává od uživatele, aby toto jméno napsat. Uživatel napíše například „Petr“, chvíli čeká … a nic. Pokud bude začátečník, bude se divit, co má ještě udělat – ovšem stroj nemůže vědět, že už napsal celé jméno – musí tam být nějaká možnost, jak potvrdit, že jsem napsal všechno, co jsem chtěl napsat – touto možností může být třeba zmáčknutí ENTERu, stisknutí nějakého tlačítka „OK“ nebo tak něco: a už nám tu „vylezl“ čistě počítačový pojem (ať už toho ENTERu, nebo tlačítka) – který je ovšem nutný k tomu, že ať je stroj chytře naprogramovaný jak chce, nemyslí.

Kdybychom zkoušeli vyřešit problém nějak jinak, „přátelštěji“, dostaneme se do potíží jiného druhu. On ten počítač sice může mít nějakou databázi existujících jmen a po dopsání jména se podívat, jestli člověk nenapsal nějaké „normální, existující“ jméno a potom bez ENTERu či tlačítka přijmout vstup. Jenže – stejně nemůže vědět, jestli chtěl uživatel napsat jméno „Petr“, či „Petra“ nebo „Petronius“ – tedy, ani s touto databází, nemůže uhodnout, zda je vstup celý, nebo ne. Nehledě k tomu, že pokud by dané jméno mělo být například přezdívkou na nějakém serveru, pak bývá zvykem, že to nemusí být některé z existujících jmen, ale něco libovolného, co si uživatel vymyslí, třeba PetrSvetr. Dále, i když předpokládáme, že „chceme“ jenom „normální“ jména, by při použití databáze poté měli smůlu lidé, kteří mají méně rozšířené jméno, které třeba v databázi není: kvůli jednoduchosti jsme ztratili obecnost.

Myšlenku databáze tedy musíme odložit. Můžeme jít jiným směrem a zkusit brát to, že uživatel při zadání jména přestal psát, jako signál, že jméno je celé. Ovšem tím místo toho, že uživatelskou přívětivost zvýšíme, ji nakonec naopak zcela „zabijeme“ – stačí, aby se uživatel při psaní na nějakou dobu zamyslel, zavolal mu někdo telefonem a tak podobně – a vyprší odpočet a zadá se nekompletní jméno. A případný pokročilý uživatel bude nadávat, že mu „to“ dělá zbytečně „samo“ něco pod rukama.

Takže jsme dvěma alternativními způsoby zkusili řešit situaci, ale v obou případech, ač vypadaly na první pohled třeba zajímavě, jsme narazili.

Uvedu jiný příklad, reálnější. Máme diskusní systém na nějakém serveru a chceme tam dát možnost vkládat obrázky – typu smajlíků a podobně. Jsou dvě možnosti: buď dáme uživateli na výběr nějaké portfolio předdefinovaných obrázků, ze kterých může vybírat třeba kliknutím. Druhá možnost je zadat možnost odkázat na nějaký libovolný obrázek na celém netu – uživatel potom ale musí vědět o existenci odkazů, jak je zkopírovat a tak dále. Opět máme buďto větší jednoduchost (vybíráme ze seznamu obrázků) nebo větší obecnost (odkazujeme na libovolný obrázek) a balancujeme.

Třetí příklad, který se mi opravdu stal: zadával jsem do tabulky číslo verze jednoho dokumentu. Tento dokument měl dříve číslo 0.9, čili následuje verze 0.10 Ovšem – poté, co jsem tabulku odeslal kolegovi, ten mě upozornil, že tam mám napsanou verzi 0.1 – program prostě, aby uživatel nemusel vědět, že položky v tabulce mohou být typu „číslo“ „text“ a podobně, sám odhadoval, jakého typu položka je – a skutečně pokud by se jednalo o reálné číslo 0.10, je to „stejné“ jako 0.1 (v Americe se používá desetinná tečka místo čárky). Balancujeme mezi obecností („můžu napsat cokoli“) a jednoduchostí (počítač pozná, že je to číslo a pak může třeba sčítat)

Naše balancování je trochu podobné situaci, když balíme zavazadlo na dovolenou: buď toho nabalíme hodně a pak se budeme tahat s těžkým zavazadlem, nebo toho nabalíme málo a pak riskujeme, že nám nějaká věc, kterou potřebujeme, bude chybět. V naší analogii buďto nabídneme uživateli obecnější volby a pak se může cítit přetížen (protože se bude muset naučit, co je co), nebo toho dáme „málo“ a potom hrozí, že někdo, kdo potřebuje nějakou věc udělat, ji udělat nebude moct.

Přitom rozpětí se táhne přes celé spektrum od maximální obecnosti, jíž je samotné přímé programování (k němuž musíme znát programovací jazyk, umět algoritmizaci…) k maximální jednoduchosti, kterou je nějaký jednoúčelový program, který dělá jednu jedinou věc a nedá se nijak nastavit.

V praxi se setkáváme se systémy po celé šířce mnou uvedené osy. Jako zajímavost uvedu, že je možno se setkat s prostředími a systémy, které jsou blíže tomu „obecnému“ konci spektra, než většina běžných programů. Pak člověk nemá jen nějakou „klikací“ aplikaci, ale vlastně široké pole možností, v rámci něhož dává velice obecné „kostičky“ dohromady a může vytvořit věci na které původní tvůrce programu vůbec nepomyslel. Zase ale musí znát použitý mechanismus nebo jazyk a naučit se ho – to je cena, kterou za to platí.

Existuje také kompromis, který se mi jeví zajímavý: přemýšlel jsem o něj podle metafory kapoty v autě. Běžný uživatel pracuje s nějakou „normální“ dávkou funkcí a nastavení, kterou je nutné vstřebat, aby s programem pracoval. Pokročilý uživatel, který se chce „vrtat“, pak může nějakou netriviální akcí „odklopit kapotu“, čímž se dostane ke složitějším nastavením a tam si pošteluje, co potřebuje. Programy, které něco takového obsahují, potom mají naději, že budou přijaty na obou stranách barikády: budou dostatečně jednoduché při běžném používání „normálními“ uživateli a zároveň uživatelé pokročilí nebudou naštvaní, že nějaká věc, kterou chtějí nastavit, nastavit nejde.

Závěrem bych rád napsal, že uvidíme, jaký vývoj ještě u rozhraní, které jsem popisoval, nastane. Obor se zatím stále ještě hledá a třeba se v budoucnu najde někdo, kdo postaví Kolumbovo vejce na špičku – a vymyslí nějakou syntézu, která vyřeší dilema, nebo jej alespoň zmírní. Dík za to, že onen program „Kolumbova vejce“ poběží na počítači, který byl sestrojen předtím, než „vejce“ někdo vymyslel, patří právě oné obecnosti, o níž byla tato úvaha.

Sdílet