Design de interfaces
Aproveitando o artigo do Raphael sobre o design de um produto ou de uma solução, quero falar aqui sobre o design de um dos aspectos de um produto de software, que é a interface homem máquina.
Se perguntarmos para 100 pessoas qual a principal característica da Apple por exemplo, muito provavelmente 98 dirão que é o design de seus produtos (os 2 outros dirão que é o preço absurdo..mas isto está mudando!). Tudo o que sai da empresa do Tio Jobs prima pela beleza, atenção nos detalhes e simplicidade de uso. Nada mais simples e clean do que um iPod shuffle, com seus 4 controles. Alguém me disse um dia que primeiro eles definem como o produto vai ser, depois eles pensam como fazer para que ele seja daquele jeito. Não duvido disso.
A Google é outra que merece destaque no quesito interfaces. Não pela beleza: as interfaces deles são muitas vezes feias. Mas eles inovaram no quesito simplicidade, usabilidade e interatividade, mostraram ao mundo um novo jeito de interagir com sites na internet. O melhor exemplo disso é a tela inicial do motor de busca, uma tela branca e um campo de texto (na verdade, o motivo inicial desta tela espartana foi a falta de conhecimento de HTML dos fundadores Brin e Page). E nada mais eficiente, rápido e leve do que a interface do GMail, ou do Google Maps. E basta ver a quantidade de ofertas de empregos para engenheiros de interação em Seattle ou New York.
E existem muitas outras empresas que claramente se preocupam com a qualidade da forma como os usuários irão interagir com seus produtos. Flickr, Adobe, 37 signals…
Ok, back to Brazil.
A minha experiência pessoal é de que interface é encarada como um mal necessário na maioria dos projetos. Sobretudo em projetos para empresas. Infelizmente ainda não tive a oportunidade de trabalhar em projetos para o grande público, ou pelo menos em projetos onde quem paga é efetivamente quem usa. Talvez seja diferente. Mas em projetos enterprise, é assim.
Em projetos web, o melhor que podemos ter é uma interface construída em photoshop e um web designer para dar um ar mais profissional para a coisa. Daí o cliente vê a interface (em geral photoshop), e usa todo o seu conhecimento (em geral inexistente) em interação para aprovar. Por fim pegam algum computeiro que esteja sem nada melhor pra fazer e mandam ele implementar a interface.
Eu posso contar nos dedos de uma mão o número de desenvolvedores que eu conheço que gostam de trabalhar com interfaces. Acho que não preciso discutir os problemas de pôr alguém pra fazer algo que não gosta, e que acha que é um mal necessário. Preciso?
Sem contar que a maioria das vezes, as interfaces se resumem a listagens gigantescas e formulários. Nada contra eles, muitas vezes resolvem. A questão é quando tratamos com quantidade gigantescas de dados (o que é bastante comum hoje em dia, tanto em sistemas empresariais quanto em sistemas para o grande público). Grandes chances de que muito rapidamente se perceba que a interface é pouco produtiva, lenta…
Não estou aqui advogando pela otimização precoce de um sistema. Estou advogando pelo estudo cuidadoso de projetos de interface e interação quando a questão da quantidade de dados/eficiência de uso é algo facilmente previsível e sobretudo crítico para o sucesso do projeto. Exemplos de interfaces que requerem um certo estudo? Que tal uma tela que tenha que sintetizar graficamente uma tabela de excel de 500 colunas por 3000 linhas, permitindo que decisões possam ser tomadas a partir de uma análise rápida do conjunto ou então que dados isolados sejam facilmente encontrados e manipulados em um mesmo ambiente? Ou então uma listagem com milhares de nomes acessada centenas de vezes por dia, onde seja imperativo encontrar um nome específico ou conjunto de nomes que atendam certas características de forma rápida?
Um bom projeto de interface requer uma equipe especializada nisso, que saiba lidar com aspectos teóricos (usabilidade, acessibilidade, modelos mentais, metáforas, affordance), com aspectos técnicos (Javascript, HTTP, programação backend eficiente), e com aspectos gráficos e de layout (cores, fontes, posicionamento de elementos). Requer gente que tenha interesse pelo assunto, e que se preocupe com detalhes. Requer estudos, protótipos, testes. Requer coerência com o resto do sistema, e com o tipo de usuário que deverá utilizar o sistema. Requer pensar um pouco out of the box: muitas vezes, as soluções padrão não resolvem o problema adequadamente.
Resumindo: requer dedicação e tempo. Não pensar nisso pode ser o barato que sai caro.
Sugiro, a quem tiver interesse em trabalhar com design de interfaces, dar uma lida no texto do Joel Spolsky sobre tema: User Interface Design for Programmers.

