Ao trabalhar num projeto onde os usuários eram extremamente exigentes quanto aos detalhes de como a interface gráfica funcionaria, passei a pensar sobre como aquelas exigencias poderiam ser documentadas. Após um tempo vi que seria impossível coletar cada exigência que o usuário faz sobre aquelas dezenas de interfaces, principalmente porque o usuário pedia a alteração, a mesma era implementada e a partir daquela mudança o usuário notava que havia um outro detalhe que poderia ser alterado e como tinhamos 3 usuários chaves cada um fazia suas exigências ao sabor de seu humor.
Vendo aquele grande número de requisitos de interface e usabilidade, um processo iterativo poderia sim ajudar, mas ainda sim esse vai e vem de alterações tinha grandes chances de ocorrer. Abstraindo essas exigências e olhando de outra perspectiva notamos certas similaridades que podem nos ajudar a definir um padrão, como por exemplo processo para cadastro de informações:
- Usuário informa os dados;
- Sistema valida informações;
- Usuário desenha geometria no mapa;
- Sistema valida as regras topológicas;
- Sistema apresenta mensagens de resultado;
Ou como proceder numa alteração por exemplo. Esses procedimentos sempre nos conduzem a um padrão que é replicado às demais telas. Lembrando que me atenho ao aspecto funcional, como a mensagem é trocada entre usuário e sistema. Com relação à aparência de um site, deixo isso na mão de um designer que tem o conhecimento para definir estrutura de exibição das informações, cores, logos e etc.
Unindo-se a esta idéia acredito que a maior parte da responsabilidade em definir como os aspectos funcionais devem ser elaborados é nosso(desenvolvedores), afinal somos nós que trabalhamos o ano todo com centenas de usuários, diversos de projetos e mais do que ninguém temos o conhecimento necessário para definir como a tela se comportará e qual é a melhor forma para definir uma interface que torne a experiência do usuário algo prático, rápido e que controle bem as exceções, evitando que cadastros sejam perdidos, que informações erradas sejam inseridas, retrabalhos e etc.
Os operadores do sistemas convivem com um conjunto de informações em seu dia-a-dia. Estas informações mais relevantes deve sem apresentadas em um plano principal, pois são elas que fornecerão insumo para que seu trabalho seja exercido da melhor forma.
Todo o restante das informações deve aparecer com menor importancia na tela sem que esta importancia reduza este nova informação a um pequeno painel flutuante sobre o restante das informações, afinal por mais que existam outras informações de maior importancia em segundo plano a informação atual deve ser mostrada de forma que a atenção atual fique somente nela e assim que ela perder esta importancia ela é recolhida e não mais está sobre o mapa ou uma tabela dinamica com um resumo das informações.
As vezes imagino pq mostrar mais que 5 paginas… eu não teria tempo no meu trabalho para olhar cada uma delas, acho que as interfaces podiam ser mais dinamicas e um padrão sobre validações, formatos, e coisas que facilitem a vida do usuário seriam melhores tanto para a agilidade da execução do trabalho qto para redução de erros.
Afinal desenvolvemos sistemas para facilitar a vida do usuário, ele não sabe sozinho como isto pode ser feito da melhor forma, fico indignado quando fazemos coisas inferiores pq o usuário não sabe o que quer isto vai de encontro com a ética de um desenvolvedor.
Aí que fico indignado com essa definição extremamente unilateral de papeis, ou seja, definimos que um programador só faz codificar, um analista de requistos os coleta, prioriza e mantém os requisitos e se o usuário não definir o que ele quer podemos usar este documento contra ele, mas veja bem… ele nos contratou para que fizessemos o melhor e é claro que ele vai pagar com felicidade por ele, basta que ele esteja feliz com o software.
Enfim, concluindo sobre os padrões, acredito que definir uma a uma cada tela seja um trabalho muito árduo que exije grande esforço, mas se soubermos que informação exibir e os padrões que definam em que ordem devemos mostrar os dados se devemos priorizar campos requeridos, se devemos ocultar alguns dados não requeridos em grupos, como vamos formata-los. Como exibir as informações mais relevantes ao usuário e como mostrar novas janelas que contribuam para estas informações mais relevantes.
Vejamos um ciclo completo:
Um usuário que é responsável por coordenar a recepção de produtos deve ter um painel que mostre os produtos que necessitam de reposição nas próximas semanas e destes produtos o que já foi solicitado e se há algo chegando dentre os próximos dias. para ele selecionar algo que estava prestes a acabar avisando que é necessário solicitar estoque de reposição. para o vendedor apareceria outro painel com as informações relevantes ao trabalho dele. Contendo uma pesquisa sobre preços dos produtos frequentemente comprados, quais são os produtos que estão a ponto de chegar a reserva de estoque.
Talvez estes painéis representem grande tráfego na rede e alto consumo de processamento, mas tornar o sistema algo que traga valor aos usuários é o melhor caminho.
Talvez as telas que forneçam informações, tornem desnecessários preencher tantas informações para um cadastro.
Outro grande problema são as telas de cadastro, por exemplo… se eu for cadastrar uma rua, certamente eu já estarei no local em que desejo desenha-la neste ponto algumas informações não precisarão ser preenchidas pois o desenho já estará posicionado sobre algum pais, estado, cidade e bairro então pra que digitar tudo isso novamente? bom pra poupar processamento? se seu sistema não puder fazer uma busca em tabelas com no maximo 500 registros seu problema é mais grave, resolva sua infra antes de implementar o software.
Tenho quase certeza que o usuário não pedirá isso, pois isso vai onerar um custo e o pobre do usuário não vai pedir, mas se vc fizer um sistema meia boca, sinto lhe informar mas fará só um.
Enfim, para definir essas caracteristicas não acredito que seja necessário criar um protótipo de tela, uma prova conceitual com certeza, mas criar um protótipo para cada tela em algumas hora eu não vejo necessidade, talvez para determinar os padrões e facilitar a visualização pelo usuário, mas para cada tela eu não acho necessário.