Por que eu devo ler este artigo:Este artigo é útil para analistas, desenvolvedores ou outros profissionais envolvidos no desenvolvimento de software que têm o interesse em conhecer os conceitos de usabilidade e compreender como aplicá-los no dia a dia mesmo em pequenos projetos, com prazos curtos e orçamentos baixos.

Para isso, serão apresentadas as características estudadas na usabilidade, técnicas e também exemplos reais para facilitar o entendimento.

Assim, você irá adquirir conhecimentos que lhe permitirão discutir sobre o assunto e tomar decisões mais adequadas em seus projetos, bem como saberá como continuar os estudos caso queira se aprofundar no assunto.

É muito comum a preocupação com a usabilidade e experiência do usuário em sites, e-commerces, softwares vendidos como serviços (SaaS) ou outros sistemas com muitos usuários. Apesar disso, a busca por uma boa usabilidade pode ser almejada por analistas e desenvolvedores em qualquer projeto, até mesmo em pequenas funcionalidades ou alterações em um sistema já existente.

Grandes empresas costumam contratar profissionais especializados nesta área ou recorrem a consultorias externas para melhorar a usabilidade do seu produto, porém, esse conhecimento pode ser adquirido pelas empresas e utilizado no dia a dia, tornando desnecessária a contratação de serviços externos quando não se tem recursos para isso, por exemplo.

Ao desenvolver um sistema corporativo ou uma funcionalidade em um sistema já existente, muitas vezes pensa-se apenas no “o quê” e no “como” fazer. No entanto, mais importante do que isso é entender o “porquê”, pois ao compreender a real necessidade de um sistema/funcionalidade é possível criar algo que realmente atenda aos usuários e que faça com que eles queiram e gostem de utilizar.

Neste contexto, um dos princípios utilizados para a implementação de soluções no Google é: “Foque no usuário que o resto se ajeita” (veja a seção Links). Não fazer isso talvez seja um dos grandes erros cometidos por desenvolvedores de software.

A experiência do usuário e formas para compreender o que ele realmente precisa são assuntos muito interessantes, mas também muito amplos. Assim sendo, esse artigo focará nos elementos estudados na usabilidade explicados através de exemplos que você poderá aplicar em projetos que está trabalhando.

Conhecendo o básico sobre usabilidade torna-se possível aprimorar alguns itens no seu projeto já nas etapas iniciais, como no brainstorm ou na análise de requisitos, e estas alterações poderão gerar vantagens significativas ao aumentar a satisfação do usuário.

É comum um usuário não ter uma experiência agradável ao tentar realizar tarefas simples, como fazer o check-in para seu voo, e não conseguir finalizar o que queria ou ter dificuldades para isso.

Outro exemplo relevante, identificado a partir de alguns testes de usabilidade, sinaliza que um em cada três usuários que tentavam realizar alguma tarefa em e-commerces não conseguia completar seu objetivo com sucesso.

Essa visão fez as empresas começarem a se preocupar com a usabilidade, pois elas perceberam que estavam perdendo dinheiro.

Por sua vez, em sistemas corporativos, onde esse prejuízo não é tão notável por ser difícil de ser mensurado, existem danos que também podem ser muito negativos para a empresa, como: diminuição da produtividade do usuário, estresse e insatisfação, falha na comunicação da equipe, entre outros.

Com base nisso, neste artigo serão apresentados os conceitos que compõem a base da usabilidade, exemplos e casos reais que poderão ser adotados como referência nos projetos em que você está trabalhando.

O que é Usabilidade?

O termo usabilidade é estudado por diversas áreas e se refere à forma de uso de algo. A usabilidade diz respeito à facilidade que o usuário tem de aprender a usar uma interface e atingir seu objetivo sem ter mais problemas do que ele está disposto a aceitar.

A norma ISO 9241 define usabilidade como uma “medida na qual um produto pode ser usado por usuários específicos para alcançar objetivos específicos com eficácia, eficiência e satisfação em um contexto específico de uso”.

Ademais, diversos autores e normas apresentam atributos considerados essenciais para a usabilidade. Os mais comuns na literatura estão relacionados à condução dos usuários (forma de guiá-los durante o uso do sistema), controle e adaptação à tarefa (controle que o usuário possui e a capacidade do sistema de se adaptar conforme a necessidade), consistência (na exibição e nos resultados de ações), gestão de erros (evitar erros e o que fazer quando eles acontecem) e carga de trabalho (tudo aquilo que é apresentado em tela); conceitos estes que serão apresentados a seguir.

Condução

A condução está relacionada à forma de guiar os usuários durante o uso de um sistema, apresentando todas as informações, instruções e avisos necessários. Ela pode ser dividida em:

· Presteza: Possibilitar que o usuário identifique onde está e fornecer ferramentas de ajuda para melhorar a navegação;

· Agrupamento e distinção de itens: Organização visual dos itens e suas relações. Ordenar, posicionar e distinguir o que é apresentado de forma clara;

· Feedback imediato: Sempre que possível, dar respostas às ações do usuário no momento em que elas ocorrerem;

