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 1: Controlul asupra mediului tau te face fericit


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

Cei mai multi din programatorii C++ pe care ii cunosc  urasc programarea interfetelor utilizator. Asta ma surprinde, caci eu gasesc programarea UI extrem de usoara, directa, si amuzanta.

Este  usoara  pentru ca de obicei nu ai nevoie de algoritmi mai sofisticati decat de a centra un dreptunghi in altul. Este directa deoarece cand faci o greseala, imediat o vezi si o poti corecta. E amuzanta, pentru ca rezultatele muncii tale sunt imediat vizibile. Te simti ca si cum ai sculpta direct programul.

Cred ca frica celor mai multi programatori de programarea UI  vine din frica lor de a face design UI. Ei cred ca designul UI este ca designul grafic: procesul misterios prin care indivizi creativi, bautori-de-cafea, imbracati-in-negru-din-cap-pana-in-picioare cu piercinguri interesante produc chestii artistice cu un look deosebit. Programatorii se vad pe ei insisi ca ganditori analitici, logici: puternici la rationamente, slabi in judecata artistica. In consecinta, ei cred ca nu pot face design UI.

De fapt, eu gasesc ca designul UI este chiar usor si chiar rational. Nu-i un lucru misterios care iti cere sa ai o diploma a unei scoli de arta si afinitati pentru un par colorat mov aprins. Exista un mod rational de a gandi interfetele utilizator, cu cateva reguli simple, logice pe care le poti aplica oriunde pentru a imbunatati interfetele programelor la care lucrezi. 

N-o sa iti expun "Zen si arta designului UI". Nu-i arta, nu-i budism, e doar un set de reguli. Un mod de a gandi rational si metodic. Aceasta carte este scrisa pentru programatori.  Presupun ca nu ai nevoie de instructiuni despre cum sa faci un meniu; mai degraba, trebuie sa te gandesti la ce vrei sa pui in meniul tau (sau daca macar merita sa ai un meniu). Exista o axioma de prima importanta pe care o sa ti-o explic, care ghideaza toate designurile UI bune, si nu-i deloc greu de inteles. 

Prima mea slujba adevarata a fost intr-o mare brutarie  industriala. Brutaria a fost proiectata sa aiba sase linii de productie a painii. Pentru fiecare doua linii de productie, exista un mixer de aluat, care producea o bucata de 180 kg de aluat care putea fi descarcata la stanga sau la dreapta:

Ei, acesta a fost proiectul. In realitate, mixerul C nu fusese construit inca, nici linile 3 sau 5. Deci aranjamentul era:

 

Cititorii vigilenti se vor intreba, "cum ajungea aluatul de la mixerul B la linia de productie 6?" Ei, acolo intervenea micutul Joel. Slujba mea, daca poti crede asta, era sa stau in stanga mixerului B, apoi sa prind gigantica bucata de 180 kg de aluat in timp ce zbura afara din mixer intr-o imensa cada-cu-roti, apoi sa imping cada spre linia de productie 6, si, folosind un dispozitiv similar cu un troliu, sa ridic aluatul pe linia 6. Trebuia sa fac asta o data la fiecare zece minute, cam de la 10 PM pana la 4 AM.

Existau si alte complicatii. Linia 6 nu prea putea face fata la 180 kg de aluat dintr-o data, si atunci trebuia sa o tai cu un cutit gigantic cam in 10 bucati. Nici macar nu vreau sa detaliez cat de absurd de dificil era.

Primele cateva zile, desigur, eram groaznic la treaba asta. Parea aproape imposibil. Fiecare os din corp ma durea. Bataturile mele aveau bataturi. Ma durea in locuri in care nu stiam ca le am.

