Joel on Software

Joel on Software Joel tarkvarast

 

Kasutajaliidese disain programmeerijatele
1. peatükk
2. peatükk
3. peatükk
4. peatükk
5. peatükk
6. peatükk
7. peatükk
8. peatükk
9. peatükk

Veel "Joel on Software" artikleid eesti keeles

Veel "Joel on Software" artikleid inglise keeles

Kirjuta autorile (ainult inglise keeles)

 

Kasutajaliidese disain programmeerijatele
1. peatükk: Oma keskkonna kontrollimine valmistab rahulolu


Joel Spolsky
Tõlkinud Paavo Helde
Toimetanud Anti Veeranna
10. aprill 2000

Pühendunud C++ programmeerijad enamasti vihkavad kasutajaliideste (UI) programmeerimist. See on üllatav, sest minu arvates on UI programmeerimine iseäranis kerge, sirgjooneline ja lõbus.

See on kerge, sest tavaliselt ei lähe vaja keerukamaid algoritme kui ühe ristküliku teise sisse tsentreerimine. See on sirgjooneline, sest vea tegemisel näed seda kohe ja saad parandada. See on lõbus, sest töö tulemused on koheselt nähtavad. Sulle tundub, et voolid programmi.

Arvan, et enamiku programmeerijate hirm UI programmeerimise ees tuleb nende hirmust UI disaini ees. Nad usuvad, et UI disain on sama mis graafiline kujundus: müstiline protsess, mille käigus loomingulised, latte'i joovad, musta riietatud, mitmekesiselt rõngastatud tüübid produtseerivad vinget kunstilist materjali. Programmeerijad näevad end kui analüütilisi arutlejaid, kes on tugevad loogikas, kuid nõrgad kunstivaldkondades. Nii nad arvavadki, et ei saa UI disainiga hakkama .

Minu kogemus seevastu ütleb, et UI disain on suhteliselt kerge ja mõistuspärane. See ei ole müstiline tegevus, mis nõuab kunstikooli diplomit ja kalduvust neoonlillale parukale. Kasutajaliideseid saab käsitleda ratsionaalselt ning on olemas mõned lihtsad loogilised reeglid, mille rakendamine tuleb kasuks kõigile sinu poolt arendatavatele programmidele.

Ma ei hakka siinkohas pidama loengut teemal "Kasutajaliideste Disaini Zen ja Kunst". Tegemist ei ole kunstiga, samuti mitte Buddha õpetusega, vaid lihtsalt reeglite kogumikuga, ratsionaalse ja metoodilise mõtlemise moodusega. See raamat on mõeldud programmeerijatele. Ma eeldan, et sa ei vaja õpetust selles osas, kuidas teha menüüriba, vaid selles, mida menüüribale panna (või kas seda menüüriba üldse vaja on). Eksisteerib üksainus peamine reegel, millest ma ka rääkima hakkan. Sellest juhindub kogu hea UI disain ning sellest aru saamine ei ole üldse raske.

Minu esimene tõeline töökoht oli suures tööstuslikus pagaritöökojas. Töökotta oli planeeritud kuus leivatootmisliini. Iga kahe tootmisliini kohta oli ette nähtud üks taignasegisti, mis kukutas 180-kiloseid taignakamakaid parem- või vasakpoolsele liinile:

Vähemalt oli see nii planeeritud. Tegelikkuses polnud segisti C veel valmis, samuti mitte liinid 3 ja 5. Seadmete tegelik paigutus oli selline:

Tähelepanelik lugeja imestab, et kuidas küll taigen jõudis segistist B tootmisliinile 6? Siinkohal tulebki mängu Väike Joel. Minu tööks, usu või ära usu, oli seista segistist B vasakul, püüda segistist väljuv hiiglaslik 180-kilone taignapäts suurde ratastega vanni, lükata vann kuuenda liini juurde ning hiivata taigen vintsisarnase seadme abil liinile. Ma pidin seda tegema kord kümne minuti jooksul, kella kümnest hommikul kuni kella neljani õhtul.

Komplikatsioone oli veel. Tegelikult ei suutnud 6. liin toime tulla 180 kilo taignaga, nii et ma pidin taignapätsi hiigelsuure noaga umbes kümneks tükiks lõikama. Ma ei taha isegi mitte mõelda sellele, kui absurdselt raske see oli.