· Legibilidade: Preocupação com as características das informações apresentadas que possam dificultar ou facilitar a leitura desta, como tamanho da fonte, contraste letra/fundo, espaçamentos, etc.

Controle e adaptação à tarefa

O usuário precisa ter controle de toda a sua interação com o sistema. Dessa forma, erros e ambiguidades são limitados. Além disso, o sistema deve processar somente as ações solicitadas pelo usuário e somente quando solicitado a fazê-lo.

O sistema será mais bem aceito pelos usuários se eles tiverem controle sobre o que acontece no sistema. O usuário precisa, por exemplo, conseguir cancelar qualquer ação que esteja realizando, podendo voltar facilmente ao estado anterior da aplicação. Por exemplo: ele não deveria assistir a um vídeo que ele não possa pausar ou voltar para o início.

Como uma única interface dificilmente atenderá a todos os seus usuários em potencial, pois cada usuário é único (visto que possui experiências e conhecimentos diferentes), as interfaces devem se adaptar aos diferentes tipos de usuários.

Para isso, é necessário diferenciar usuários novatos de usuários com mais experiência, dando subsídios como tutoriais passo-a-passo para os novatos e fornecendo atalhos e funcionalidades mais avançadas para os experientes.

Consistência

A consistência é o princípio que garante que:

· Informações semelhantes sejam sempre apresentadas da mesma forma;

· Uma mesma ação, mesmo que em lugares diferentes, tenha o mesmo efeito.

A consistência facilita a aprendizagem e desenvolve a previsibilidade do sistema, visto que usuários, por meio do que já conhecem, podem aprender a usar outras partes do sistema sem grandes dificuldades.

Gestão de erros

A gestão de erros visa evitar ou reduzir o número de erros e o tratamento adequado para quando ocorrer algo inesperado. Nem todas as falhas podem ser previstas e evitadas, mas deve haver um esforço para isso e para deixar o sistema preparado para possibilitar ao usuário compreender o que aconteceu de errado e dar continuidade ao que estava fazendo.

A gestão de erros pode ser dividida em:

· Proteção contra os erros: Uso de todos os meios para detectar e prevenir erros no sistema. Um exemplo básico seria a utilização de máscaras para impedir a digitação incorreta de um e-mail, por exemplo, pelo usuário;

· Correção de erros: Deve ser indicado ao usuário onde aconteceu o erro e como corrigir. Por exemplo, deve ser indicado o campo que não foi preenchido corretamente e informar qual seria o formato adequado. Podem ser exibidos caminhos alternativos ou formas de entrar em contato com a empresa ou equipe de suporte para resolver o problema;

· Qualidade das mensagens de erro: As mensagens devem sempre ser claras ao usuário e com informações úteis, explicando o que aconteceu e o que pode ser feito em seguida.

Muitos autores tratam o conceito de gestão de erros focando apenas em entradas de dados ou comandos incorretos realizados pelos usuários, mas todas as técnicas – como “qualidade nas mensagens” – podem ser empregadas para qualquer tipo de erro que aconteça no sistema, até mesmo um problema de infraestrutura, como um banco de dados fora do ar.

Carga de trabalho

A carga de trabalho é o conjunto de todos os elementos apresentados em tela mais as ações realizadas pelo usuário que não sejam intuitivas.

Assim, quanto mais botões, textos, imagens, entre outros elementos existirem na tela e tudo que faça o usuário ter dúvidas, que não seja claro no primeiro momento e o faça pensar em como realizar tal ação, aumentam a carga de trabalho.

Em termos de usabilidade, recomenda-se a diminuição da carga de trabalho a fim de reduzir a probabilidade de o usuário cometer erros.

A tarefa cognitiva imposta ao usuário deve ser breve, concisa, com o mínimo possível de ações e com baixa densidade informacional. Desta forma o usuário poderá desempenhar suas tarefas de forma mais eficiente.

Experiência do Usuário (UX)

A experiência do usuário (ou User eXperience), por sua vez, não envolve apenas a facilidade do uso e conseguir atingir os objetivos como a usabilidade propõe. Esse conceito também está relacionado aos sentimentos e emoções do usuário antes, durante e depois de utilizar o sistema.

Muitos autores ilustram essa diferença com o exemplo de uma rodovia com alta usabilidade e outra com boa experiência do usuário. Uma rodovia com alta usabilidade é larga, tem poucas curvas, não tem subidas e descidas, não tem tráfego contrário, não tem buracos e é bem sinalizada.

Mas uma rodovia dessas, por mais que faça você chegar rapidamente ao seu destino, pode ser monótona, maçante e até estressante.

Por sua vez, uma rodovia com boa experiência do usuário proporciona outros elementos, como ter como vista o mar e/ou montanhas, você sentir o cheiro da natureza, você passar ao lado de um rio, atravessar cidades com culturas diferentes, e encontrar com facilidade lojas com todo o tipo de comida, bebida e artesanato. Por mais que você não chegue tão rápido ao seu destino, sua experiência pode ser melhor nesta segunda rodovia, não acha?

