Joel on Software

Joel on Software Joel despre Software

 

Designul interfetei utilizator pentru programatori
Capitolul 1
Capitolul 2
Capitolul 3
Capitolul 4
Capitolul 5
Capitolul 6
Capitolul 7
Capitolul 8
Capitolul 9

Alte articole din "Joel on Software" in Romaneste

Alte articole din "Joel on Software" in engleza

Scrie-i autorului (numai in engleza)

 

Designul interfetei utilizator pentru programatori
Capitolul 5: Consecventa si alte sperietori


De Joel Spolsky
Tradus de catre Cosmin Calian
22 Aprilie, 2000

Principalele programe din suita Microsoft Office, Word si Excel, au fost dezvoltate de la zero la Microsoft, dar altele au fost cumparate de la alte companii, de remarcat FrontPage (cumparat de la Vermeer) si Visio, cumparat de la Visio. Lucrul care il au in comun aceste doua programe? Au fost, mai intai de toate, proiectate ca aspect si functionalitate exact ca aplicatiile Microsoft Office.

Decizia de a emula interfata utilizator Office nu a fost numai pentru a "lingusi" Microsoft-ul sau pentru a pregati companiile pentru a fi achizitionate; intr-adevar, Charles Ferguson, care a dezvoltat FrontPage-ul, nu ezita sa recunoasca antipatia ce o are pentru Microsoft; in mod repetat a implorat Departamentrul de Justitie pentru a face ceva in legatura cu bestiile de la Redmond (pana le-a vandut compania, dupa care pozitia lui a devenit mult mai complicata). De fapt Vermeer si Visio par sa fi copiat UI-ul Office-ului in cea mai mare masura pentru ca a fost mai eficient: a fost mai simplu si mai rapid decat reinventarea rotii.

Cand Mike Mathieu, un program manager sef la Microsoft, a descarcat FrontPage-ul de pe site-ul de web Vermeer si l-a incercat, a functionat foarte similar cu Word-ul. Din moment ce a functionat in asa mare masura cum se astepta sa functioneze un program, a fost mai simplu de folosit. Si aceasta usurinta de utilizare i-a dat o impresie favorabila despre program la prima vedere.

Ei, cand Microsoft isi face o impresie favorabila despre un program la prima vedere, scot din buzunar $150 milioane sau ceva de genul. Scopul tau este probabil mult mai modest; tu vrei ca toti clientii tai sa isi faca o impresie favorabila si sa scoata din buzunar poate $39. Dar e aceeasi idee: consecventa cauzeaza usurinta de utilizare care in schimb cauzeaza sentimente placute rezultand mai multi bani pentru tine.

E greu sa estimezi exact in ce masura consecventa ajuta oamenii sa invete si sa foloseasca o mare varietate de programe. Inaintea interfetelor grafice utilizator, fiecare program a reinventat intocmai regulile de baza ale interfetelor utilizator. Chiar si o simpla operatie ca "iesire", pe care fiecare program trebuia sa o aiba, era complet inconsecventa. In acele zile, oamenii intodeauna aveau grija sa memoreze, in cel mai mic detaliu, comanda de iesire din programele uzuale astfel incat sa poata iesi si executa un program pe care il intelegeau. Fanaticii Emacs memorau ":q!" (si nimic altceva) in cazul in care se intampla sa ramana blocati din greseala, in timp ce utilizatorii vi memorau "C-x C-c" (Emacs avea chiar un mod propriu de a reprezenta caracterele de control). In acelasi timp, pe taramul DOS, nu puteai nici macar folosi WordPerfect-ul daca nu aveai una din template-urile acelea tampite din plastic pentru tastatura, care iti aminteau ce facea Alt+Ctrl+F3. Am memorat doar F7 care te scotea naibii afara.

