P&D 2010: eu participei!

Artigos, HCI 7 Comments »

Não fui só eu: devia ter umas 600 pessoas na Universidade Anhembi-Morumbi, no primeiro dia das sessões técnicas. A EDU (Escola de Design da Unisinos) e o Design UFRGS (minha futura morada, em breve) estavam em peso :0)

A mesa que eu assisti (metodologia) estava bem legal. Uma pena que a Janet Murray não foi… Não entendi que “complicações políticas” ela citou como justificativa para não ter aparecido… Deve ter sido uma piada, porque muita gete riu :(

Fora isso, espero que nas próximas edições sejam apresentados mais artigos que saiam do feijão com arroz em que a pesquisa em design se transformou: gráfico, tipografia, ergonomia, produto, digital, história, gestão. Sério gente, ainda tem o que falar sobre isso? Deixa isso pros TCCs, huahuahua. E ainda por cima ergonomia/digital têm seus próprios congressos (ergodesign+ usihc, sem falar no da abergo). Não que esses tópicos não sejam importantes, mas acho que é hora de procurar outras coisas pra pesquisar.

Fora esses assuntos que (eu acho) que já estão “meio” batidos, teve muita coisa legal: moda (gente nova, uêba!), serviços, afetividade/emoção/experiência e um – UM – artigo sobre cognição. Gentem! Se olhar a Design Studies, Design Issues; é só isso que se faz.

Meus dois artigos foram sobre assuntos bem feijão-com-arroz, mas são resultados de pesquisas antiiiigas. Eu, daqui pra frente, só Design Cognition, chique-no-úrtimo!

O Desenvolvedor-Designer e o Design da Interação

Reflexões sobre a escolha entre duas interfaces: relato de um processo

E aí embaixo duas fotos: uma panorâmica e uma do pessoal da EDU (que eu consegui juntar pra “bater a foto”).

E pra fechar o post, uma provocação: só tem gente linda e magra no Design!

Mobile design = interaction hell

Design Cognition, Design cases, HCI 4 Comments »

Atenção: antes de começar, saiba que este texto foi escrito por uma designer com “alguma” experiência em aplicações para web – uma pessoa que programa (modéstia à parte) bem e que tem um mestrado em ergonomia. Este texto mostra as mudanças em um projeto motivadas pelo compromisso da nossa personagem de aderir às “regras” do design de interfaces. Este foi o primeiro aplicativo para mobile que ela projetou, e é assim que ela se sente:

Vamos deixar então que nossa designer conte como foi…

Design de interfaces para mobile (no Brasil)

Conheci, ano passado, três caras que estavam a fim de desenvolver aplicativos para celular. Acho que formamos um excelente time, pois reunimos experiência e conhecimento técnico. Além disso, temos alguém no grupo com um “feeling para negócios” (sorry, Marco, não sei descrever de outra forma), o que é pré-condição para engrenar. Depois de muitas reuniões (do Marco), conseguimos vender um projeto, cujo briefing descrevo: criar um aplicativo para ser usado em eventos. As funcionalidades oferecidas são:

  • Receber avisos dos organizadores (por exemplo: alteração na agenda).
  • Receber avisos promocionais dos patrocinadores.
  • Fazer perguntas aos palestrantes.
  • Trocar cartões de visita virtuais.
  • Enviar convites para meetings dentro da área do evento.

O rationale é: pessoas que vão a eventos têm interesses comuns, mas nem sempre se conhecem – aliás, muitos vão a estes eventos para se conhecerem.  Porém, o sistema de crachás de identificação tem dois problemas: algumas pessoas simplesmente não os usam e é constrangedor ficar lendo o crachá dos outros. O aplicativo seria uma forma de fazer com que as apresentações fossem mais eficientes, permitindo que os participantes escolham com quem querem manter contato.

A restrição explícita: deve funcionar na maior parte dos aparelhos. Minha restrição explícita: deve ser boa usabilidade. Lógico.

Claro, eu nunca havia feito nada para mobile, mas tinha uma idéia de mais algumas restrições:

  • Interação pelas teclas de direção; seleção pela tecla do meio. Sem touch.
  • Otimizar a transmissão de dados. Toda vez que você envia ou recebe dados, vê uma mensagem desagradável avisando da conexão. Isso, mais importante do que o custo em reais, gera desconfiança: “porque estou toda a hora sendo avisado disso?”.

Ok, vamos para o Balsamiq (que só tem iPhone como modelo, mas abstrai, ok?) ver como fica. Veja aí como eu desenhei a área das “Perguntas”.

Para você entender meu raciocínio, vou colocar o processo em forma de diálogo: eu e um Balde de Água Fria.

Eu – Vamos usar tabs, certo? Isso permite que o usuário veja em que sessão ele está. Quando ele quiser fazer “perguntas” (por isso o título, entende?), escolhe a palestra e clica nela (com o botão do meio). Isso faz com que ele veja a tela da direita: ali ele pode enviar uma pergunta para o palestrante.

Balde de Água Fria – Hummm, mas ele também pode enviar respostas para enquetes e a avaliação da palestra. Você sabia disso desde o início, não foi idéia do cliente na última hora.

Eu – Certo. Quem sabe então a gente coloca uma barra de botões?

BAF – Não cabe… Muito texto nos labels…

Eu – Vamos colocar uns ícones…

BAF – Esses ícones do Balsamiq são uma caca…

Eu – É eu sei. Mas a gente vê uns legais depois…

BAF – Ok, mas você está com um problema de coerência…

Eu – O QUÊ? DE COERÊNCIA?

BAF – Pois é… Você está usando tabs para alternar entre telas. E sua barra de botões tem o mesmo comportamento. Além disso, na tela de “Convites recebidos”, por exemplo, você está usando uma barra de botões com ícones para operar sobre um dado (o cartão de apresentação). Quer dizer que em uma área a barra de botões troca de tela e na outra ela sinaliza operações possíveis sobre um dado.

BAF – E não é só isso. Olhando bem, parece que você também tem um problema de consistência.

Eu – O QUÊ? DE CONSISTÊNCIA?

BAF – Sim. Veja a tela “Perguntar”. Aqui você usa texto no botão. Afinal, é texto ou ícone?

Eu – P*** m***, é verdade.

Eu – Ah, já sei! Vamos fazer assim, ô:

EU – Quando o usuário clicar na palestra para fazer uma pergunta (ou enquete ou avaliação), as tabs vão mudar de label, e para ele voltar, é só clicar na tab bem à esquerda que diz “<<”.

BAF – Nossa… Você realmente se preocupa com a coerência. O problema foi mesmo resolvido, afinal agora você só tem tabs. Só que agora você tem dois níveis de hierarquia que parecem ser um só. Além disso, você alterou o comportamento esperado de um componente (o tab).

Eu – P*** m***, HIERARQUIA e MUDANÇA DE COMPORTAMENTO? Dá um descanso, BAF!

BAF – Sorry, mas você pediu par eu ser chato…

Eu – Tá bom.

Eu – Olha só, podemos usar janelas modais! Quando o usuário for enviar a pergunta, por exemplo, uma nova janela será aberta. A gente pode deixar o que está atrás meio transparente, com um blur, sabe? Aí o usuário saberia que foi para outro nível de edição.

BAF – Entendo. Assim você não muda o comportamento dos tabs e preserva a hierarquia.

Eu – Isso mesmo. Sabia que você iria entender.

BAF - Como fica quando houver três níveis de hierarquia?

Eu – Não haverá.

BAF – Você sabe que não deve dizer isso…

Eu – Vá à merda, BAF.

BAF – Ok. Você sabe que a luminosidade pode atrapalhar a leitura destas janelas com transparência, não sabe?

Eu – Vá à merda, BAF.

E esta é a história da primeira versão do layout no Balsamiq. Algum tempo depois, o João (nosso desenvolvedor-java-rulez) fez a seguinte observação:

João – Sabe, Gabi, essa tela de buscar aqui está complicada de navegar… Acho que tem problemas de usabilidade… O usuário tem que clicar várias vezes até chegar no botão de buscar. Daí eu consertei isso colocando um menuzinho-aqui-assim.

OK, PARA TUDO.

BAF, COMO É QUE VOCÊ NÃO ME AVISOU???

BAF – Bem, não me dei conta disso.

EU – Mas “menu”? O usuário não tem como ver o que tem no menu. Depois, ele precisa DESPERDIÇAR um clique só par ver o que tem no menu. E se o menu tiver mais de um nível, ele vai ter que desperdiçar outros cliques só pra inspecionar o menu. ISSO NÃO PODE!

BAF – Pois é, é muito ruim, eu sei. Mas sabe que o João está certo? Dá uma olhada nessa tela aqui.

BAF – Imagina que a pessoa está no primeiro item da lista, ok? E que ela quer enviar um cartão de apresentação. Quantos cliques ela tem que dar?

Eu – Nove para chegar até “Networking” e um para selecionar. Que m****.

Eu – É… Acho que estou negligenciando as softkeys… Vou fazer o seguinte: usar a softkey da esquerda para abrir um menu, e a da direita para outras ações.

Eu – Tipo assim: o usuário pode continuar navegando com os direcionais e selecionando os itens da lista (tela da esquerda). Quando ele clicar numa palestra, ele vai para a tela que está à direita. Ali eu vou usar um título com breadcumbs, pra mostrar onde ele está e de onde ele veio (só que não pode ser feio que nem esse do Balsamiq!). E nas softkeys tem o menu (na esquerda) e um botão, quando necessário (na direita). E para minimizar essa coisa de desperdiçar cliques inspecionando o menu, vamos tentar usar as mesmas opções sempre que possível, ok?

BAF – É, agora parece bom.

Eu – Vamos ver o que os guris acham.

E AÍ, GURIS, O QUE VOCÊS ACHAM?

Escolhendo a melhor interface: tempo de desenvolvimento

Design cases, Flex, HCI 3 Comments »

Seguimos então com a análise deste problema: como escolher entre duas interfaces que dão suporte à mesma tarefa? Para quem não está acompanhando, as interfaces em questão são mostradas nas figuras 1 e 2.

Figura 1, à esquerda. Interface com drag n´drop. O usuário arrasta um conceito para a área ao lado da tree, e o local (y) onde ele largou o conceito define o quanto o material está associado ao conceito.

Figura 2, à direita. Interface com HSlider. O usuário seleciona um item na Tree. Na tela ao lado, há uma HSlider, que o usuário usa para dizer o quanto o conceito se asssocia com o material. Na Tree se podem ser, ao lado dos conceitos que estão associados com o material, o quanto (%) o conceito se associa ao material.

Estas interfaces foram avaliadas utilizando um conjunto de heurísticas  e o KLM. Estes são dois métodos que pertencem mais ao design que ao desenvolvimento, e que são usados para informar a escolha. No entanto, eles não consideram a complexidade da implementação, que é um fator determinante na escolha. Por este motivo, pedi para alguns colegas avaliarem as duas interfaces e dizerem o quanto uma interface é mais trabalhosa que a outra. Além disso, pedi que, se possível, comentassem cada uma das propostas.

Pedi que a todos os avaliadores que considerassem a implementação na mesma linguagem de programação (AS3, usando Flex). Todos têm pelo menos 2 anos de experiência com a linguagem, e todos são desenvolvedores reconhecidos (à exceção de um, todos são moderadores de listas com mais de 2000 membros). Eles avaliaram o seguinte cenário:

/*******************************************************
CENÁRIO
O projeto é uma materioteca, usada para auxiliar no processo de seleção de materiais. Será usada por designers, arquitetos e eventualmente, por engenheiros.
A tela em questão é para associar conceitos a um dado material que está sendo criado pelo administrador da materioteca (você :0). Estes conceitos são palavras, e são características abstratas do material. Pense que isso pode ser importante para um designer fazer sua escolha. Exemplos de conceitos podem ser: inovador, sensual, moderno, vibrante, vulgar, barato etc.
Você não irá criar conceitos, apenas usar os que estão disponíveis.

As implementações possíveis estão nos pngs anexos*
*******************************************************/

O resultado até agora é:

  • Desenvolvedor 1 -> Interface A(Drag n´ Drop)=2 * Interface B (HSlider)
  • Desenvolvedor 2 -> Interface A(Drag n´ Drop)=10 * Interface B (HSlider)
  • Desenvolvedor 3 -> Interface A(Drag n´ Drop)=4 * Interface B (HSlider)
  • Desenvolvedor 4 -> Interface A(Drag n´ Drop)=3 * Interface B (HSlider)

Além disso, alguns ainda enviaram comentários:

Desenvolvedor 1

  • “Preferiria implementar a segunda forma, acho que é bem mais intuitiva para o usuario”.
  • “[...] Ok… pode ser até mais dificil de implementar, mas a real importancia não é a dificuldade da implementação mas a experiencia do usuario em usar essa app”.

No email de resposta ainda haviam exemplos de interfaces que suportam a mesma tarefa, referidos pelo Desenvolvedor 1 como sendo de pior qualidade. Os dois exemplos estão mostrados abaixo.

—————————————————–
| Conceito A      |  <combo box de %> |  Selecione o valor percentual de associação
—————————————————–
| Conceito B      |  <combo box de %> |
—————————————————–
| Conceito G      |  <combo box de %> |
—————————————————–

Ou pior ainda… :
——————————————————————
| Conceito A      |  <textInput / NumericStepper> |  Digite o valor percentual de associação
——————————————————————
| Conceito B      |  <textInput / NumericStepper> |
——————————————————————
| Conceito G      |  <textInput / NumericStepper> |
——————————————————————

Desenvolvedor 3

  • “Então, olhando as duas opções, a primeira usando um HSlider me parece muito ‘tradicional’, mais fácil de manipular mas mais difícil de analisar o todo. Gosto mais da segunda opção, apesar de mais complexa para o usuário final manipular”.
  • “Obviamente que o usuário final não está tão acostumado com o drag and drop nos softwares como ele usa no sistema operacional, mas dá uma dimensão muito melhor, acredito até que ele acharia ruim essa opção em um primeiro momento, mas depois de começar usar se sentiria mais confortável em poder analisar todos os conceitos de determinado material de uma única vez.”
  • Em uma conversa via MSN, este desenvolvedor sugeriu uma “solução intermediária”, na qual ao arrastar o conceito para o Canvas, uma janela é criada, com uma barra deslizante, usada para definir a associação ao conceito.

Desenvolvedor 4

  • “Usaria o hslider/vslider em vez do cenário do canvas”.
  • “Bem, colocaria os itens em ordem decrescente de %, facilitando assim ao usuário a associação visual.”**
  • “Uma sugestão também é em vez de usar um slider, usar um itemRenderer que mostre um NumericStepper. Na minha opinião usaria o NumericStepper, porque daria menos trabalho sem perder a funcionalidade e agregando maior agilidade para o usuário. Usando NumericStepper como itemRenderer acredito que levaria menos tempo ainda que o slider, talvez 0.6x, além que área que deixaria de ser usada pelo slider poderia ser usada para outra coisa.”

Dois desenvolvedores manifestaram preferência pela interface com Drag n´Drop, um pela interface com HSlider e um não manifestou preferência. No entanto, todos afirmaram que a interface com Drag n´Drop é mais demorada.

Assim como as avaliações anteriores, estes pareceres não foram conclusivos em favor de nenhuma das opções, pois, mesmo que dois desenvolvedores tenham manifestado clara preferência pela interface com Drag n´Drop, é preciso avaliar se o tempo de implementação é um fator importante.

Cada vez mais acho que vou precisar de um protótipo para dar o veredicto :0)