Em software, a experiência do usuário começa desde o primeiro contato com o produto, como num anúncio, e vai além do uso, como em questões de engajamento com a marca, ou seja, também envolve questões como atendimento pelos canais de contato, entrega do produto, prazos, pós-venda, surpreender o cliente ao superar expectativas e o que mais você conseguir para proporcionar mais prazer ao uso do sistema.

A usabilidade pode ser essencial para o sucesso do seu sistema, mas pensar de forma mais ampla, em toda a experiência do usuário, pode ser um grande diferencial.

Arquitetura da Informação

O conceito de Arquitetura da Informação (AI) pode ser simplificado como a forma de organizar o conteúdo de tal modo que as pessoas consigam encontrar o que procuram. Alguns autores estruturam a arquitetura da informação em quatro sistemas:

· Organização: Criação de categorias e agrupamentos de todas as informações apresentadas para atender os objetivos do negócio e as necessidades dos usuários;

· Navegação: Todas as maneiras de navegar através do conteúdo, possibilitando ao usuário saber onde ele está e para onde pode ir;

· Busca: Possibilidade de pesquisas para encontrar algo dentro de todo o conteúdo disponível de forma eficiente;

· Rotulação: Preocupação com a descrição das categorias, opções, títulos, links, etc., de uma maneira consistente e em uma linguagem significativa e clara para o usuário.

Como importante complemento, ela tem como base três variáveis que devem ser levadas em consideração sempre que você for projetar algo, são elas:

· Usuários: Suas tarefas, necessidades, comportamentos, experiências, etc., vão auxiliar na definição da forma que a informação será organizada e disponibilizada;

· Conteúdo: Os tipos de informação apresentados (notícias, histórias, produtos, comentários), tipos de documentos (imagem, vídeo, PDF, texto), o volume dos dados (os vídeos são pequenos ou grandes?

São quantos gigas de dados? Isso crescerá?), quem escreve ou cria (donos do sistema, usuários externos, qualquer um), etc., influenciarão na definição de como apresentar o conteúdo aos usuários;

· Contexto: Toda decisão também dependerá dos objetivos estratégicos e da proposta de valor do sistema, assim como da cultura e política da empresa, recursos, restrições tecnológicas, localização, etc.

É necessário entender o negócio e os objetivos por trás do sistema para fazer um melhor projeto de arquitetura da informação.

Essas variáveis são únicas para cada sistema e o arquiteto da informação deve obter e utilizá-las para conhecer as necessidades específicas e o que pode ser feito em cada projeto para tomar suas decisões.

Existem muito termos utilizados quando se fala da preocupação com o usuário (veja o BOX 1), cada um com suas especificidades. Porém, mais importante do que o nome utilizado é a sua atitude e as técnicas que você pode utilizar para contribuir com seus usuários.

Nota: O livro “Information Architecture for the WWW” de Rosenfeld e Morville, publicado pela editora O’Reilly, se aprofunda no assunto “Arquitetura da Informação” explicando de um modo fácil de compreender, através de analogias e exemplos, todos os conceitos de AI e como aplicá-los.

BOX 1. Muitos nomes, mas uma só preocupação: o usuário!

No final dos anos 1990, os nomes mais usados para descrever a preocupação com os usuários eram Usabilidade e Design Centrado no Usuário (UCD). Os profissionais dessas áreas eram os usabilistas e os arquitetos da informação.

No entanto, com o passar dos anos, o termo Experiência do Usuário (UX) ganhou notório espaço e se tornou um dos mais citados. Outros termos que também são referenciados, mas não com tanta frequência, são: Design Interativo, Design de Interface e Gestão de Conteúdo.

Como aplicar a usabilidade no dia a dia?

A partir de agora serão apresentados conceitos com exemplos reais da adoção de usabilidade. A partir disso, você poderá transportá-los para situações que já vivenciou e para o projeto que está trabalhando no momento.

O que é mais importante para o usuário?

Para descobrir o que é mais importante para o usuário é necessário buscar o essencial, e você pode fazer isso através de algo simples. Lembre-se, a página mais acessada no mundo tem, basicamente, uma imagem, um campo de texto e um botão.

Uma técnica que vem sendo muito utilizada no desenvolvimento de software é o Mobile First, onde você primeiro projeta seu sistema ou site para celulares e depois o adapta para telas maiores. Uma das principais vantagens dessa estratégia é que você é obrigado a focar nas funcionalidades principais do sistema e retirar ou dar menos importância às secundárias.

Em cada funcionalidade que projetar, pense primeiro no que é mais importante para o usuário naquela tela. Reflita sobre cada informação apresentada.

Será que é mesmo necessário definir 12 colunas em uma tabela se ele, 98% das vezes, precisa somente de três? Se as outras colunas são necessárias apenas 2% das vezes, por que não as tirar da tela e permitir que sejam acessadas por um link ou talvez por outra tela?

Outro exemplo, será que é necessário ter esses quatro gráficos na tela conforme o usuário solicitou? Só um não resolveria?

