Desenvolvedores são de Marte e profissionais de UX são de Vênus

A história desse artigo começou assim: a Ale Nahra (@alenahra) fez a seguinte afirmação no Twitter:

“Finalmente entendi a diferença entre sites ruins e bons: a integração entre equipe de UX e desenvolvedores.”

Eu retuitei e em seguida a Aline Couto (@alineideias) fez algumas considerações direcionadas a mim, o que foi o suficiente pra começarmos uma discussão interessante sobre os problemas relacionados com a integração de equipes de experiência de usuário e desenvolvedores. E como as frases jogadas no Twitter me fizeram conectar alguns pontos interessantes, eu não gostaria de deixar que isso morresse por lá.

O problema

Desenvolvimento de projetos para web envolve pessoas com formação e especialidades diferentes. Desde o planejamento até a publicação no servidor, um projeto passa por várias fases nas mãos de diferentes profissionais. Podemos dividir estes profissionais em 2 grandes grupos. De um lado temos profissionais de design, experiência de usuário (UX) e arquitetos da informação. De outro temos os programadores de interface e os desenvolvedores server side.

Geralmente os profissionais de experiência do usuário não entendem de tecnologia e desenvolvimento como deveriam e de igual modo os desenvolvedores não entendem de usabilidade, acessibilidade e design centrado no usuário como deveriam entender.

Cada grupo com suas especialidades e cada grupo com, digamos, “objetivos” diferentes. Os profissionais de UX querem que o projeto seja fácil de navegar, de encontrar informações e intuitivo. Os desenvolvedores querem que a aplicação funcione sem erros e que cumpra os requisitos que receberam no início do projeto. O que faz com que esses dois grupos tenham tantas divergências no desenvolvimento do projeto?

Eu atribuo esse dilema a um problema característico de cada grupo. Geralmente os profissionais de experiência do usuário não entendem de tecnologia e desenvolvimento como deveriam e de igual modo os desenvolvedores não entendem de usabilidade, acessibilidade e design centrado no usuário como deveriam entender. Estou sendo simplista? Talvez, mas eu acredito que este seja a raiz dos principais problemas de divergência entre equipes.

Eu comecei a trabalhar com internet focado em desenvolvimento, design e programação de interfaces e só depois de muito tempo é que migrei para arquitetura da informação e design centrado no usuário. Até hoje eu perambulo pelos dois mundos. Este texto é uma reflexão de problemas que observei cumprindo os diferentes papeis e eu adoraria muito saber a opinião de vocês sobre eles. Vamos lá:

Não entender nada de tecnologia e de desenvolvimento

Essa é a principal acusação que os desenvolvedores fazem aos designers de interface, planejadores, arquitetos da informação e outros profissionais de UX. Muitas vezes os desenvolvedores estão certos. Vejamos alguns problemas:

Falta de alinhamento com escopo: Os profissionais de UX acham que sempre é possível alterar a interface sem mexer em banco de dados, etc. Nem sempre. Se o projeto, por exemplo, for uma manutenção em um sistema legado, onde apenas a camada de apresentação será alterada, nem sempre dá para tratar as informações de forma diferente como implementada na versão anterior. Tudo depende de como o banco foi estruturado. As vezes dá e as vezes não dá. As vezes o profissional de UX cria uma interface fantástica, muito útil ao usuário, muito fácil de navegar e de encontrar mas não existe tempo hábil para alterar toda a estrutura de banco de dados só para sustentar a tal interface foda. Ou seja, por mais que o profissional de planejamento esteja bem intencionado, ele também precisa seguir o escopo do projeto. Porque os gerentes de projetos e líderes vão cobrar exatamente isso dos desenvolvedores: seguir os requisitos conforme foram definidos. Quer alterar alguma parte do escopo? Então chame os gerentes e o representante dos desenvolvedores para solicitar alterações de escopo e deixar claro pra todos as justificativas de alteração.

