Joel on Software

Joel on Software Joel sobre Software

 

Projeto de Interface com Usuário para Programadores
Capítulo 1
Capítulo 2
Capítulo 3
Capítulo 4
Capítulo 5
Capítulo 6
Capítulo 7
Capítulo 8
Capítulo 9

Outros artigos de "Joel on Software" em Português

Outros artigos de "Joel on Software" em Inglês

Envie email para o autor (apenas em Inglês)

 

Projeto de Interface com Usuário para Programadores
Capítulo 1: Controlar o Seu Ambiente Faz Você Feliz


Por Joel Spolsky
Traduzido por Rosana de Oliveira
10 de Abril de 2000

A maioria dos programadores que eu conheço odeiam programação de interface com usuário. Isto me surpreende, porque eu acho que a programação de IU possui uma representação fácil, direta, e divertida.

É fácil porque você geralmente não precisa de algoritmos mais sofisticados do que centralizar um retângulo dentro de outro. É direto porque quando você comete um erro, você percebe imediatamente e pode corrigi-lo. É divertido, porque os resultados do seu trabalho são visíveis imediatamente. Você sente como se estivesse modelando diretamente o programa.

Eu acho que o medo da maioria dos programadores de IU vem de seu medo em produzir um design de IU. Eles pensam que o design de IU é como design gráfico: o processo misterioso no qual criatividade, bebida tipo "café-expresso", pessoas vestidas de preto com piercings estranhos produzem um visual artístico. Programadores se vêem como analíticos, pensadores lógicos: fortes na razão, fracos no julgamento artístico. Então eles pensam que não podem fazer design de IU.

Atualmente, Eu acho que o design de IU é completamente fácil e racional. Não é uma questão misteriosa que requer uma graduação de uma escola de arte e um gosto por cabelo pintado de neon-púrpura. Existe uma maneira racional de pensar sobre interfaces de usuários com alguma simplicidade, com regras lógicas que você pode aplicar em qualquer lugar para melhorar as interfaces de programas que você produz. 

Eu não vou te dar "Zen e a Arte do Design de IU". Não é arte, não é budismo, é somente um conjunto de regras. Uma maneira de pensar racionalmente e metodicamente. Este livro é desenvolvido para programadores. Eu presumo que você não precise de instruções de como fazer uma barra de menu; pelo contrário, você precisa pensar sobre o que colocar na sua barra de menu (ou se terá uma). Existe um axioma primário que ensinarei para você e que guia todo bom design de IU, e não é difícil de entender.

Meu primeiro emprego foi em uma grande, padaria industrial. A padaria foi desenvolvida para ter seis linhas de produção de pão. Para cada duas linhas de produção, havia um misturador de massa, que produzia 180 kg de formas de massa que poderiam ser transferidas para a esquerda ou direita:

Bem, este era o design. Na verdade, o Misturador C(Mixer C) não havia sido construído ainda, nem as linhas 3 e 5. Então o arranjo era:

 

Leitores atentos devem estar se perguntando, "como a massa do Misturador B (Mixer B) vinham para a linha de produção 6?" Bem, esta era a parte que o Pequeno Joel entrava. Meu trabalho, se você pode acreditar, era aguardar do lado esquerdo do Misturador B (Mixer B), apanhar os enormes 180KG de formas de massas assim que eles saiam do misturador em um carrinho (tipo uma banheira grande com rodas), então empurrava o carrinho até a linha de produção número 6, e, usando um tipo de guincho, erguia a massa até a linha 6. Eu tinha que fazer isto uma vez a cada dez minutos, das 10 da manhã até as 4 da tarde.

Haviam outras complicações. A Linha 6 não poderia na verdade lidar com 180 kg de massa de uma vez, portanto eu tinha que fatia-la com uma faca enorme em aproximadamente 10 pedaços. Eu não quero dizer o quanto absurdamente difícil isto era.