É necessário avaliar cada caso dentro do seu contexto, pois não existe receita pronta e cada situação deve ser pensada de acordo com os objetivos da aplicação.

Antes de adicionar algo em uma funcionalidade, faça as seguintes perguntas: isso simplifica o que o usuário faz? Isso vai agregar valor para o usuário? Se a resposta for “não”, provavelmente você deveria deixar de lado e não adicionar esse algo ao produto.

Dependendo do sistema que você está desenvolvendo, os usuários podem não ter muita experiência com computadores. Um exemplo disso é um sistema para medicina do trabalho, onde um médico com 75 anos que começou a usar computador há pouco tempo só precisa preencher dados em uma tela do sistema.

Diante disso, quanto mais simples for a solução, quanto mais visível for o botão Salvar, melhor. Se ele conseguir utilizar, outras pessoas com mais experiência no uso de computadores também conseguirão.

Se você começar a adicionar funcionalidades que para você pareciam interessantes, talvez apenas polua a tela e dificulte o trabalho do seu amigo médico.

Além disso, não pode-se esquecer dos usuários avançados. Deste modo, deve-se pensar também em maneiras de atrair os usuários avançados, sem interferir na simplicidade para os usuários iniciantes.

Não me faça pensar

Steve Krug, renomado escritor e consultor na área de Usabilidade, escreveu um livro com esse nome e definiu como elemento principal da usabilidade que tudo seja claro, ou pelo menos, autoexplicativo. Sendo assim, cada funcionalidade deve estar evidente, isto é, quem acessá-la deve ser capaz de:

· Compreendê-la: Saber o que é e para que serve;

· Realizar seu objetivo: Conseguir realizar o que é proposto sem dificuldades.

Nota: O livro de Steve Krug “Não me faça pensar” explica, de forma simples e divertida, os conceitos-chave de usabilidade e é leitura recomendada para quem quer estudar mais sobre o assunto.

Portanto, busque ser autoexplicativo.

Faça com que o usuário entenda o que é cada funcionalidade e que cada clique do usuário seja intuitivo e não ambíguo, isto é, em cada ação o usuário deve ter certeza que está fazendo do jeito certo para chegar onde deseja.

O usuário não deve se fazer perguntas enquanto navega no sistema. Ele não deve precisar pensar em coisas como: Por onde eu começo? Onde estou agora? Por que isso tem esse nome? Onde está tal informação? Eliminar as perguntas na cabeça do usuário é um dos objetivos da usabilidade.

Use padrões e convenções

Pode parecer óbvio, mas existem muitos sistemas que botões com o mesmo comportamento, em telas semelhantes, apresentam labels (textos) diferentes (Salvar, Gravar, Enviar e Registrar, por exemplo). Além disso, se esse botão está sempre à esquerda, mantenha-o à esquerda em todas as telas.

A ideia é que após estabelecer um padrão, siga-o, a não ser que você tenha uma razão específica para não o seguir como, por exemplo, uma tela específica em que ficará mais claro para o usuário se o botão ficar à direita.

Existem muitos outros padrões que você pode adotar no sistema e até mesmo entre sistemas na mesma empresa. Padrões de menus, cores, filtros, paginação, fonte, ícones, etc. É muito comum, por exemplo, as empresas estabelecerem uma guideline que oriente os desenvolvedores sobre padronizações. Se sua empresa ou cliente ainda não possui, que tal sugerir ou até mesmo criar uma?

Além de criar e estabelecer padrões, você pode tirar proveito de convenções já existentes. A placa “Pare” é um bom exemplo, sendo muito parecida em todos os países. Assim, apenas de olhar o motorista já vai saber do que se trata (veja a Figura 1).

Placa “Pare” ao redor do mundo
Figura 1. Placa “Pare” ao redor do mundo.

Apesar disso, dificilmente você vai ter a placa “Pare” no seu sistema, não é? Mesmo assim, busque, sempre que possível, utilizar convenções existentes a fim de facilitar o entendimento dos seus usuários.

Algumas convenções comuns são:

· Ícones para vídeo ou para redes sociais. Tente não criar algo totalmente novo. Use o que as pessoas estão acostumadas;

· Logo da empresa no canto superior esquerdo, que ao clicado volta para a home do sistema;

· Campo de busca no topo da tela;

· Dados do usuário/conta no canto superior direito;

· Entre outros.

Cada usuário é único

Imagine você chegando em uma cafeteria e pedindo um cappuccino com canela por cima. No dia seguinte, ao chegar nessa mesma cafeteria, a garçonete lembra de você, lembra do seu nome e, após te cumprimentar, pergunta: “Quer um cappuccino com canela hoje?”. Esse simples comportamento fará você gostar do lugar, provavelmente voltar lá mais vezes, comprar mais coisas e ainda indicar aos amigos.

Isso se chama “estratégia de personalização” e nos últimos anos tem saído do mundo físico e aparecido no mundo virtual, como em e-commerces que apresentam produtos com base em interesses individuais, ou a Netflix, que tem um algoritmo para recomendar filmes que você gostaria de assistir. Isso também é chamado de marketing one-to-one, que é quando você faz algo personalizado e não uma campanha para atingir a todos.