Demonstrar na cara do desenvolvedor que você acha que tudo é fácil de ser feito: Profisisonais de experiência de usuário muitas vezes acham que alterar uma interface no meio do projeto é algo “fácil”. Banco de dados são estruturados para serem otimizados de acordo com o que foi planejado. Se um projeto está no meio, muito provavelmente todo o banco já foi modelado e estruturado. É possível alterá-lo? Claro que sim, mas tudo depende do prazo e do tempo hábil para fazer. Não considere e não fique aborrecido se algo não der para ser feito (sempre considerando, prazo, cobrança e tempo hábil). Nem tudo é fácil de ser implementado.

Desconhecer contextos de desenvolvimento: Eu sei o valor que uma busca bem desenvolvida agrega a um projeto. Mas alguns tratamentos finos são muito, muito complexos de serem colocados em prática. Um dicionário de sinônimos (ou tesauro), por exemplo, é uma funcionalidade “linda”. Desenvolvedores precisam lidar com mensuração de carga no servidor, quantidade de consultas, precisam definir se buscas serão pré-indexadas ou não, quantos usuários o servidor aguenta se buscas forem realizadas no mesmo segundo sem derrubar o site, onde ele ficará hospedado etc. Implementar uma funcionalidade “fina” em um site com uma infra-estrutura muito pequena, poderá acarretar em um site muito lento devido a toda carga gerada no servidor. Nestes casos, se aquilo que o profissional de UX planejou for implementado, poderá acarretar em uma experiência de usuário lenta e desestimulante. Em resumo, conhecer o contexto de desenvolvimento é fundamental. E uma boa experiência de usuário no resultado final de um projeto, depende de alinhamento do contexto do projeto.

Desenhar telas sem consultar os analistas: Essa é clássica. Nunca mostre uma interface, wireframe ou o que for ao cliente sem ter certeza que dá pra ser feito, se a informação vai existir em banco, etc. Estamos falando de projetos já fechados. Se você está em fase de planejamento do projeto, apenas certifique que o analista entendeu como será o funcionamento e a natureza do tipo de informação que você pretende printar na tela. Tudo dá para ser feito e não custa nada perguntar e definir com quem vai desenvolver. Não estamos falando em “pedir bença” pro desenvolvedor, estamos falando apenas de alinhar com o que você está em mente. Consultar o desenvolvedor sobre certa implementação não deve fazer você se sentir inferior, com o tempo, você verá que você vai aprender muito sobre como as coisas são desenvolvidas e certas dúvidas que você tem hoje, não as terá no futuro.

Não entender nada de design e experiência de usuário

Esta é a principal acusação dos profissionais de experiência de usuário, arquitetura da informação, etc. Desenvolvedores na maioria das vezes não sabem o que é design centrado no usuário. E sabe o que é curioso? Eles também estão certos. Muitos desenvolvedores são hábeis e excelentes em programação mas desconsideram boas práticas de interface, funcionalidade, etc. Vejamos alguns problemas:

Não seguir boas práticas de desenvolvimento: Muitos desenvolvedores acham que o sucesso de um projeto está no fato de ele “não dar pau”. Ou seja, se tudo “funciona”, se o site não cai, o projeto foi um sucesso. Estes são os piores tipos de desenvolvedores que eu conheço. São capazes de ignorar qualquer outro requisito que não seja os “explícitos”.

Deixar de seguir boas práticas de desenvolvimento é deixar de pensar no usuário.

SEO, acessibilidade, separar conteúdo da apresentação e outros detalhes do desenvolvimento melhoram a experiência de usuário e nem sempre são requisitos que chegam documentados. Depende do “bom senso” do desenvolvedor. Deixar de seguir boas práticas de desenvolvimento é deixar de pensar no usuário. E muitas vezes os desenvolvedores poderiam fazer algo a respeito mas preferem colocar a culpa na falta de documentação.