Acompanhe!

PS: Se você também quer mandar sua estimativa e seus comentários, comente aqui ou mande por email. Vou incorporar no post.

* As imagens do início deste post, com descrições sobre detalhes da implementação e sugestões para os algoritmos.

** No HSlider

Escolhendo a melhor interface: heurísticas

Design cases, Flex, HCI No Comments »

Realizar uma avaliação através de heurísticas significa seguir uma estratégia baseada em parâmetros. Assim, para realizar uma avaliação heurística, deve-se escolher este conjunto de parâmetros. Esta é a grande diferença entre guidelines e heurísticas, pois as primeiras são regras para resolver um problema, como se fossem uma receita para construir uma boa interface. As segundas, por sua vez, são mais flexíveis, permitindo que o designer encontre sua própria solução. Provavelmente o conjunto mais conhecido seha o de Molich e Nielsen (1990)*, que originalmente continha nove heurísticas,  atualizadas em 1994*, contando dez heurísticas. Para chegar ao conjunto original, Molich e Nielsen realizaram uma pesquisa com 77 designers e programadores, da indústria e acadêmicos, investigando se eles conseguiam encontrar problemas de usabilidade em uma interface.  Sobre a avaliação com heurísticas, Nielsen e Molich afirmam que o sucesso da análise está intimamente relacionado à qualidade do avaliador, e profissionais experientes e com formação em ergonomia têm melhor performance que especialistas em computação. Além disso, afirmam que algumas interfaces são mais difíceis da avaliar heuristicamente do que outras, e que esta diferença acentua ainda mais a importância de avaliadores experientes. Também afirmam que este tipo de avaliação não deve ser feito por um único avaliador (recomendam de três a cinco profissionais). Ainda citam algumas vantagens do uso deste método: é rápido e barato; é fácil motivar a equipe a conduzir um experimento deste tipo e pode ser usado desde cedo no processo de desenvolvimento.