Nos primeiros dias, naturalmente, Eu era terrível neste trabalho. Parecia impossível. Cada osso em meu corpo doía. Minhas bolhas tinham bolhas. Eu tinha dores em locais onde eu não sabia que eu tinha esses locais.

No início eu não podia manter a Linha 6 abastecida com massa. Toda vez que eles tinham uma interrupção na massa, causava um grande intervalo no linha de montagem. Quando o intervalo chegava até o forno, o forno (gastando uma quantia constante de energia sobre uma quantidade reduzida de massa) começava a aquecer mais, o que queimava o pão. Algumas vezes, a Linha 6 se tornava viscosa e parava a produção, mas o misturador ia em frente produzindo massa para mim, e eu corria o risco de sair correndo com o carrinho para armazenar a massa nele. Quando isto acontecia, eu realmente tinha que limpar e polir o chão e me livrar da massa no chão para ser removida mais tarde. Sem esses problemas o trabalho corria bem, porque se a massa ficava mais velha do que 30 minutos ela fermentaria e não faria um bom pão. Se isto acontecesse, você tinha que cortar em pedaços de 5 kg e colocar cada pedaço no misturador para cada fornada futura.

Depois de uma semana ou mais, eu me tornei bom o suficiente na rotina que eu tinha atualmente, se eu me lembro corretamente, 2 minutos livre para cada 10 minutos para descansar do ciclo de massa. Eu imaginei um cronograma preciso e aprendi como dizer ao misturador para saltar uma fornada quando a linha de produção parava.

E eu comecei a pensar sobre porque, como o comercial de cerveja diz, alguns dias são melhores que outros.

Um dia, pensando sobre este problema, Eu percebi que uma das rodas do carrinho tinha rodas lentas que não giravam bem. Algumas vezes este carrinho não ia para onde eu empurrava, e colidia com as coisas. Esta era uma pequena frustração. Às vezes, quando eu estava puxando a corrente para erguer o carrinho, eu me arranhava -- só um pouco -- em uma lasca de metal na corrente. Outra pequena frustração. Ás vezes, quando eu corria com o carrinho para pegar um novo carregamento de massa do misturador, eu escorregava em uma pequena mancha de óleo na chão. Não o suficiente para cair, não se preocupe, mas era outra, pequena frustração.

Outras vezes, Eu tinha pequenas vitórias. Eu aprendi a estimar o horário da produção de massa perfeitamente, então a massa fresca chegaria segundos antes da próxima fornada chegar. Isto garantia a massa mais fresca e produzia um pão melhor. Algumas das vitórias eram ainda menores: Eu removeria uma pequena gota de massa que tinha sido arremessada para fora do misturador e se colocava na parede, e eu iria remove-la com um raspador de tinta que eu carregava no meu bolso de trás e jogava-a no lixo. SIM! Quando fatiava a massa em pedaços, algumas vezes fatiava agradavelmente e facilmente. Pequenos momentos de satisfação, quando eu gerenciava o mundo em torno de mim, até mesmo nas coisas mais insignificantes.

Então era assim que os dias passavam. Havia um grupo de pequenas frustrações, e um grupo de pequenos sucessos. Mas eles adicionavam alguma coisa. Até mesmo alguma coisa que pareça como uma pequena, inconsequente frustração afeta o seu humor. Sua emoções parecem não se importar com a magnitude dos eventos, somente a qualidade.

E eu comecei a aprender que os dias que eu era mais feliz eram os dias com muitos pequenos sucessos e poucas frustrações.

Anos mais tarde, quando eu fui para a faculdade, Eu aprendi sobre uma importante teoria da psicologia chamada Aprenda sem Suporte, desenvolvido pelo Dr. Martin E. P. Seligman. Esta teoria, foi mantida durante anos de pesquisa, significa que uma quantidade grande de depressão cresce com um sentimento de falta de proteção: o sentimento que você não pode controlar o seu ambiente.