Esimestel päevadel tundus töö muidugi kohutav, lausa võimatu. Iga kont mu kehas valutas. Mu rakud olid rakus. Mul valutasid kohad, mille olemasolust ma varem ei teadnud.

Alguses ei suutnud ma varustada 6-ndat liini piisava hulga taignaga. Taigna puudujääk tekitas iga kord liinil suure lünga. Kui lünk jõudis ahjuni, siis ahi (kulutades sama energiahulga väiksema taignakoguse peale) kuumenes üle ja kõrvetas leivad ära. Mõnikord läks kuues liin üldse rivist välja ning katkestas töö, aga et segisti jätkas pidevalt taigna tootmist, siis tekkis oht, et mul ei jätku piisavalt ratastega vanne taigna hoidmiseks. Kui see juhtus, siis pidin ma puhastama ning õlitama põranda ja ladestama taigna sinna, nii et seda hiljem üles korjata saaks. See süsteem muidugi ei töötanud eriti hästi, sest üle 30 minuti seisnud taigen fermenteerus ja sellest ei oleks enam head leiba saanud. Kui see juhtus, siis tuli vanaks läinud taigen 5-kilosteks juppideks lõigata ning lisada üks jupp igale uuele taignateole.

Umbes nädala pärast olin ma juba nii osav, et mul jäi, kui ma õigesti mäletan, puhkamiseks kaks minutit vaba aega iga 10-minutilise taignatsükli kohta. Ma tegin endale selgeks täpse ajagraafiku ning õppisin ka ära segisti peatamise tootmisliini seiskumise puhul.

Siis ma hakkasin mõtlema selle üle, miks, nagu õllereklaamis öeldakse, mõni päev on parem kui teine.

Ühel päeval selle üle mõeldes märkasin ma, et ühe ratastega vanni rattad logisesid tublisti ega käinud hästi ringi. See vann ei läinud tavaliselt sinna, kuhu ma seda lükkasin, vaid põrkas näiteks vastu seina. See tekitas väikestviisi frustratsiooni. Mõnikord vanni üles vinnates kriimustasin ma ennast veidi vastu keti metallsplinti. Jälle väike frustratsioon. Mõnikord tühja vanniga segistist väljapudenevat taignalaadungit püüdma rutates libisesin ma rasvasel põrandal. Mitte niipalju, et oleksin kukkunud, kuid see oli järjekordne pisitilluke ebameeldivus.

See-eest pälvisin ma teinekord ka pisikesi võite. Ma õppisin taignatootmist täiuslikult ajastama, nii et värske tainas saabus vaid mõni sekund enne eelmise laadungi lõppemist. See garanteeris värskeima taigna ning parima leiva. Mõned võidud olid veelgi väiksemad. Ma märkasin väikest taignatükki, mis oli segistist välja lennates seina külge kuivanud, ning kraapisin selle maha tagataskust haaratud värvikaabitsaga. JESS! Taigent lõigates jagunes see mõnikord tõeliselt kergelt ja kenasti. Need olid väikesed rahulolu hetked, mil ma suutsin kontrollida end ümbritsevat maailma, kasvõi kõige tagasihoidlikumal moel.

Selline see töö oli. Palju väikesi frustratsioone ja palju väikesi võite. Aga need liitusid omavahel. Isegi näivalt pisike ja tähtsusetu ebameeldivus mõjutab sinu tuju. Tundub, et su emotsioonid ei hooli tegelikult sündmuse suurusest, vaid ainult iseloomust.

Mõistsin, et minu kõige õnnelikumad päevad olid need, mil kogesin palju väikesi õnnestumisi ning vähe väikeseid ebaõnnestumisi.

Aastaid hiljem kolledžis õppides sain teada, et on olemas oluline psühholoogiateooria  - Õpitud Abitus - mis on välja töötatud Dr. Martin E. P. Seligmani poolt. See teooria tugineb aastatepikkusel uurimistööl ja väidab, et suur osa depressioonist on põhjustatud abitustundest, tundest, et inimene ei suuda kontrollida oma keskkonda.