La inceput nu puteam tine aprovizionata cu aluat linia 6. De fiecare data cand aveau o intrerupere in furnizare, aceasta cauza o "gaura" pe linia de asamblare. Cand "gaura" ajungea in cuptor, cuptorul (degajand o cantitate constanta de energie asupra unei cantitati reduse de aluat) incepea sa incalzeasca mai mult, ceea ce ardea painea. Uneori, linia 6 nu era in stare de functionare si oprea productia, insa mixerul mergea-nainte producand aluat pentru mine, si riscam sa raman fara cazi-cu-roti pentru a pastra aluatul. Cand asta se intampla, trebuia sa curat, sa uleiez podeaua si sa golesc aluatul jos pentru a fi razuit si luat de acolo mai tarziu. Nu ca asta ar fi mers foarte bine, pentru ca  daca aluatul se invechea mai mult de 30 minute, ar fi fermentat si n-ar mai fi facut paine buna. Daca asta se intampla, trebuia sa il tai in bucati de 5 kg si sa pun cate o bucata in amestecul pentru fiecare din incarcaturile de aluat viitoare.

Dupa o saptamana sau cam asa, am devenit destul de bun la treaba asta incat aveam, daca imi amintesc corect, 2 minute libere pentru odihna la fiecare ciclu-aluat de 10 minute. Am gandit un orar precis si am invatat cum sa ii spun mixerului  sa "sara" peste o incarcatura de aluat cand linia de productie se oprea.

Si am inceput sa ma gandesc de ce, cum zice o reclama la bere, unele zile sunt mai bune decat altele.

Intr-o zi, gandindu-ma la aceasta problema, am I observat ca una din cazile-cu-roti avea roti destul de prapadite care nu se invarteau bine. Uneori, cada asta nu mergea unde o impingeam eu, si se izbea in diverse lucruri. Asta era o mica frustrare. Uneori, in timp ce trageam de lant sa ridic cada, ma zgariam -- doar putin -- cu o aschie de metal de pe lant. Inca o mica frustrare. Uneori, in timp ce fugeam cu o cada goala sa prind o noua incarcatura de aluat gata sa zboare din mixer, alunecam pe o mica pata de ulei de pe podea. Nu indeajuns incat sa cad, tine minte, doar o mica, o minuscula frustrare.

Alte dati, aveam mici victorii. Am invatat sa sincronizez productia de aluat perfect, astfel incat aluatul proaspat ajungea doar cu cateva secunde inainte ca incarcatura anterioara sa se termine. Asta garanta cel mai proaspat aluat si facea cea mai buna paine. Unele victorii erau si mai mici: Observam o bucatica de aluat care zburase din mixer si se lipise de perete, iar eu o radeam cu un sparclu pe care il purtam in buzunarul de la spate si o aruncam la gunoi. YES! Cand taiam aluatul, uneori pur si simplu se taia dragut si usor. Mici momente de satisfactie, cand reuseam sa controlez lumea din jurul meu, chiar in cel mai neinsemnat mod.

Deci cam asa erau zilele. O multime de mici frustrari si o multime de mici succese. Dar se adunau. Chiar ceva care pare o mica, neinsemnata frustrare iti afecteaza cheful. Emotiilor nu par sa le pese de magnitudinea evenimentului, doar de calitatea lui.

Si am inceput sa imi dau seama ca zilele in care eram cel mai fericit erau zilele cu o multe mici succese si putine mici frustrari.

Ani mai tarziu, cand am ajuns la facultate, am invatat despre o importanta teorie a psihologiei dezvoltata de Dr. Martin E. P. Seligman numita Neajutorarea Dobandita. Teoria aceasta, sustinuta de ani de cercetare, sustine ca un inalt grad de depresie se dezvolta din sentimentul de neajutorare: sentimentul ca nu iti poti controla propriul mediu.