Nu doar aceasta, dar micile inconsecvente in lucruri cum ar fi comportamentul implicit la tastare (overwrite sau insert) te innebunesc. M-am obisnuit asa mult ca Ctrl+Z sa insemne "undo" in aplicatiile Windows incat, cand folosesc Emacs minimizez de fiecare data fereastra(Ctrl+Z) din greseala. (Poanta e ca adevaratul motiv pentru care Emacs interpreteaza Ctrl+Z ca minimize  este pentru "consecventa" cu acea minunata interfata utilizator, csh , shell-ul C din UNIX.) Acesta e una din acele frustrari minore care se acumuleaza intr-un sentiment general de nefericire.

Sa luam un exemplu chiar mai marunt, Pico si Emacs amandoua folosesc Ctrl+K pentru a sterge linii, dar cu un comportament putin diferit care de obicei imi sfarteca documentul, de fiecare data cand sunt in Pico. Sunt sigur ca ai o duzina de exemple de-ale tale.

In zilele timpurii ale Macintosh-ului, inainte de Microsoft Windows, evanghelistii lui Apple spuneau tuturor ca utilizatorul mediu Mac folosea mai multe programe diferite pentru a-si face treaba decat utilizatorul mediu DOS. Nu imi amintesc numerele exacte, dar cred ca era ceva de genul 1 sau 2 programe pentru utilizatorul mediu Dos versus doisprezece programe pentru un utilizator Mac. Motivul era ca era atat de usor sa inveti un nou program pe Mac pentru ca in general functionau in acelasi fel.

Consecventa este un principiu fundamental al unui bun design UI, dar este doar un corolar al axiomei "fa modelul program sa se potriveasca cu modelul utilizator", pentru ca modelul utilizator este mai probabil sa reflecte modul in care utilizatorii vad alte programe functionand. Daca utilizatorul a invatat ca facand dublu-click pe un text inseamna selecteaza cuvant, le poti arata un program pe care nu l-au mai vazut inainte iar ei vor intui ca modul de selectarea al unui cuvant este de a face dublu-click pe el. Ei si acum, acel program ar face bine sa selecteze cuvinte cand fac dublu click (in loc de, sa zicem, cautarea cuvantului in dictionar), sau altfel ai o problema de utilizabilitate.

Daca consecventa este asa evident benefica, de ce pierd timpul tau si al meu propovaduind-o? Din nefericire, exista o forta intunecata care lupta impotriva consecventei, si aceasta este tendinta naturala a designerilor si programatorilor de a fi creativi.

Ei, urasc sa fiu eu acela care iti spune "nu fi creativ," dar din nefericire, pentru a face interfata utilizator usor de folosit, o sa fi nevoit sa iti canalizezi creativitatea in alta zona. In majoritatea deciziilor UI, inainte de a proiecta orice de la zero,  trebuie neaparat sa te uiti la ce fac alte programe cunoscute si sa le emulezi cat de aproape posibil. Daca creezi un vre-un fel de program pentru editare documente, ar fi bine sa arate in mare masura ca Microsoft Word, chiar in detalii cum ar fi acceleratorii elementelor de meniu care le aveti in comun.  Unii din utilizatorii tai vor fi obisnuiti cu Ctrl+S pentru salvare; unii dintre ei vor fi obisnuiti cu Alt+F,S pentru salvare, si inca altii vor fi obisnuiti cu Alt,F,S (eliberand tasta Alt) . Alt grup va cauta floppy disk-ul din zona sus stanga a programului si vor face click pe ea. Ar fi bine ca toate patru sa functioneze, altfel utilizatorii tai vor obtine ceva ce nu doreau.