Essa estratégia é muito utilizada em e-mail marketing, apresentação de anúncios e produtos recomendados e pode ser utilizada dessa e de outras formas para melhorar a experiência do usuário.

Por mais que você saiba quais são as seções mais acessadas no seu sistema, existem usuários que geralmente acessarão determinada funcionalidade que não é tão popular.

Diante disso, por que não criar uma seção de favoritos ou de mais acessados por usuário para facilitar a busca daquilo que cada usuário mais acessa?

Segundo a ISO 9241, o sistema é capaz de individualização quando “a interface pode ser modificada para se adaptar as necessidades da tarefa, as preferências individuais e as habilidades dos usuários”.

Em um supermercado você não precisa procurar todas as vezes onde é a seção das cervejas, pois após a primeira vez que encontrar a seção você sempre vai lembrar algo como: “Está no final do primeiro corredor, perto das carnes”, porém na web não existe, de forma tão clara, essa lembrança por localização. Por isso, atalhos pessoais, como favoritos, tornam-se importantes.

Você pode também armazenar informações como as pesquisas mais realizadas pelo usuário, dados selecionados, valores preenchidos e o que mais constatar que pode auxiliar o uso do sistema no dia a dia. Em uma solução com janelas ou portlets, por exemplo, onde o usuário pode modificar a posição e tamanho dos elementos, esses dados alterados podem ser armazenados e reaplicados em um próximo acesso.

Um exemplo comum é o browser, que salva o último diretório de onde você selecionou o arquivo para fazer o upload. Assim, na próxima vez que for necessário fazer um upload, a janela já será aberta neste diretório. Note que muitas vezes o usuário pode nem perceber uma funcionalidade como esta. Ele simplesmente a usa. No entanto, independentemente disso, ela facilita bastante a usabilidade, aumentando a satisfação do usuário.

Em um sistema de contratos imobiliários, por exemplo, onde cada vez que o usuário faz login ele escolhe um contrato e começa a utilizar o sistema, você poderia armazenar o último contrato selecionado e na próxima vez que o usuário fizer login, o sistema automaticamente seleciona aquele contrato.

No entanto, caso em cada login o usuário selecione um contrato diferente, não faz sentido salvar essa informação. Talvez apenas sugerir o contrato ao invés de já selecioná-lo.

Lembre-se, cada sistema ou funcionalidade deve ser pensado individualmente, para verificar quais preferências de usuário podem ser salvas.

A fim de garantir performance mesmo adicionando operações no banco de dados, como as de salvar as preferências e posteriormente recuperá-las, uma possibilidade é o uso de um banco de dados não relacional como o MongoDB, que pode possibilitar operações mais rápidas (veja o BOX 2).

BOX 2. MongoDB

O MongoDB é um banco de dados open source não-relacional orientado a documentos que provê alta performance, disponibilidade e fácil escalabilidade. Uma das vantagens do MongoDB é a manipulação de um grande volume de dados de forma mais simples e performática que um banco de dados relacional.

Ele é um dos bancos de dados não relacionais mais utilizados e como um dos seus diferenciais, possui muito material para estudo na internet e em artigos publicados na Java Magazine, sendo adotado em projetos pequenos, com apenas um desenvolvedor, a projetos de grande porte.

O MongoDB pode ser utilizado como uma alternativa ao banco de dados relacional, porém também é comum se deparar com sistemas que adotam bancos relacionais e também o MongoDB, em busca de performance para determinadas partes do sistema, como logs (registrando ações do usuário como login, logout, tela acessadas), auditoria de dados (registrando quem alterou determinado registro e quando) e também preferências do usuário.

Valorize o tempo das pessoas oferecendo performance

Alguns filósofos dizem que o tempo é o bem mais precioso das pessoas. Pensando nisso, não é interessante que o seu projeto leve 10 segundos para abrir uma determinada tela e quase um minuto para abrir um relatório. Problemas de performances podem ocorrer por vários motivos, no entanto existem inúmeras formas de identifica-los, monitorá-los e corrigi-los.

O site Browser Diet explica várias ações que você pode tomar para deixar seu sistema mais leve e rápido (veja a seção Links). Ele fala sobre:

· Otimização de imagens;

· Unificação e compressão de arquivos CSS e JS;

· Dicas de códigos HTML e JS;

· Ferramentas de diagnóstico;

· Entre outras coisas.

Uma tela que exibe um menu no lado esquerdo com os meses do ano e que quando você clica em um mês exibe as faltas dos funcionários pode ficar muito lenta se tudo for consultado de uma só vez (digamos que 10 segundos para abrir a tela pela primeira vez).

Ao alterar a lógica para trazer as faltas apenas no mês selecionado pode tornar a abertura da tela mais rápida (caindo para um segundo, por exemplo).