A lista atualizada (a de 1994) está abaixo**:

  1. Visão do estado do sistema: O sistema deve sempre manter os utilizadores informados acerca do que é que se está a passar através de feedback apropriado.
  2. Ligação entre o sistema e o mundo real: O sistema deve falar a linguagem dos utilizadores, usar palavras, frases e conceitos familiares para o utilizador.
  3. Liberdade e Controle: Pode acontecer que o utilizador escolha alguma função por engano e necessite de cancelar ou simplesmente “Sair sem gravar alterações”. Sempre que possível deve implementar-se undo e redo.
  4. Consistência e Standards: Devem seguir-se convenções, normas definidas e normas de facto estabelecidas, de maneira a que o utilizador se sinta familiarizado com a forma de interagir com o sistema em qualquer parte deste.
  5. Prevenção de Erros: Melhor do que boas mensagens de erro é o desenho cuidado que previne que esses erros aconteçam. Não deixar que seja possível cometer o erro.
  6. Reconhecer em vez Recordar: Minimizar a necessidade do utilizador ter de se lembrar de algo (ex: qual a tecla para ver o documento X), disponibilizando visualmente objectos, opções ou acções. Não deve ser necessário decorar nada de uma janela para outra. As instruções devem estar acessiveis fácilmente e sempre que necessário.
  7. Flexibilidade e eficiência na utilização: Teclas de atalho (que normalmete não são usadas por utilizadores novatos). Estas poderão aumentar a velocidade de interacção para utilizadores mais experientes. Permitir aos utilizadores criar atalhos para acções mais frequentes.
  8. Design Simples: As janelas não devem conter informação irrelevante ou raramente necessária. Todas as informações extra disponibilizadas, competem com a informação relevante, diminuindo a sua visibilidade.
  9. Ajudar os utilizadores a reconhecer, diagnosticar e recuperar dos erros: As mensagens de erro devem ser expressas numa linguagem comum (sem códigos). Devem indicar precisamente qual o problema e a sugestão para a sua solução.
  10. Ajuda e Documentação: Mesmo que seja melhor que o sistema possa ser usado sem documentação, esta pode ser necessária. Deve ser possível pesquisar qualquer informação. Focar a ajuda mediante a tarefa que o utilizador pretende executar. A documentação deve ser simples (passo-a-passo) e não extensa.