Cu cat mai mult simti ca iti poti controla mediul si ca lucrurile pe care le faci merg bine, cu atat esti mai fericit. Cand te simti frustrat, nervos si suparat, e probabil din cauza ca s-a intamplat ceva ce nu ai putut controla: chiar si ceva neinsemnat. Tasta spatiu de pe tastatura nu iti functioneaza bine. Cand tastezi, unele din cuvinte sunt lipite. Asta devine frustrant, caci tu apesi tasta spatiu, si nimic nu se intampla. Cheia usii tale de la intrare nu merge foarte bine. Cand incerci sa o invarti, se blocheaza. Inca o mica frustrare. Lucrurile acestea se aduna; acestea sunt lucrurile care ne fac nefericiti zi de zi. Chiar daca acestea par prea insemnate sa ne gandim prea mult la ele (Vreau sa zic ca exista oameni care mor de foame in Africa, pentru numele Domnului, nu pot fi suparat din cauza  tastelor space), mai mult sau mai putin, ne pot schimba starea de spirit. 

Sa facem o pauza pentru un minut si sa ne intoarcem la calculatoare.

O sa inventam un utilizator tipic de Windows pe care il cheama Petrica. Cand te gandesti la interfete utilizator, te ajuta sa ai in minte utilizatori imaginari. Cu cat mai realistic este utilizatorul imaginar, cu atat mai bine vei intui modul cum vor folosi produsul tau. Petrica este un contabil pentru o editura tehnica, care a folosit Windows-ul timp de sase ani la birou si putin acasa. Este destul de competent si tehnic. Isi instaleaza singur programele; citeste PC Magazine, si chiar a programat cateva macrouri Word pentru a ajuta secretarele din biroul lui sa trimita facturi. Isi pune modem de cablu acasa. Petrica nu a folosit niciodata un Macintosh. "Sunt prea scumpe," iti va spune. "Poti sa-ti iei un PC la 700 Mhz cu 128 Megi de RAM cu pretul unui..." OK, Petrica. Intelegem.

Intr-o zi, prietena lui Petrica, Gina, il roaga sa o ajute intr-o problema de calculatoare. Ei, Gina are un Macintosh iBook, pentru ca ii plac cutiile semitransparente. Cand Petrica se aseaza si incearca sa foloseasca Macintosh-ul, devine repede frustrat. "Urasc chestiile astea", zice el. Reuseste, intr-un sfarsit sa o ajute pe Gina, insa e iritat si prost dispus. "Macintosh-ul are asa o interfata greoaie."

Greoaie? Despre ce vorbeste? Toata lumea stie ca Macintosh-ul are o interfata utilizator eleganta, e drept? Insasi paradigma usurintei de utilizare?

Aici e analiza mea asupra acestui mister.

Pe Macintosh, cand vrei sa muti o fereastra poti sa prinzi cu mouse-ul de orice latura si sa o muti. In Windows, trebuie sa prinzi bara de titlu. Daca  incerci sa prinzi de o latura, fereastra isi va schimba forma. Cand Petrica  a ajutat-o pe Gina, a incercat sa lateasca o fereastra tragand de latura dreapta.  Frustrant, intreaga fereastra s-a mutat, in loc sa se redimensioneze asa cum se astepta.

In Windows, cand iti apare un message box, poti apasa tasta enter sau spatiu pentru a scapa de el. Pe Mac, spatiul nu merge pentru asa ceva. De obicei trebuie sa dai click cu mouse-ul. Cand lui Petrica ii apareau mesaje de atentionare, incerca sa scape de ele apasand tasta spatiu, cum a facut-o subconstient in ultimii sase ani.  Intaia oara, nimic nu s-a intamplat. Fara macar a-si da seama, Petrica  a izbit tasta spatiu mai tare, devreme ce, gandea el, problema trebuie sa fie ca Mac-ul nu a sesizat apasarea tastei space. De fapt, a sesizat - dar a ignorat-o! In cele din urma a folosit mouse-ul. Inca o mica frustrare.

Petrica de asemenea a invatat sa foloseasca Alt+F4 pentru a inchide ferestre. Pe Mac, asta de fapt schimba volumul . La un moment dat, Petrica a vrut sa dea click pe iconul Internet Explorer de pe desktop, care era partial acoperit de alta fereastra. Atunci a apasat Alt+F4 pentru a inchide fereastra si imediat a dat dublu click in locul unde s-ar fi gasit iconul. Alt+F4 a crescut volumul pe calculator si nu a inchis fereastra, iar dublul click a fost facut de fapt pe butonul Help din toolbarul ferestrei pe care oricum vroia sa o inchida, care imediat i-a deschis fereastra de help, deci acum are doua ferestre deschise pe care trebuie sa le inchida.