Achar que design é apenas deixar uma tela bonitinha: Se você pensa assim, precisa se informar melhor do que é design. Se tivesse um pouco mais de conhecimento saberia que desenvolvimento de software e aplicações web também é uma disciplina de design. E design é feito para usuários. Existem milhares de boas práticas relacionadas a interação do usuário, comunicação de erros, agrupamentos de informação, organização, feedback ao usuário, etc. Design é um conjunto de definições que deve ser centrado no usuário. A tela nem precisa ser “bonitinha” mas precisa ser fácil de usar.

Achar que a atenção a detalhes é frescura: Uma vez ocorreu o seguinte caso: um sistema possuía um grid de resultado de busca com paginação. Se você estava em um intervalo x da paginação (página 15 de 40, por exemplo) e acessasse um dos registros, ao dar backspace ou usar o voltar do browser ou salvar o registro, o usuário era sempre levado a página 1 do resultado de busca. Eu disse que, ao “voltar”, o usuário deveria ser levado exatamente para a página da paginação em que ele estava anteriormente. Um dos desenvolvedores achou aquilo uma “frescura”. Mas são detalhes assim que tornam a vida do usuário útil. Estes detalhes poupam tempo quando pensamos que o usuário do tal sistema faz isso várias vezes ao dia. Imagine que toda vez que o usuário volta para a página 1 da paginação, ele precisa dar pelo menos 1 clique (no mínimo) a mais para voltar na página 15. Pense em quantos cliques e carregamentos de página eu não conseguiria economizar em 15 usuários que trabalham no sistema 6 horas por dia. Entendeu o porque eu preciso pensar no usuário?

Como essa relação pode ser melhor?

Em todos os projetos de sucesso que eu trabalhei, os projetos só foram um sucesso por causa do alinhamento entre os profissionais sobre qual é o objetivo do projeto, e não o objetivo individual de cada um como profissional. E para isso é fundamental todo mundo entender qual será a contribuição de cada um. O desenvolvedor só odeia os profissionais de UX quando estes se acham superiores aos desenvolvedores. Acham que por eles não “entenderem” de design centrado no usuário, não deveriam participar do planejamento. Se você deixar o desenvolvedor entender a importância do trabalho de UX, se mostrar sobre quais bases seu trabalho está fundamentado é bem possível que ele se interesse por boas práticas de desenvolvimento para alcançar seus objetivos.

Já os profissionais de UX odeiam os desenvolvedores quando os mesmos os tratam como ignorantes em TI. Tratam os profisisonais como se não fossem profissionais de “web”, quando na verdade os dois grupos lidam com tecnologia o tempo inteiro. Acham que tudo o que vem dos caras de UX é frescura e tudo o que eles planejam só serve para tornar o projeto mais caro. Profisisonais de UX não precisam ser especialistas em desenvolvimento como você, e eles são muito capazes de compreender como as coisas são gravadas e recuperadas em banco, assim como você. O que é necessário é treiná-los para entender mais sobre desenvolvimento e fugir das pequenas armadilhas do dia a dia.

Não estou falando que todo profisisonal de experiência de usuário precisa estudar programação e nem que todo desenvolvedor precisa ser especialista em arquitetura da informação. Mas eu defendo que os dois lados precisam conhecer melhor a especialidade do outro. Cursos e workshops de tecnologia, desenvolvimento e experiência de usuário irá agregar muito em todos os times. Um não é mais importante que o outro, porque um trabalho excelente nunca vai existir sem um desenvolvimento decente e uma boa usabilidade.

TI influencia na experiência final