Segundo Stanton e Young (2003), a avaliação através de heurísticas é um método extremamente simples e rápido de aplicar, podendo ser empregada em qualquer estágio do desenvolvimento do produto. Os autores recomendam apenas que o avaliador esteja familiarizado com o produto em análise. Por outro lado, os autores ressaltam a carga subjetiva da análise, o que resulta em baixa confiabilidade: avaliadores diferentes produzem resultados diferentes. Este não é o caso do KLM (veja o post sobre KLM aqui), que, segundo Stanton e  Young tem alta confiabilidade.

Porém, a avaliação heurística tem uma funçao diferente da avaliação com o KLM: ela informa a qualidade da interface de uma forma mais geral, abrangendo outros aspectos além do tempo de execução da tarefa. Desta forma, ela se contitui numa referência importante para a escolha entre duas interfaces. Sendo assim, as interfaces mostradas nas figuras 1 e 2 serão submetidas à avaliação.

Figura 1. Interface com drag n´drop. O usuário arrasta um conceito para a área ao lado da tree, e o local (y) onde ele largou o conceito define o quanto o material está associado ao conceito.

Figura 2. Interface com HSlider. O usuário seleciona um item na Tree. Na tela ao lado, há uma HSlider, que o usuário usa para dizer o quanto o conceito se asssocia com o material. Na Tree se podem ser, ao lado dos conceitos que estão associados com o material, o quanto (%) o conceito se associa ao material.