Mida rohkem tunned, et suudad kontrollida oma keskkonda ja töövahendeid, seda rohkem rahul sa oled. Kui tunned masendust, viha ja ärritust, siis on selle põhjuseks tõenäoliselt miski, mida sa ei suuda kontrollida, ükskõik kui tähtsusetu see siis ka ei oleks. Tühikuklahv sinu klaviatuuril ei tööta korralikult. Teksti sisestades jooksevad mõned sõnad üksteisele otsa. See tekitab masendust, sest tühikuklahvi vajutades ei juhtu midagi. Sinu välisukse võti ei keera korralikult. See kiilub mõnikord kinni, kui üritad seda keerata. Veel üks väike frustratsioon. Sellised asjad liituvad omavahel ja tekitavad masendust iga päev. Isegi kui need näivad liiga tähtsusetud tähelepanu pööramiseks (sest jumala pärast, Aafrikas surevad inimesed nälga, ma ei saa ometi vihastada tühikuklahvi peale), mõjutavad nad ometi meie tuju.

Peatume siinkohal ja lähme tagasi arvutite juurde.

Võtame näiteks tüüpilise Windowsi oskuskasutaja, nimega Pete. Kasutajaliideste puhul on alati tublisti abiks, kui kujutletavaid kasutajaid silmas pidada. Mida realistlikum selline kujutletav kasutaja on, seda paremini suudad ennustada tema käitumist programmi kasutamisel. Olgu Pete arveametnik tehnikakirjastuses. Ta on kasutanud Windowsi kuus aastat tööl ja natuke kodus. Ta on üsna kompetentne ning orienteerub tehnilistes küsimustes hästi. Ta installeerib oma tarkvara ise; ta loeb PC Magazine'i ja on isegi kirjutanud mõned lihtsad Wordi makrod, et aidata oma kontori sekretärineiudel arveid välja saata. Tal on kodus püsiühendus. Pete ei ole kunagi kasutanud Macintoshi. "Nad on liiga kallid," seletab ta teile, "sama raha eest võiksite saada 700 MHz PC 128 mega mäluga..." OK, Pete. Me saime sinust aru.

Ühel päeval palub Pete'i sõber Gena temalt abi. Genal on Macintosh iBook, sest talle meeldivad poolläbipaistvad nupud. Kui Pete Macintoshi kasutada püüab, satub ta kiiresti frustratsiooni. "Vihkan selliseid asju," ütleb ta. Lõpuks suudab ta küll Genat aidata, kuid on pahur ja tige. "Milline ürgne interfeis sellel Macintoshil küll on!"

Ürgne? Igaüks teab, et Macintoshil on elegantne kasutajaliides, kas pole nii? Mac on ju kasutushõlpsuse paradigma ise?

Siin on minu seletus sellele müsteeriumile.

Macintoshil saab akent nihutada võttes kinni suvalisest akna servast. Windowsis peab haarama tiitliribast. Akna servast kinni võttes saab seevastu muuta selle suurust. Kui Pete tahtis Genat aidata, püüdis ta akent laiemaks teha, tirides selle paremat serva. Tema masenduseks liikus terve aken, mitte ei muutunud selle suurus.

Kui Windowsis ilmub ekraanile teateaken, siis saab selle sulgeda kas enter- või tühikuklahvi vajutades. Maci puhul tühik ei tööta, enamasti tuleb kasutada hiirt. Kui Pete sattus veateadetele, püüdis ta neist vabaneda tühikut vajutades, nii nagu oli alateadlikult teinud eelmised kuus aastat. Esimesel korral ei juhtunud midagi. Endale seda teadvustamata surus Pete tühikut tugevamini, sest arvas, et Mac ehk ei võtnud esimest korda arvesse. Tegelikult võttis küll, kuid ei teinud välja! Lõpuks pidi Pete hiire järgi haarama. Jälle üks väike frustratsioon.

Pete oli ka õppinud sulgema aknaid Alt+F4 abil. Maci puhul muudab see aga arvuti helitugevust. Ühel hetkel tahtis Pete klikkida Internet Exploreri ikoonile töölaual, mis oli osaliselt kaetud teise aknaga. Nii ta vajutaski Alt+F4 akna sulgemiseks ja topeltklikkis kohe ikoonil. Alt+F4 tõstis aga hoopis helitugevust, nii et tema topeltklõps sattus tegelikult Help-nupu kohale segava akna menüüribal. Lõpptulemusena oli tal lahti kaks akent selle ühe asemel, mida ta sulgeda tahtis.