Design de interfaces « Log4Dev
Levante a mão quem gosta de desenvolver interfaces de usuários! 1, no máximo. Infelizmente, este tema é considerado um mal necessário em projetos. Mas não deveria…
Eu! hahaha, mas não vale… Ótimo artigo! Faltou ressaltar que em geral o trabalho de usabilidade é considerado simples por todos, e em geral quando pedem otimização é “olha quero que você otimize essa tela em 1 hora, tá?”. Não deveria ser assim, esse tipo de coisa tem que ser estudada e pensada no começo do projeto, quando o projeto já está na metade, e provavelmente ninguém deu atenção para a interface, fica semi impossível de se consertar, as barreiras são muito grandes. No final das contas, o cliente vai reclamar da usabilidade e dizer que o sistema é muito “lento” de se usar, em contrapartida a empresa que desenvolveu o sistema sempre vai dar mais importância para a tecnologia utilizada no backend e ignorar completamente a interface. Quantas vezes já não vimos a tecnologia sobrepor a usabilidade? Atualmente mesmo não consigo mudar coisas essenciais para o entendimento do usuário, porquê “foi adotado a ferramenta X para se fazer listagem”. Dane-se o usuário, o que importa é que o desenvolvedor conseguiu ganhar minutos de desenvolvimento, é o que pensam.
Extrapolando uma certa conversa que tivemos em um almoço aqui (”usabilidade” do Wii vs Playstation 3), acho que o mesmo vale para outros sistemas: você pode apresentar as coisas de maneira mais simples se tiver uma boa interface
Excelente artigo!
Aliás, serve quem gosta de desenvolver interface com CMS? :p
Claro. CMS não foge às regras de usabilidade
Eu pessoalmente me preocupo muito com usabilidade e sou extremamente crítico quando uso qualquer software que seja (aplicações web obviamente inclusas).
O que eu mais gosto de fazer é eliminar o trabalho repetitivo e braçal, tornar as atividades que você mais executar simples de serem feitas e de maneira rápida, de preferência otimizar para o uso apenas do teclado ou mouse, nunca de ambos.
Se o trabalho do usuário por exemplo for mais de digitação então acho que a melhor estratégia é deixar tudo ao alcance dos dedos, com teclas de atalho ou apenas uma boa sequência de foco (via a tecla tab) para os componentes gráficos (widgets).
Se o a tarefa é normalmente feita com o clique em botões, seleção em listas, então o melhor caminho pode ser realmente disponibilizar tudo para o usuário via comando do mouse, se no meio de tudo existir um campo data por exemplo, e o usuário tenha que fazer modificações, então porque fazer com que neste caso ele fique trocando entre teclado e mouse? Neste caso eu acho que a melhor estratégia seria disponibilizar botões para aumentar/diminuir os dias e meses deste campo data, mas este é apenas um exemplo.
Grande parte do que eu considero uma aplicação fácil de usar é o quanto ela NÃO me força a fazer tarefas repetitivas/braçais e o qual rápido ela me permite fazer o que sobra disto.
Bom, estes foram meus 2 cents sobre o assunto.