Veja abaixo apenas 3 exemplos de como a forma com que um site é desenvolvido pode contribuir ou atrapalhar a experiência que o usuário terá:

  • Site lento: Implemente cache, etags, expire header, reduza o número de consultas o quanto for possível. Isso é tão sério do ponto de vista do usuário que o Google resolver atualizar o algoritmo do pagerank e colocou o tempo de carregamento como um fator importante para a relevância de um site. Sites mais lentos faz com que os usuários permaneçam menos tempo navegando dentro deles.
  • Acessibilidade: Desde atribuir o pseudo elemento :focus no CSS até fazer com que um formulário funcione sem javascript, são implementações que melhoram a acessibilidade para os usuários. Já navegou com a tecla tab em um site que não possui o :focus definido? Acessibilidade não é só para cegos.
  • SEO: SEO não são macetes para trapacear com os mecanismos de busca. SEO trata-se de fazer com que seu site seja mais amigável para os mecanismos de busca, para que consequentemente seja também mais fácil de ser encontrado pelos usuários que precisam da informação que o site que você está desenvolvendo possui. Isso chama-se “encontrabilidade”. A forma com que o conteúdo do site é tratada (semanticamente falando) pode facilitar (código semântico) ou dificultar (código porco dependente de JavaScript) o acesso ao mesmo.