A avaliação das duas interfaces é apresentada nas tabelas 1 e 2. Para cada item do conjunto de heurísticas foi atribuído um valor de -3 a 3. Ao final, os valores são somados para gerar uma “pontuação”.

Heurística Interface A Motivo
Visão do estado do sistema 3 Não é preciso abrir a árvore para saber quais conceitos estão associados ao material, nem o quanto o conceito está associado.
Ligação entre o sistema e o mundo real (usar palavras, frases e conceitos familiares para o utilizador)

0 Não se aplica, pois não há diálogos
Liberdade e Controle 1 É moderadamente difícil se recuperar de um erro, pois é necessário avaliar a posição que corresponde ao valor desejado. Para excluir o conceito é preciso notar a caixa de lixo. Este valor poderia aumentar se outras formas de exclusão fossem implementadas, como interpretar como excluão arrastar o conceito para fora do Canvas.
Consistência e Standards 1 Drag n drop tem pouca visibilidade: como saber que deve-se iniciar um drag?
Prevenção de Erros 3 Não é possível arrastar para outro local além do canvas. Se o uusário arrastou para um local que não corresponde à posição desejada, ele é “avisado” pelas datatips que ficam ao lado do conceito enquanto ele é arrastado.
Reconhecer em vez Recordar 3 É mais fácil associar a posição do que um número à importância. O usuário vê a importância relativa do conceito, e lembra da imagem geral, do mapa, ao invés de valores individuais
Flexibilidade e eficiência na utilização 0 Não será avaliado, pois foi avaliado pelo KLM.
Design Simples (não contem informação irrelevante ou raramente necessária)

3 Não há informação irrelevante, e a posição dos elementos segue o fluxo da ação.
Ajudar os utilizadores a reconhecer, diagnosticar e recuperar dos erros 0 Não se aplica.
Ajuda e Documentação 0 Não se foi desenvolvido
TOTAL 14

Tabela 1. Avaliação da Inteface A, que sugere a implementação de um comportamento de Drag n´Drop.

Heurística Interface B Motivo
Visão do estado do sistema 0 É preciso abrir a árvore para saber quais conceitos estão associados ao material. É difícil saber qual o conceito mais associado ao material, e muito difícil ordenar os coneitos em ordem crescente / decrescente.
Ligação entre o sistema e o mundo real (usar palavras, frases e conceitos familiares para o utilizador)
0 Não se aplica, pois não há diálogos
Liberdade e Controle 2 É fácil se recuperar de um erro, pois o valor da associação está sempre visível, de forma numérica. Para excluir o conceito é preciso atribuir o valor zero à associação, o que pode não ser uma ação óbvia.
Consistência e Standards 3 Clicar em um objeto de uma árvore e ver as informações relevantes a este objeto em outra área é um comportamento esperado.
Prevenção de Erros 3 Se o usuário arrastou para um local que não corresponde à posição desejada, ele é “avisado” pelo valor da barra deslizante, que é atualizado em tempo real.
Reconhecer em vez Recordar 1 É difícil, pois o estado do sistema fica escondido dentro da árvore. O usuário precisa fazer uma buscar serial por cada dado.
Flexibilidade e eficiência na utilização 0 Não será avaliado, pois foi avaliado pelo KLM.
Design Simples (não contem informação irrelevante ou raramente necessária)
3 Não há informação irrelevante, e a posição dos elementos segue o fluxo da ação.
Ajudar os utilizadores a reconhecer, diagnosticar e recuperar dos erros 0 Não se aplica.
Ajuda e Documentação 0 Não se foi desenvolvido
TOTAL 12