Veel üks pisike frustratsioon. Aga oh sa poiss, kuidas need liituvad. Lõpuks oli Pete tige ja närviline. Ta tahtis asju kontrolli all hoida, need aga ei reageerinud. Tühikuklahv ja Alt+F4 "ei töötanud" -  vähemalt Pete'i jaoks tegi see sama välja, nagu need klahvid oleksid katki olnud. Aken ei kuuletunud talle, kui ta tahtis seda laiemaks teha, vaid mängis selle asemel vingerpussi ning muutis oma asukohta. Halb aken. Isegi kui kõik see toimub alateadlikult, transleerub kerge kontrollimatusetunne abituseks ning seejärel rahulolematuseks. "Mulle meeldib minu arvuti," ütleb Pete. "Ma olen ta seadistanud töötama täpselt nii, nagu mulle meeldib. Aga Macid - need on kohmakad ja rasked kasutada. Nad on tõelised frustratsiooni musternäidised. Kui Apple oleks töötanud kõik need aastad MacOS-i kallal, selle asemel et Newton'iga jamada, siis poleks nende opsüsteem selline puder ja kapsad."

Kena, Pete. Meie teame paremini. Tema tunded on sellised vaatamata sellele, et Macintoshi on tegelikult päris lihtne kasutada - Maci kasutajate jaoks. Tegelikult on ju täiesti ükskõik, millise klahvi abil akent sulgeda. Microsofti programmeerijad, kes eeldatavalt kopeerisid Maci interfeissi, mõtlesid tõenäoliselt, et nad lisavad kihvti uuenduse, lastes muuta akna suurust servast tirimisel. MacOS 8.0 programmeerijad tõenäoliselt mõtlesid, et nad lisavad kihvti uuenduse, lastes servast tirides akent ühest kohast teise tõsta.

Enamik sõnasõdasid kasutajaliideste teemadel keskendub valele asjale. Windows on parem, sest võimaldab akna suurust muuta rohkematel viisidel. Ja siis? See ei puutu asjasse. Tähtis on, et UI käituks nii nagu kasutaja ootab teda käituvat. Kui ta seda ei tee, siis tunneb kasutaja end abituna ja kontrolli kaotanuna, nii nagu mina tundsin end siis, kui taignavanni rattad ei pöördunud õiges suunas ja see vastu seina põrkas.

UI on tähtis, sest see mõjutab su kasutajate tundeid, emotsioone ja tuju. Kui UI on vigane ja kasutajad kaotavad kontrolli asjade üle, siis muutuvad nad sõna otseses mõttes õnnetuks ja süüdistavad sinu tarkvara. Kui UI on mõistlik ja asjad töötavad kenasti, siis on kasutajad rõõmsad, sest suudavad saavutada kasvõi väikseid eesmärke. Kuule! Ma kõrvetasin CD! See lihtsalt töötas! Vinge soft! Vauuuuu!

Et teha inimest õnnelikuks, pead laskma tal tunda, et ta kontrollib oma keskkonda. Et seda teha, pead sa õigesti interpreteerima tema tegevust. Kasutajaliides peab käituma vastavalt kasutaja ootustele.

Seega,  kasutajaliideste põhireegel on:

Hea kasutajaliides käitub vastavalt kasutaja ootustele.
Nagu Hillel ütles, on kõik muu kõrvalise tähtsusega. Ülejäänud hea UI disaini reeglid on lihtsalt järeldused.

> 2. peatükk

Artikli algupärane nimi inglise keeles on User Interface Design for Programmers Chapter 1: Controlling Your Environment Makes You Happy  

Joel Spolsky on Fog Creek Software asutaja. See on väike tarkvarakompanii New York Citys. Ta on lõpetanud Yale'i ülikooli ja töötanud programmeerija ning juhina Microsoftis, Viacomis ja Junos.


Need leheküljed esitavad üksikisiku seisukohti.
Kogu sisu Copyright ©1999-2005 Joel Spolsky. Kõik õigused reserveeritud.

FogBUGZ | CityDesk | Fog Creek Software | Joel Spolsky