Pronto, desabafei! Até a próxima!

  • tplayer

    Está ai um dos meus segredos profissionais, sou foco em interfaces mas domino totalmente a programação.

    Sendo assim eu consigo conversar com o "nerds" desenvolvedores de uma maneira que eles entendam.

  • http://twitter.com/alineideias Aline Couto (alineid

    Depois de conversar com o Henrique até acreditei que desenvolvedores podem dar atenção a detalhes de usabilidade e estética, porém, a grande maioria não da a mínima. Eu perco um tempo enorme implorando para que os programadores tenham o mínimo bom senso de deixar pelo menos os elementos alinhados.

    Aliás, como nossa simples conversa virou este post, esse post vai virar um manual do bom senso. O que acha henrique!? Eu escrevo um com considerações de estética e usabilidade e vc com considerações para os designers e arquitetos de informação?

  • Diego Henrique Olive

    Muito bom seu artigo. Como eu já trabalhei em agencia, conheço outra especie de desenvolvedores, os que dizem 'ah, mas isso não da pra fazer' quando o designer pede alguma feature um pouco mais complexa.

    ps.: o fundo do seu site incomodou demais minha leitura. :)

  • Pingback: Tweets that mention Desenvolvedores são de Marte e profissionais de UX são de Vênus ≈ Revolução Etc -- Topsy.com()

  • http://www.fabiosardinha.com.br Fábio Sardinh

    Muito bom o post, parabéns!

    O que vejo acontecer muito em reuniões é troca de nomes complicados para ambos os lados, sempre com a intenção de mostrar para o outro que sabe mais disso ou daquilo e muitas vezes esquecem de focar no usuário.

    Querem sempre proteger o seu feudo.

    Ambos temos que estudar, o Designer deve entender um pouco de Tecnologia e o Programador um pouco de UX, este seria o mundo perfeito para mim.

  • Pingback: Tweets that mention Desenvolvedores são de Marte e profissionais de UX são de Vênus ≈ Revolução Etc -- Topsy.com()

  • http://www.rogeriopa.com/blog Rogério Perei

    Olá, Henrique,

    Atualmente sou arquiteto de informação e trabalho na Talk Relacionamento Digital que possui escritórios em Brasília, Florianópolis e São Paulo.

    Comecei minha carreira como interface e sei muito bem o que você está falando.

    É exatamente isso que acontece na maioria das agências no Brasil.

    Arquitetos e designers ignoram o trabalho de implmentação e interfaces sempre acham que o arquiteto e o designer estão contra eles.

    Acho que falta um comprometimento com o trabalho do outro e muitas coisas são deixadas de lado simplesmente porque a informação não está em um documento. Esse tipo de atitude me deixa bem chateado.

    Tudo que está desenhado e escrito em um wireframe deve ser considerado, já que tudo isso foi apresentado em uma reunião de validadeção.

  • http://fatorw.com/ Walmar Andrade

    Já tinha pensado sobre isso e chegado a uma generalização (burra, como todas elas): os designers e AIs pensam como as pessoas vão usar o site. Os programadores pensam com lógica, como máquinas.

    E os seres humanos são criaturas de emoção, não de lógica…

  • http://themeforest.net/user/jonatanfroes/portfolio?clickthrough_id=10486422&redirect_back=tr Jônatan fr&oac

    Sou programador server side e às vezes arrisco em UX. Já vivi os 2 lados da moeda e o que mais me incomoda é o famoso "Muda só este pedaço. É simples, não é?".

    Em relação a sites lentos, a Aptimize fez uma lista dos sites mais lentos das 500 maiores empresas da revista forbes. Segue o link: http://mashable.com/2010/05/11/fortune-500-load-t

  • Samuel Arendt

    Quando entro na sala da equipe de desenvolvimento, a turma já comenta… lá vem o Samuel…

    Mas acredito que as divergências são mais por falta de respeito e por falta de diálogo.

    Quando estou desenvolvendo uma aplicação (sua navegação, wire, etc) estou sempre consultando o analista e os desenvolvedores.

    O importante é fazer o desenvolvedor sentir aquilo como um desafio, e claro, como algo REALMENTE ÚTIL para o usuário.

    Em nosso ramo, 95% das pessoas amam o seu trabalho, então – na maioria dos casos – não é por preguiça que as coisas não acontecem.

  • Rafael Carvalho

    Excelente! Tocou nos pontos certos, naqueles que começam a gerar problemas na comunicação dos profissionais. E todo problema na comunicação é refletido direto no projeto.

  • Cayo Medeiros aka. y

    Muito bom o artigo. O ideal seria o pessoal de desenvolvimento se interessar pelos padrões, por UX, etc e dialogar com os especialistas nisso, sempre aprendendo mais.

    Sou desenvolvedor de interfaces, quase formado em design e me interesso muito por UX, sempre desenvolvo pensando na experiência do usuário e já tentei muito fazer profissionais de "design gráfico" e "desenvolvedores não web" tentar entender vários desses conceitos e que na web as coisas funcionam de uma forma diferente mas nunca obtive o êxito. Comecei a achar que existem dois perfis diferentes: os profissionais que realmente se interessam, que querem fazer o melhor sempre e os que só fazem para ganhar o dinheiro no final do mês.

  • Giovanni Lima

    Melhor post que ja li neste blog… Excelente desabafo e concordo plenamente com cada linha descrita acima…

    Abraço!

  • http://www.chrisb.com.br/blog/ Chris Benseler

    Perfeito o texto, Henrique! Como líder de uma equipe responsável pela programação de interfaces web, estou sempre em contato com a parte de design, AI e backend, então vejo bem tudo isso qur você reportou acontecendo (e não via isso, dessa forma, 5 anos atrás, por falta de experiência).

    O que eu acho que faz uma boa diferença e é primordial é ter uma boa gerência e que entenda os pontos de todas as equipes envolvidas, para tentar chegar num denominador comum. Mas, claro, se não houver bom senso de qualquer uma das partes, só vai haver stress :-?

    Abs, e parabéns!

  • http://project47.viscountbox.com Carlos Eduardo

    Concordo exatamente com tudo o que foi dito.

    O problema é quando temos um prazo pífio para executar um projeto e temos que dizer para os desenvolvedores: "simplesmenta faça funcionar, não temos tempo de revisar o código".

    Claro que há uma exigência mínima de qualidade, mas certamente não é o cenário ideal.

    Parabéns pelo post!

  • Loja Virtual dos Blo

    muito bom seu blog

  • http://visualesco.com.br Daniel Soto

    Muito bom o post. Conheci o seu blog hoje e já li 3 posts completos e outros trechos. Parabéns pela sua sabedoria e obrigado por compartilhar!

  • http://www.pixelstudio.me Rogelio Gutter

    Excelente post. Sou desenvolvedor e normalmente não tenho problemas por estudar e conhecer muito de UX. Acredito que na maioria das vezes falta bom senso e conhecimento de ambas as partes.