Inca o mica frustrare. Dar, baiete, se aduna. La sfarsitul zilei, Petrica e prost dispus si iritat. Cand incearca sa controleze lucrurile, ele nu raspund. Tasta spatiu si Alt+F4 "nu merg" -- pentru tot ce ar fi trebuit sa mearga, e ca si cum acele taste ar fi defecte. Fereastra nu i se supune cand incearca sa o faca mai lata, si jucandu-i o mica festa doar se muta in loc sa se lateasca. Fereastra neascultatoare. Chiar daca intregul lucru este subconstient, subtilul sentiment de a nu putea controla se transforma in neajutorare, care se transforma in nefericire. "Imi place calculatorul meu", zice Petrica. "Am totul configurat asa incat merge exact cum imi place mie. Dar Mac-urile astea sunt greoaie si dificil de utilizat. E un exercitiu de frustrare. Daca Apple ar fi lucrat la MacOS in toti anii astia in loc sa piarda vremea cu Newtons, sistemul lor de operare nu ar fi o asa harababura."

Asa-i, Petrica. Noi stim mai bine. Sentimentele lui apar in ciuda faptului ca Macintosh-ul e chiar usor de utilizat -- pentru utilizatorii de Mac. E cu totul arbitrar ce tasta apesi pentru a inchide o fereastra. Programatorii Microsoft, care, se presupune, au copiat interfata Mac, probabil s-au gandit ca adauga o noua super functionalitate lasandu-te sa schimbi dimensiunea unei ferestre tragand de orice latura. Programatorii MacOS 8.0 probabil s-au gandit ca adauga o noua super functionalitate lasandu-te sa muti fereastra tragand de orice latura.

Majoritatea flacarilor iscate, despre care poti citi in disputele UI se concentreaza pe ceea ce e facut gresit. Windows e mai bun pentru ca iti permite  mai multe moduri de a redimensiona fereastra. Si ce-i cu asta? Nu asta-i problema. Problema e, raspunde UI-ul utilizatorului in modul in care utilizatorul se asteapta sa raspunda? Daca nu, utilizatorul se va simti neajutorat si fara control, in acelasi fel cum am simtit eu cand rotile cazii cu aluat nu se roteau in directia in care le impingeam si ma izbeam de un perete. Zbang.

Interfata utilizator este importanta pentru ca afecteaza sentimentele, emotiile si starea de spirit a utilizatorilor tai. Daca interfata utilizator este gresita si utilizatorul simte ca nu iti poate controla software-ul, ei  literalmente nu vor fi fericiti, si vor da vina pe software-ul tau. Daca interfata utilizator e desteapta si lucrurile functioneaza in modul in care utilizatorul s-a asteptat sa functioneze, vor fi bucurosi caci au reusit sa duca la bun sfarsit mici teluri. Hei! Am facut un CD! A  mers! Dragut software! Iuhuuuuuuuuu!

Pentru a face oamenii fericiti, trebuie sa ii faci sa simta ca au controlul asupra mediului lor. Pentru a face asta, e nevoie sa interpretezi corect actiunile lor. Interfata treuie sa se comporte in modul in care ei se asteapta sa se comporte. 

Prin urmare, axioma fundamentala a designului de interfete utilizator:

O interfata utilizator este bine proiectata cand programul se comporta exact cum utilizatorul s-a gandit ca ar functiona.

Dupa cum a zis Hillel, orice altceva e comentariu. Toate celelalte reguli a unui bun design UI sunt doar corolare.



> Capitolul 2

Acest articol a aparut initial in engleza cu numele User Interface Design for Programmers Chapter 1: Controlling Your Environment Makes You Happy  

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