Am vazut companii unde managementul se mandrea pentru faptul ca faceau lucrurile intentionat diferit fata de Microsoft. "Doar pentru ca Microsoft o face, nu inseamna ca e si corect," se bat ei cu caramida in piept, si apoi in mod inutil incep sa creeze o interfata utilizator diferita de ceea cu care oamenii sunt obisnuiti. Inainte de a incepe sa incantezi mantra "doar pentru ca Microsoft o face, nu inseamna ca e si corect," te rog ia in considerare doua lucruri:

  1. Chiar daca nu e corect, daca Microsoft o face intr-un program cunoscut ca Word, Excel, Windows, sau Internet Explorer, atunci milioane de oamei vor gandi ca e corecta, sau cel putin, destul de standard, si vor presupune ca programul tau functioneaza in acelasi fel. Chiar daca gandesti (cum inginerii Netscape 6.0 clar o fac) ca Alt+Left nu este un shortcut bun pentru "Back", exista efectiv milioane de oameni care vor incerca sa foloseasca Alt+Left pentru a merge inapoi, si daca refuzi sa o faci, pe un principiul general religios ca Bill Gates este strumful rau, arogant-blestematul Gargamel, atunci iti vei distruge fara nici un sens programul doar ca sa te simti implinit si multumit, iar utilizatorii tai nu iti vor multumi pentru asta.
  2. Si nu fi asa sigur ca nu e corecta. Microsoft cheltuieste mai multi bani decat tine pe teste de utilizabilitate, tin statistici detaliate, bazate pe milioane de telefoane la suportul tehnic, si e o sansa a naibii de mare ca au facut-o in felul acela deoarece mai multi oameni isi pot da seama cum sa o foloseasca in acel mod.

Pentru a crea un bun program cu o interfata utilizator, o sa trebuiasca sa-ti lasi religia la usa, multumesc. S-ar putea ca Microsoft sa nu fie unica companie de copiat: daca faci o librarie online, ar trebui probabil sa fi sigur ca site-ul tau de web este cel putin semantic la fel cu Amazon. Amazon iti pastreaza cosul de cumparaturi in jur de 90 de zile. S-ar putea ca tu sa te crezi extra-destept si sa golesti cosul dupa 24 de ore. Daca faci asta, vor fi clienti Amazon care pun lucruri in cosul de cumparaturi si se reintorc doua saptamani mai tarziu asteptandu-se sa le regaseasca acolo. Cand nu vor mai fi, ai pierdut un client.

Daca faci un editor foto performant pentru graficieni profesionisti, te asigur ca 90% din utilizatorii tai vor stii Adobe Photoshop, asa ca ar fi indicat sa se comporte cat de mult ca Photoshop-ul in zonele unde programele se suprapun. Daca nu, oamenii vor zice ca programul tau este greu de folosit, chiar daca tu crezi ca e mai usor de folosit decat Photoshop-ul, pentru ca nu se comporta in felul in care ei se asteapta.

Exista o alta tendinta la moda de a inventa controalele obisnuite care vin cu Windows-ul. Nici macar nu ma face sa incep despre Netscape 6. Era o vreme cand puteai zice ce programe au fost compilate cu compilatorul Borland C++ deoarece foloseau butoane OK mari si grase cu checkbox-uri verzi gigantice. Asta nu era nici macar pe-aproape de rau ca cele ale lui Kai Photo Soap:

Foarte bine, e senzational de frumos, dar O-ul cu o linie peste el (care de fapt inseamna "nu") imi aminteste de "OK," si standardul in Windows e sa ai butonul OK in stanga, si astfel ajung sa apas de o gramada de ori butonul gresit. Singurul beneficiu de a avea simboluri nostime in loc de "OK" si "Cancel" cum are toata lumea, este ca poti scoate in evidenta cat de creativ esti. Daca oamenii fac greseli din cauza creativitatii lui Kai, ei, asta-i doar pretul pe care trebuie sa il plateasca pentru ca se afla in prezenta unui artist. (Alta problema cu acest "dialog" este ca ca nu are un title bar standard care poate fi folosit pentru a muta dialogul pe ecran. Deci, daca dialogul sta in fata la ceva pe care vrei sa il vezi pentru a raspunde intrebarii din dialog, nu esti in stare.)