O ponto negativo é que esse um segundo acontecerá cada vez que o usuário clicar em um mês. No entanto, como o usuário geralmente vê apenas o mês atual ou o mês anterior, ele não vai ficar navegando nos meses o tempo inteiro.

Não necessariamente você deve adotar esta solução sempre, mas ela é válida para mostrar que existem alternativas simples para resolver problemas de performance.

Diante disso, fazer testes de desempenho com JMeter ou ferramentas similares e monitorar o desempenho através de ferramentas como VisualVM ou JProfiler é o mundo ideal.

A partir disso é possível identificar os gargalos da sua aplicação, que são os pontos que mais utilizam recursos computacionais (como memória e processador), além de verificar o tempo de resposta das suas páginas.

Certas funcionalidades são testadas pelo desenvolvedor utilizando apenas um usuário por vez, mas imagine a funcionalidade de acessar a folha de pagamento.

Dia 5 de todo mês, às 15:00, o departamento de RH envia um e-mail para os 1.000 funcionários da empresa com o link para acessar a folha de pagamento.

Quase que simultaneamente, centenas de funcionários clicarão no link e então o sistema ou vai ficar muito lento ou vai começar a falhar em uma porcentagem dos acessos, ou pior, o servidor pode cair e ninguém mais conseguir acessar a informação desejada.

Utilizando apenas o JMeter você pode identificar que essa funcionalidade funciona com até 100 usuários simultâneos, mas com mais do que isso o sistema começa a ficar lento e com 300 ou mais usuários simultâneos, ele fica praticamente inutilizável apresentando inclusive algumas falhas.

Com essas informações você pode realizar algumas ações de tuning e testar novamente até atingir seu objetivo.

Existem inúmeras maneiras para melhorar e monitorar a performance de sua aplicação. Esses exemplos são apenas para mostrar que há um caminho e que é importante se preocupar com isso.

Pense nos filtros

Em sistemas corporativos é muito comum o desenvolvimento de telas de consulta, onde cada tela terá suas especificidades e filtros diferentes, porém, existem algumas estratégias que você pode adotar para aumentar a usabilidade proporcionar uma melhor experiência ao usuário.

O que o usuário precisa no primeiro acesso?

Pense sempre em porque o usuário precisará acessar a tela e a desenvolva baseado nessa resposta. Se for uma consulta de folha de pagamento, o usuário geralmente quer acessar sua última folha de pagamento, então isso deve estar fácil para ele.

A consulta, por padrão, pode vir ordenada, deixando os dados mais atuais em cima. Além disso, não é necessário trazer num primeiro momento todas as folhas de pagamento. Imagine um usuário que está trabalhando há 10 anos na empresa. Essa tela ficaria lenta para ele.

Filtros prontos

É comum a existência de consultas que são executadas com maior frequência em cada tela. Sendo assim, descubra quais são e facilite o trabalho do usuário oferecendo atalhos para essas consultas.

Por exemplo: em um sistema que tem um workflow de férias onde um usuário solicita suas férias para um determinado mês, depois essa solicitação deve ser aprovada pelo coordenador, pelo gerente, pelo RH e também alguém pode reprovar e devolver para o passo anterior.

Na tela que lista todas as solicitações de férias, poderia haver um filtro chamado Pendentes comigo para listar as solicitações que devem ser aprovadas pelo usuário logado. Isso facilitaria bastante o dia a dia do usuário, que economizaria tempo ao não precisar pesquisar entre as solicitações aquelas que dependem da sua aprovação.

Ademais, ao invés de usar filtros de data com os campos “De” e “Até”, é possível definir filtros prontos como Solicitações abertas nessa semana, Solicitações abertas no último mês. No entanto, lembre-se que isso vai variar em cada situação, sendo necessário entender a tela e validar se isso se aplica.

Filtro avançado

Suponha que um usuário solicitou 10 campos novos no filtro da tela que você criou. Ao invés de colocar esses 10 campos, poluir a tela e talvez até atrapalhar os usuários iniciantes ou que já estejam acostumados com a mesma, por que não inserir um link ou botão chamado Filtro Avançado, onde os 10 campos solicitados (ou mais) podem ser adicionados sem prejudicar a usabilidade do sistema? Dessa forma, você mantém a tela limpa e permite que usuários avançados tenham a opção de fazer consultas mais elaboradas.

Escrever é cortar palavras

John Ruskin, escritor inglês do século XIX, contou a história de um feirante que tinha uma placa com o texto “HOJE VENDO PEIXE FRESCO”. Nesta história, um homem que passava pela feira comentou com o feirante que todo dia é sempre “HOJE”, então ele poderia retirar essa palavra da placa e o feirante concordou.

Depois disso, o mesmo homem disse que todos na feira estavam vendendo algo, que ninguém estava dando peixes de graça, portanto, a palavra “VENDO” também era dispensável.

E como nunca se vende peixe congelado em uma feira, a palavra “FRESCO” poderia ser cortada também. Por fim, restou apenas a palavra “PEIXE”. Contudo, quem olha para uma barraca cheia de peixes não precisa ler a placa para saber o que era vendido ali. Assim sendo, ao final a placa foi retirada.