Tabela 2. Avaliação da Inteface B, que sugere a implementação de uma barra deslizante.

A pontuação das interfaces A e B foi, respectivamente, 14 e 12. Os itens em que a interface A teve desempenho melhor foram “Visão do estado do sistema” e “Reconhecer em vez Recordar“. Já a interface B se saiu melhor no item “Consistência e Standards“. Como a diferença – mais uma vez – foi pequena (cerca de 15%) em favor da interface A, o teste com usuários e um protótipo funcional é recomendado.

Acompanhe!

* MOLICH, R.; NIELSEN, J. Improving a Human-Computer Dialogue: What designers Know About Traditional Interface Design. Communications of the ACM, v. 33, p. 338-342, 1990.

* Para ver as dez heurísticas: http://www.useit.com/papers/heuristic/heuristic_list.html

** Tradução de bartolom.eu

*** Stanton, N. & Young, M. (2003). A Guide to Methodology in Ergonomics: Designing for Human Use. 2nd edition, Taylor & Francis. ISBN: 0-7484-0703-0

Teste de 5 segundos!

Design cases, HCI No Comments »

Faça um designer feliz!!! Faça um click-test, dizendo quais as áreas de um layout são mais proeminentes. O tempo para clicar nas áreas que “se destacam” é de 5 segundos.

E faça um designer feliz!!!!

http://www.fivesecondtest.com/

Escolhendo a melhor interface – o Keystroke Level Model

Design cases, HCI 1 Comment »

error.png This post is in portuguese only because you can find plenty of information on KML on the internet.

O Keystroke Level Model (ou KLM) é uma forma rápida e segura* de avaliarmos diferentes interfaces que suportam a mesma tarefa. Este método irá retornar um valor que corresponde à predição de tempo que um usuário que não erra leva para realizar a tarefa com a interface em questão.

Minha intenção não é ensinar a usar o KLM. Para isso, você deve buscar outras fontes, como por exemplo este do David Kieras, que é muito didático.  O que eu pretendo com este post é comparar alguns interfaces que suportam a mesma tarefa, e usar o fator “tempo” como um dos parâmetros para informar minha decisão sobre qual delas eu devo usar.

A tarefa em questão é associar um conceito a um material, num espaço de criação/edição de materiais, em uma biblioteca virtual de materiais. Cada conceito pertence a uma e apenas uma biblioteca de conceitos. Além de associar o conceito a um material, o usuário deve especificar o quanto (em termos numéricos), esteb conceito está associado ao material que está sendo criado/editado. Por exemplo: o conceito “Inovação” está relacionado “87%” com o material  “Polietileno”.

As interfaces em julgamento são:

interfaceA

Figura 1. Interface com drag n´drop. O usuário arrasta um conceito para a área ao lado da tree, e o local (y) onde ele largou o conceito define o quanto o material está associado ao conceito.

interfaceB

Figura 2. Interface com HSlider. O usuário seleciona um item na Tree. Na tela ao lado, há uma HSlider, que o usuário usa para dizer o quanto o conceito se asssocia com o material. Na Tree se podem ser, ao lado dos conceitos que estão associados com o material, o quanto (%) o conceito se associa ao material.

Estou assumindo que o usuário é novato no sistema (precisa refletir sobre as ações e precisa procurar os elementos na interface). Vamos aos cálculos**:

Interface Drag n´drop – Tool tip aparece logo que o conceito está sobre a área – Tree aberta sem rolagem

Sequencia Código Tempo
1 Decide iniciar a tarefa M 1.2
2 Escolhe o conceito M 1.2
3 Encontrar o conceito M 1.2
4 Decidir porcentagem de associação M 1.2
5 Apontar (mouse) para o conceito P 1.1
6 Pressionar e manter o botão do mouse B 0.1
7 Localizar área que corresponde ao valor decidido no passo 4 M 1.2
8 Apontar para área decidida no passo 7 P 1.1
9 Verificar se está no local que pretendia (confere com o valor mostrado no tooltip) M 1.2
10 Soltar o mouse B 0.1
11 Verificar que a ação teve sucesso M 1.2

TOTAL = 7M + 2P + 2B = 10.8 segundos

Ainda para esta mesma interface, temos que considerar que o usuário decide mudar o valor da associação. Neste caso, ficaria assim:

Sequencia Código Tempo
12 Avaliar que valor não está correto M 1.2
13 Decidir nova porcentagem de associação M 1.2
14 Decidir iniciar a tarefa M 1.2
15 Pressionar botão do mouse (não aponta porque está sobre o objeto) B 0.1
16 Localizar área que corresponde ao valor decidido no passo 11 M 1.2
17 Apontar para novo local P 1.1
18 Verificar se está no local que pretendia (confere com o valor mostrado no tooltip) M 1.2
19 Soltar botão do mouse B 0.1
20 Verificar que a ação teve sucesso M 1.2