A medida que você sente que pode controlar o seu ambiente, e as coisas que você está realmente trabalhando, você é mais feliz. Quando você se sente frustrado, zangado, e chateado, provavelmente deve ser por causa de alguma coisa que aconteceu e você não pode controlar: até mesmo uma coisa pequena. A barra de espaço no seu teclado não funciona direito. Quando você digita, algumas das palavras são truncadas. Isto é frustrante, porque você está pressionando a barra de espaço e nada acontece. A chave da sua porta de entrada não funciona direito. Quando você tenta girá-la, ela emperra. Outra pequena frustração. Estas coisas se somam; estas são as coisas que nos faz infelizes no dia a dia. Até mesmo quando elas parecem muito insignificantes para lidar (Eu quero dizer, existem pessoas famintas na África, pelo amor de deus, eu não posso ficar chateado por causa de uma barra de espaços), entretanto eles alteram o nosso humor. 

Vamos parar por um minuto e voltar para os computadores. 

Nós vamos inventar um típico usuário potencial do Windows chamado Pete. Quando você está pensando sobre interfaces de usuário, ajuda muito manter um usuário imaginário em mente. Quanto mais realista for o usuário imaginário, você estará pensando melhor sobre como eles usam o seu produto. Pete é um contador para um publicitário que tem usado Windows por seis anos no escritório e um pouco em casa. Ele é razoavelmente competente e técnico. Ele instala seu próprio software; ele lê a PC Magazine, e ele até mesmo tem programado algumas macros simples do Word para ajudar as secretárias em seu escritório à enviar faturas. Ele está adquirindo um modem em casa. Pete nunca usou um Macintosh. "Eles são muito caros," ele dirá para você. "Você pode ter um PC com 700 Mhz com 128 Mega de RAM pelo preço de..." OK, Pete. Nós entendemos.

Um dia uma amiga de Pete, Gena pede a ele uma ajuda no computador. Agora, Gena tem um Macintosh iBook, porque ela adora as caixas translúcidas. Quando Pete se senta e tenta usar o Macintosh, ele rapidamente fica frustrado. "Eu odeio essas coisas," ele diz. Ele, finalmente, é capaz de ajudar Gena, mas ele está mal humorado e infeliz. "O Macintosh tem uma interface com usuário estranha."

Estranha? Do que ele está falando? Todo mundo sabe que o Macintosh tem uma interface com usuário elegante, certo? O paradigma de fácil de usar?

Aqui está a minha análise deste mistério.

No Macintosh, quando você quer mover uma janela, você pode segurar qualquer borda com o mouse e movê-la. No Windows, você deve segurar a barra de título. Se você tentar segurar uma borda, a janela será remodelada. Quando Pete estava ajudand-a, ele tentou ampliar a janela arrastando a borda direita. Frustrantemente, a janela inteira se moveu, ao invés de redimensionar como ele esperava.

No Windows, quando uma caixa de mensagem aparece, você pode acionar a tecla Enter ou a barra de espaço para retirar a caixa de mensagem.  No Mac, espaços não funcionam. Você geralmente precisa clicar com o mouse. Quando Pete ficou atento, ele tentou retira-las usando a barra de espaço, como ele tem feito inconscientemente nos últimos seis anos. Na primeira vez, nada aconteceu. Sem ao menos se dar conta disto, Pete esmurrou a barra de espaço, pensando que o problema devia ser que o Mac não registrou o acionamento da barra de espaço. Na verdade,  ele registrou -- mas isto não importava! Eventualmente ele usava o mouse. Outra pequena frustração.

Pete também aprendeu a usar Alt+F4 para fechar janelas. No Mac, Isto na verdade altera o volume. Em um determinado momento, Pete queria clicar no ícone do Internet Explorer no desktop, que estava parcialmente coberto por uma outra janela.  Então ele teclou Alt+F4 para fechar a janela e imediatamente deu um duplo-clique onde o ícone estava. O Alt+F4 aumentou o volume no computador e não fechou a janela, então o seu duplo-clique de fato acertou o botão de Help na barra de ferramentas na janela no qual ele queria fechar de qualquer maneira, e que começou imediatamente a trazer a janela de help, então agora, ele tem duas janelas abertas que ele tem que fechar.