A partir dessa história, pense em como diminuir ou eliminar cada texto, título, label, descrição, observação e ajuda que você colocar no sistema. Seu objetivo é deixar tudo, ou o máximo possível, autoexplicativo. Quanto mais elementos você colocar na página:

· Mais ruídos e interferências a página terá;

· Menos atenção o usuário dará ao que realmente importa;

· A página poderá ficar grande e pesada.

Se você está desenvolvendo uma tela que tem um questionário para os usuários falarem sobre itens a serem melhorados na empresa, seria muito comum colocar um texto explicativo no início do questionário. Se for necessário ter esse texto, ele deve:

· Ser curto;

· Falar o essencial;

· Evitar o óbvio;

· Não ter instruções que o usuário conseguirá descobrir sozinho ao longo do questionário;

· Não mostrar mais do que ele precisa saber para iniciar o questionário (aquele parágrafo de ajuda para responder a quinta questão não precisa ser lido antes de iniciar o questionário).

Ao não se preocupar com isso, você corre o risco de os usuários nem lerem o seu texto minuciosamente redigido.

Experimente através de Wireframes

Se você não tem o hábito de criar wireframes, que são uma representação de baixa fidelidade de um design (vide BOX 3), você está perdendo uma oportunidade de inovar, de experimentar.

Após entender o problema que você precisa resolver com a funcionalidade, ou seja, o porquê dessa funcionalidade, é interessante definir como implementá-la antes de iniciar o desenvolvimento.

Os wireframes podem auxiliar nas fases iniciais de análise para validar com a equipe e até com o usuário final o que foi pensado para cada tela. Você pode desenhar wireframes no papel ou utilizar ferramentas que podem auxiliar neste momento, como é o caso da Balsamiq e do UXPin.

BOX 3. Diferenças entre wireframe, protótipo e mockup

É muito comum confundir wireframes com protótipos e mockups e até achar que os três são a mesma coisa, pois os três são uma representação do produto final, mas têm grandes diferenças e podem ser utilizados com objetivos diferentes.

Um wireframe é uma representação de baixa fidelidade de um design. Ele mostra o quê existirá na tela, como ela estará organizada e pode descrever de forma básica como será a interação do usuário. Por não ter uma alta fidelidade, isto é, não ser idêntico à versão final da tela, o que inicialmente pode ser visto como negativo, na verdade traz a vantagem do pouco tempo e do baixo custo necessários para serem criados.

Um protótipo, por sua vez, tem uma fidelidade bem maior, parecendo muito com o produto final e simula a interface de interação com o usuário.

Ele é útil para testar o sistema experimentando o conteúdo e as interações da interface. Como ponto negativo, protótipos podem ser caros e demorados para construir. Uma dica é desenvolvê-los de uma forma que possam ser reaproveitados durante o desenvolvimento do projeto.

Assim como um protótipo, um mockup é uma representação de média a alta fidelidade de um design, mas de maneira estática. Ele é muito mais parecido com o produto final do que um wireframe, porém, não tem a interação que um protótipo viabiliza. Mockups são úteis quando você quer demonstrar o produto para um stakeholder e um wireframe seria simples demais.

Para mais informações, veja o artigo “Wireframe, protótipo e mockup – Qual a diferença?” de Marcin Treder e traduzido por Ana Rute no endereço indicado na seção Links.

Como fazer testes de usabilidade de forma simples e barata?

Testes de usabilidade consistem na observação de uma pessoa tentando usar algo para executar tarefas comuns com o objetivo de detectar e consertar as coisas que confundiram e frustraram esta pessoa.

Depois de algum tempo trabalhando em um projeto, você achará tudo simples e fácil no seu sistema. Os testes de usabilidade mostrarão o que é simples para você, mas talvez impossível para outra pessoa. Mostrarão também que aquele botão que você tinha certeza que chamaria muita atenção pode passar despercebido.

É importante ressaltar que quanto mais técnica for uma pessoa, mais difícil pode ser para ela expressar uma ideia para alguém leigo. Os testes ajudam a garantir que pessoas que pensam de forma diferente e que têm experiências diferentes das pessoas envolvidas no projeto conseguem utilizar a tela projetada.

Os testes mostram o que funciona, o que precisa ser melhorado e o que pode ser retirado. E se os testes forem executados desde o início do projeto e realizados com frequência, os ganhos podem ser inestimáveis.

Por muito tempo acreditava-se que testes de usabilidade: eram caros, envolviam muitas pessoas, aconteciam em uma sala de vidro, tinham muitas câmeras e geravam relatórios de 50 páginas. Testes dessa dimensão existem e podem ser úteis; no entanto, é possível fazer testes simples, frequentes e econômicos.

Assim sendo, você mesmo pode organizar e realizar testes de usabilidade em apenas uma manhã. Para isso, chame um ou dois amigos ou pessoas de outro departamento da empresa, explique o que você vai fazer e peça para a pessoa acessar seu sistema e dizer o que ele entende.