TOTAL = 6M + 1P + 2B = 8.5 segundos

Interface HSlider – Tool tip aparece sempre na HSlider – Tree aberta sem rolagem

Sequencia Código Tempo
1 Decide iniciar a tarefa M 1.2
2 Escolhe o conceito M 1.2
3 Encontrar o conceito M 1.2
4 Decidir porcentagem de associação M 1.2
5 Clica sobre o conceito BB 2*0.1
6 Verifica se o conceito surge na área ao lado M 1.2
7 Localizar no HSlider o local que corresponde ao valor decidido no passo 4 M 1.2
8 Apontar para o botão do HSlider P 1.1
9 Pressionar e manter o botão do mouse B 0.1
10 Apontar para o local decidido no passo 7 P 1.1
11 Verificar se está no local que pretendia (confere com o valor mostrado no tooltip) M 1.2
12 Soltar o mouse B 0.1
13 Verificar que a ação teve sucesso (não precisa procurar novamente o conceito) M 1.2

TOTAL = 6M + 1P + 4B = 11 segundos

Ainda para esta mesma interface, temos que considerar que o usuário decide mudar o valor da associação. Neste caso, ficaria assim:

Sequencia Código Tempo
14 Avaliar que valor não está correto M 1.2
15 Decidir nova porcentagem de associação M 1.2
16 Decidir iniciar a tarefa M 1.2
17 Localizar no HSlider o local que corresponde ao valor decidido no passo 2 M 1.2
18 Pressionar e manter o botão do mouse B 0.1
19 Apontar para o local decidido no passo 2 P 1.1
20 Verificar se está no local que pretendia (confere com o valor mostrado no tooltip) M 1.2
21 Soltar o mouse B 0.1
22 Verificar que a ação teve sucesso (não precisa procurar novamente o conceito) M 1.2

TOTAL = 6M + 1P + 2B = 9.7 segundos

Interface Drag n´Drop Interface Hslider
Sem erro 10.8 11
Com erro 10.8 + 8.5 = 19.3 11 + 9.7 = 20.7

Concluí que com a interface com Drag n´Drop leva-se cerca e 7% menos tempo que com a interface HSlider. Eu nao acho que esta diferença de tempo seja significativa, por isso precisaria de mais critérios para decidir. Neste ponto, eu recomendaria um teste com (5) usuários. Acompanhe aqui para saber como foi.

* Aqui neste (excelente) livro, você encontra uma breve descirção de diversos métodos ergonômicos, além de uma avaliação de parâmetros como confiabilidade, rapidez no treinamento e na aplicação. Eu comprei e gostei :0) Ah, e fiquei sabendo neste blog: “o design e a ergonomia

Salvendy, G., Stanton, N. & Young, M. (2003). A Guide to Methodology in Ergonomics: Designing for Human Use. 2nd edition, Taylor & Francis. ISBN: 0-7484-0703-0

** O KLM prescreve operadores (tanto a nível operacional quanto mental) e tempos para cada um deles. Para ver como cheguei a estes resultados, veja o artigo do David Kieras. Estes “tempos” foram medidos em experimentos em laboratório. Para ver mais detalhes, veja o original: Card, S.K.; T.P. Thomas & A. Newall (1983), written at London, The Psychology of Human-Computer Interaction, Lawrence Erbaum Associates, ISBN 0-89859-243-7

To tree or not to tree?

Design cases, HCI No Comments »

flags To tree or not to tree? Download the english version.

Bem, vai ficar complicado traduzir o título deste post, mas acho que deu pra entender o que eu quis dizer com ele ;0)
Trees são um dos meus data controls favoritos, porque dá pra colocar montes de informação dentro deles, organizadas em categorias. Elas também são otimizadas para visualização, já que o usuário pode facilmente setar o que ele quer e o que não quer ver. Por isso eu uso bastante :0)

Neste novo projeto em que estou trabalhando, andei desenhando trees para um monte de casos de uso (sim, eu desenho meus casos de uso), e, quando me dei conta, tinha apenas um caos que não tinha uma tree…. Uma parte dele está na imagem abaixo (à esquerda).

Seria legal se todos os casoso tivessem o mesmo jeito de mostrar e interagir com informação – se eu uso trees em todo lugar, porque não usar neste caso de uso também? A resposta é simples, você consegue descobri-la?

totree

O grupo à esquerda é parte de uma tela onde você escohe o tipo de um material. Estas categorias são mutualmente exclusivas (você só pode escolher uma) e coletivamente exaustivas (elas, como grupo, descrevem todos os tipos possíveis; qualquer material tem que estr em uma delas). Na direita, temos processos industriais. Um único material pode “ter” mais de um processo, tanto na mesma categoria como em categorias diferentes. Então, se eu usasse trees à esquerda, quando um “galho” estivesse fechado, o usuário não veria uma informação vital (coletivamente exaustiva, lembra?). Neste caso, ele não estaria apto a escoher. Por outro lado, usar tree para mostrar processos permite que o usuário “esconda” processos que não lhe interessam.