Outra pequena frustração. Mas, garoto, deixe isto para lá. No fim do dia, Pete está mal humorado e zangado. Quando ele tenta controlar as coisas, elas não respondem. A barra de espaço e as teclas Alt+F4 "não funcionam" -- para todos os efeitos, é como se aquelas teclas estivessem quebradas. A janela o desobedece quando ele tenta ampliá-la, fazendo uma pequena travessura se movendo ao invés de ampliar. Janela má. Mesmo que toda a coisa seja subconsciente, o sentimento agudo de estar fora do controle se traduz como sem ajuda, que se traduz em infelicidade. "Eu gosto do meu computador," Pete diz. "Eu tenho tudo setado portanto funciona exatamente da maneira que eu gosto. Mas estes são estranhos e difíceis de usar. É um exercício em frustração. Se a Apple estivesse trabalhando nos MacOS todos estes anos ao invés de confundir com Newtons, o sistema operacional deles não seria tão confuso."

Certo, Pete. Nós sabemos. Seu sentimento vem independente do fato que o Macintosh realmente é muito fácil de usar -- para usuários Mac. É totalmente arbitrário qual tecla você pressiona para fechar uma janela. Os programadores Microsoft, que estavam, presumivelmente, copiando a interface MAC, provavelmente pensaram que eles estavam adicionando uma nova característica melhor por deixar que você redimensionasse janelas arrastando qualquer borda. Os programadores do MacOS 8.0 provavelmente pensaram que eles estavam adicionando uma nova característica melhor quando eles deixavam você mover janelas arrastando qualquer borda.

A maioria das discussões hostis que você lê sobre interface com usuários focam a discussão na coisa errada. Windows é melhor porque dá à você mais maneiras para redimensionar a janela. E daí? Este não é o ponto importante. O ponto é, a IU responde para o usuário na maneira no qual o usuário esperava que ele responda? Se não, o usuário vai sentir sem ajuda e fora de controle, da mesma maneira que eu senti quando as rodas do carrinho de massa não girava da maneira que eu as empurrava, e colidia com a parede. Bum.

IU é importante porque afeta os sentimentos, as emoções, e o humor de seus usuários. Se a IU está incorreta e o usuário sente como se eles não pudessem controlar o seu software, eles literalmente não serão felizes e eles amaldiçoarão isto no seu software. Se o IU é esperto e as coisas funcionam da maneira que o usuário espera que elas funcionem, eles estarão felizes como se eles controlassem o sucesso de pequenos objetivos. Uau! Eu produzi um CD! Simplesmente funcionou! Software legal! Uauuuuuuu!

Para fazer pessoas felizes, você tem que deixá-los se sentir como se eles estivessem no controle de seus ambientes. Para fazer isto, você precisa interpretar corretamente suas ações. A interface precisa se comportar da maneira que eles estão esperando que ela se comporte. 

Deste modo, o axioma de maior importância de todos os projetistas de interfaces com usuários:

Uma interface de usuário é bem projetada quando o programa se comporta exatamente como o usuário pensa que ele se comportaria.

Como Hillel disse, tudo mais é comentário. Todas as outras regras de um bom design de IU são apenas corolários.



> Capítulo 2

Esse artigo apareceu originalmente em Inglês com o título User Interface Design for Programmers Chapter 1: Controlling Your Environment Makes You Happy  

Joel Spolsky é o fundador da Fog Creek Software, uma pequena empresa de software na cidade de Nova York. Formou-se na Universidade de Yale, e trabalhou como programador e gerente na Microsoft, na Viacom e no Juno.


O conteúdo dessas páginas reflete exclusivamente a opinião do autor.
Todo o conteúdo Copyright ©1999-2005 Joel Spolsky. Todos os direitos reservados.

FogBUGZ | CityDesk | Fog Creek Software | Joel Spolsky