Solicite a ele a realização de tarefas simples como cadastrar o produto X, gerar o relatório Y e então analise a forma que a pessoa realizará estas ações e perceba suas dificuldades. Se você conseguir fazer isso com usuários reais ou pessoas do perfil dos seus usuários, melhor.

Você também pode usar um software de compartilhamento de tela (como o Camtasia) e transmitir as imagens e o som para outra sala e envolver mais pessoas da equipe para acompanhar os testes, ou apenas gravar para poder visualizar novamente em outro momento, desde que o usuário permita essa gravação.

Feito isso, defina os principais problemas encontrados e foque na correção destes itens. Depois de algumas semanas, realize um novo teste com novas pessoas e siga sempre evoluindo.

No livro “Não me faça pensar” de Steve Krug, há um capítulo sobre como realizar testes simples e com orçamento reduzido, onde são explicados todos os detalhes, como desde o recrutamento das pessoas, um roteiro a ser seguido nos testes, como escolher as tarefas para passar ao usuário, como acompanhar os testes, como priorizar o que corrigir, entre outras coisas.

Nesse livro também é fornecido um roteiro para ser seguido durante os testes que pode ser baixado no site da editora (veja a seção Links).

Caso você queira se aprofundar mais no assunto, Krug também escreveu o livro “Simplificando coisas que parecem complicadas” e Jacob Nielsen, no final da década de 80, abordou o assunto em seu artigo “Usability Engineering at a Discount”.

Metodologias de desenvolvimento influenciam na usabilidade?

Falar sobre metodologias e processos também é um assunto muito amplo, porém, verifique se sua metodologia ou processo não está impactando na qualidade do seu produto, pois um produto com erros básicos, com alterações em uma funcionalidade que impactam outras prejudicará a experiência do usuário e a usabilidade, pois ele não conseguirá realizar seus objetivos no sistema.

Sendo assim, você deve focar em feedbacks mais rápidos dos usuários, em testes automatizados, em integração contínua, clean code, entre outras estratégias para garantir a qualidade do seu projeto.

A partir desse artigo você já pode utilizar os conceitos aqui apresentados para tomar decisões focadas no usuário. O conhecimento obtido sobre usabilidade influenciará positivamente em seus projetos e caso queira se aprofundar ainda mais, algumas referências foram citadas e lhe possibilitarão a continuação dos estudos.

Vale lembrar que existem também outros assuntos e técnicas não abordadas aqui que podem ser muito úteis no seu projeto, como a definição de personas, jornada do usuário, card sorting, uso do google analytics, entre outros.

É importante lembrar que não existem receitas ou soluções prontas. Tudo que foi apresentado serve para lhe dar ferramentas, técnicas e ideias para tomar suas próprias decisões dentro do contexto que os problemas aparecerem.

E que tal, agora, você abrir o site da sua empresa e avaliar a usabilidade dele? Será que se outra pessoa entrar saberá rapidamente o que é a sua empresa, o que ela faz e quais os seus diferenciais? Pense de forma crítica em suas próximas análises e desenvolvimentos e deixe seus usuários mais satisfeitos.

Referências e Links

BASTIEN, J.M. Christian., SCAPIN, Dominique L.. Ergonomic criteria for the evaluation of humam-computer interfaces. Rapport technique de l’INRIA. 1993.

KRUG, Steve. Não me faça pensar. Alta Books Editora, Rio de Janeiro, 2014.

NIELSEN, J. Usability Engineering. California: Morgan Kaufmann, 1993.

NIELSEN, J.; LORANGER, H. Prioritizing Web Usability. California: New Riders, California, 2006.

ROSENFELD, L.; MORVILLE, P. Information Architecture for the Word Wide Web. 3. ed. Sebastopol, CA: O'Reilly, 2006.

TEZZA, Rafael. Proposta de um constructo para medir usabilidade em sites de e-commerce utilizando a Teoria de Resposta ao Item. Dissertação (Mestrado) – UFSC. Florianópolis, 2009.

Browser Diet.
https://browserdiet.com/pt/

Wireframe, protótipo e mockup – Qual a diferença?
http://anarute.com/wireframe-prototipo-e-mockup-qual-a-diferenca/

10 princípios de UX do Google – Gustavo Moura. Palestra no IXDSA11
https://www.youtube.com/watch?v=rrn1P-U8kMY

Links Úteis

  • Boas práticas de usabilidade:
    A usabilidade de um software é fundamental para seu sucesso. Como programadores precisamos estar atentos a práticas que podem melhorar tanto a experiência do usuário quanto o funcionamento do sistema.
  • Como implantar um PMO:
    Este artigo visa fornecer uma visão geral de como funciona a implantação de um escritório de gerenciamento de projetos, analisando o vínculo dessa iniciativa com o planejamento estratégico.
  • Introdução ao uso de testes exploratórios:
    Este artigo fornece uma visão geral sobre a técnica de testes exploratórios, apresentando uma estratégia orientada a sessões de testes exploratórios, uma ferramenta opensource e respostas para as principais dúvidas existentes.

Saiba mais sobre User Xperience ;)