M****! Deletei!

Design cases, HCI No Comments »

flags F***! I deleted it! Download the english version.

Hehe, e agora, o que você vai fazer? Como você deve ter notado, o post é sobre deletar itens inadvertidamente. Meu argumento é que este pode ser um erro que o usuário irá cometer (mesmoq ue a gente siga a lei de Fitt). Como nós, desenvolvedores (e designers) cuidadosos podemos evitar isso? Nós os “alertamos” :0)

Nós jogamos um Alert (o control) que diz algo do tipo: “ei, tem certeza que quer deletar isso?”

E o que o usuário faz? Ele não lê e clica ok. – “M****!”. Você diz: – “eu avisei”.

Bem, e se – e se e se – tentássemos algo diferente? E se ao invés de “alertar” o usuário, mudássemos o estado de um item e colocássemos um botão de undo?

deletedIt

Se o usuário inadvertidamente deleta o “Item F”, ele vê que o estado do item mudou. Se ele realmente quer deletar, ok, então quando ele sair* o tiem será deletado. Mas, se ele comete um erro, ele pode desfaze-lo logo que percebe.

* É claro, temos o problema de saber quando o usuário sai…

Gentle ItemEditor: sugestão de design

Design cases, Flex, HCI No Comments »

flags Gentle ItemEditor: design suggestion. Download the english version.

Agora é hora de ItemEditors.  Para os que não estão familizarizados com eles, veja este exemplo (Flex docs: http://livedocs.adobe.com/flex/3/html/movies/DropInNumStepper.swf)

ItemEditors são um tipo de ItemRenderer, como o nome diz: são uma view para um item. Pense num Tree, num List, num DataGrid… Normalmente, itens são mostrados como texto, mas, às vezes, queremos usar imagens e até mesmo outros controls. E se você precisa editar itens no local, você usa um ItemEditor :0)

Você precisa ter o Flash player 9 para ver este conteúdo

Bem simples, hein? Mas e quanto à usabilidade deles? Pense que você não é um desenvolvedor, ok? Você não está familizarizado com eles. Entao, como você muda o conteúdo de um item? Você vai esperar que seu usuário explore a interface? Eu não :0)

Então estou sugerindo o uso de ItemEditors como este da imagem abaixo:

Ie

O usuário vê, ao laod de cada item, dois botões: um para deletar e um para editar. Quando ele pressiona o botão de editar, o ItemRenderer muda, e agora ele mostra um TextInput com um botão de “tick”, ok. Qual a diferença? O usuário sabe o que esperar (e se ele for muito novato, pelo menos vai ter uma pista que precisa clicar em alguma coisa), e se ele clica no botão de editar, ele vê a interface mudar. “Ah… então é aqui que eu mudo o conteúdo… Ok” :0)

PS: Se você for um desenvolvedor, me diga uma estimativa de tempo para fazer este ItemEditor e um como o do site da documentação do Flex (quantas horas você levaria para implementar cada um deles). Se eu tiver retorno, vou publicar a estimativa (anonimamente, claro).

True or false? Cuidado com os rótulos dos seus controls

Design cases, HCI No Comments »

flags True or false? Beware of the wording of your controls. Download the english version.

Eu sempre tenho essa sensação quando estou escrevendo os rótuolos dos meus controls (no caso, checkbox). Sempre chega um momento em que eu “travo”. Se não deu pra entender meu problema, veja a imagem abaixo:

concordo

Considere a checkbox no topo: o que ela diz? Você concorda?

E a de baixo: você concorda?

Pois é isso que me trava. Não é uma tarefa fácil, o próprio Shneiderman*falou. Eu acho que tem muito a ver com o rótulo: se é positivo, normalmente é mais fácil marcar o estado desejado (concordo / não concordo).

Mas desta vez a coisa era um pouco mais complicada…..

Eu tenho uma checkbox que deve habilitar / desabilitar a edição de uma propriedade. Se esta propriedade “não se aplica”, então não tem sentido editá-la. Como a figura abaixo mostra:

able

Se “Coeficiente de atrito” se aplica, então você pode atribuir um valor a ela. Mas considere as opções na imagem acima: o que elas significam?

aplica

O que eu quero que o usuário entenda? “Se a propriedade NÃO SE APLICA, então NÃO EDITE”.

Então, embora tenha parecido esquisito no início, vou usar a sentença negativa. Eu achei que poderia ser confuso, porque se a propriedade for aplicável, então você teria que desmarcar o checkbox, o que é equivalente a uma dupla negação: “Não não se aplica, i.e. se aplica”. Mas eu também acho que ter o control selecionado no início é importante, para que o usuário veja que ele está desabilitado porque “não se aplica”.

Então a coisa ficou assim:

balanca

* Se ele disse, deve ser verdade ;0) Leia, é um clássico: Software Psychology: Human Factors in Computer and Information Systems;

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in