Ei, e o gramada de castigat avand o interfata finisata si aratoasa. Un bun design grafic ca al Kai multumeste si va atrage oamenii spre programul tau. Smecheria este sa o faci fara a incalca regulile. Poti schimba aspectul vizual al dialogurilor, putin, dar nu modifica functionalitatea.

Cand prima versiune a Juno a fost scrisa, avea dialogul standard de log on care iti cerea un nume de utilizator si o parola. Dupa ce introduceai numele de utilizator, trebuia sa apesi TAB pentru a merge in campul parola si sa tastezi o parola.

Ei, asta il incurca pe unul din managerii de programare la Juno, care avea mult mai multa experienta cu UNIX-ul decat cu Windows-ul, astfel era obisnuit sa tasteze numele utilizator, apoi sa apese ENTER pentru a sari la campul parola (in loc de TAB). Ei, cand scrii un program care tinteste spre utilizatori non-experti de Windows, un programator UNIX nu este probabil exemplul ideal de utilizator tipic, dar acest manager insista ca tasta enter ar trebui sa te mute la urmatorul camp in loc de a face lucrul standard Windows "OK". "Doar pentru ca Microsoft o face, nu inseamna ca e corect," ciripea el.

Astfel, programatorii au pierdut o cantitate remarcabila de timp scriind un dialog box uimitor de complicat modificand codul pentru a evita comportamentul implicit al Windows-ului. (A fi inconsistent este aproape intodeauna mai multa munca decat doar facand ceea ce platforma ta se asteapta sa faci.) Acest cod era un imens cosmar de mentenanta; nu se porta prea bine cand ne-am mutat de la Windowsul pe 16-biti la Windows-ul pe 32-biti. Nu facea ce se astepta lumea. Si cum noi programatori se alaturau echipei, nu intelegeau de ce exista aceasta subclasa ciudata pentru dialoguri.

O gramada de programatori au incercat sa reimplementeze diverse controale obisnuite Windows, de la butoane la scrollbar-uri la toolbar-uri si menu bar-uri (lucrul favorit de reimplementat al echipei Microsoft Office). Netscape 6.0 merge asa departe, pana la implementarea fiecarui control obisnuit Windows. Asta de obicei are cateva efecte proaste neprevazute. Cel mai bun exemplu este cu edit box-ul. Daca reimplementezi edit box-ul, exista o gramada de utilitati de care tu nici macar nu stii (cum ar fi add-in-urile de editare a limbii chineze, si versiuni bidirectionale ale Windows-ului care suporta text de-la-dreapta-la-stanga) care nu vor mai functiona deoarece nu recunosc edit box-ul non-standard. Unii din referentii versiunii dinaintea lansarii Netscape 6.0 au observat ca box-ul URL, folosind un edit control non-standard Netscape, nu suporta functionalitati obisnuite edit control cum ar fi click dreapta pentru a obtine un meniu contextual.

Cand te afli intr-o disputa despre consecventa cu un fundamentalist anti-Microsoft sau cu un designer grafic creativ, sunt capabili sa citeze pe Emerson incorect: "Consecventa este sperietoarea mintilor marunte..." Adevaratul citat este "O consecventa prosteasca este sperietoarea mintilor marunte." Designerii UI buni folosesc consecventa inteligent, si, desi s-ar parea ca nu isi etaleaza creativitatea asa bine, pe termen lung ii face pe utilizatori mai fericiti.



> Capitolul 6

Acest articol a aparut initial in engleza cu numele User Interface Design for Programmers Chapter 5: Consistency and Other Hobgoblins  

Joel Spolsky este fondatorul Fog Creek Software, o mica firma de software din New York City. El a absolvit Universitatea Yale si a lucrat ca programator si manager la Microsoft, Viacom si Juno.


Continutul acestor pagini reprezinta opinia unei singure persoane.
Tot continutul Copyright ©1999-2005 de Joel Spolsky. Toate Drepturile Rezervate.

FogBUGZ | CityDesk | Fog Creek Software | Joel Spolsky