Por que alguns programadores odeiam a parte da interface do usuário do desenvolvimento? [fechadas]


54

Muitos programadores que eu conheci sempre dizem que "ele não é um cara da interface do usuário". O fato é que hoje em dia, o desenvolvimento, seja na Web, Windows, Linux, OSX ou qualquer outro tipo de desenvolvimento, agora inclui software com uma interface de usuário atraente. Por que tantos desenvolvedores parecem não gostar do trabalho da interface do usuário?


54
porque eles não são designers :)
Mahmoud Hossam

17
O desenvolvimento não consiste em ter uma interface de usuário bonita, mas em ter um produto vendável . Qualquer um pode fazer algo parecer bom, poucos podem fazê-lo funcionar.
Josh K

58
@ Josk - Seu ponto principal é direto, mas eu discordo que "qualquer um pode fazer algo parecer bom". Nós desenvolvedores ficamos irritados com as pessoas que subestimam nossa profissão ("é apenas digitação, quão difícil pode ser?"), Então não vamos fazer o mesmo com outras disciplinas.
Steve S

20
Não vamos esquecer que boa aparência não é a coisa mais importante em uma interface do usuário. Houve inúmeras UIs bonitas que foram realmente difíceis de usar. Prefiro não ter um designer gráfico projetando uma interface do usuário, a menos que o designer tenha alguns fatores humanos.
David Thornley

17
@ Josh K: Depois de ler "O design das coisas cotidianas", acho que é o contrário. Fazer algo funcionar é a parte mais fácil. Fazê-lo funcionar tão bem que os usuários o entenderão intuitivamente, gostarão e desejarão usá-lo novamente, é muito mais difícil.
Nikie

Respostas:


102

Também não sou uma pessoa da interface do usuário. Bem, eu faço interface do usuário em meus próprios projetos, mas no trabalho não tenho nada a ver com isso - meu trabalho está nas entranhas do aplicativo, não no front-end.

Além disso, acho que é mais tédio do que ódio. Projetar a interface do usuário é a parte difícil e desafiadora. A implementação é principalmente um trabalho pesado. Há muito pouco desafio ou inovação em como se pode implementar uma interface de usuário, e há tantas vezes que é possível colocar uma caixa de seleção na tela antes de se tornar um pouco mental. E isso nem é importante em passar horas alinhando os pixels "exatamente assim".


63
+1 para "alinhar pixles 'just so'", eu odeio isso. É 99,99999% perfeito, mas o usuário deseja que a borda ao redor da caixa, que não deveria estar lá em primeiro lugar, tenha 2 pixels de largura, não 1, e um tom de azul "mais claro", mas não o tom claro teve 2 revisões atrás, mais sombrio que isso. E assim por diante, e assim por diante ... O que eu estou passando agora. O aplicativo funciona 100%, mas estou recebendo solicitações tediosas para alterar a caixa dessa dica de ferramenta e remover o período ... é nisso que meus "testadores" estão focados ... nem todas as funcionalidades.
CaffGeek 27/01

3
@ Robert Harvey, é uma luta diária. Eu gostaria que tivéssemos uma ou duas pessoas dedicadas à interface do usuário aqui ... isso também ajudaria a resolver nossa incapacidade de padronizar nossa interface do usuário em nossos principais aplicativos.
CaffGeek

23
+1 por observar que é muito mais interessante projetar uma GUI do que construí-la.
jprete

5
A implementação nunca deve ser um trabalho árduo. Se for, você tem uma arquitetura mal fatorada ou um processo ineficiente. Somos programadores, se estamos fazendo algo que uma máquina poderia fazer, deveríamos automatizá-la .
27511 munificent

10
@munificent Acho que a automação é um grande objetivo, mas ainda estou para ver um layout de interface do usuário automatizado que não precisou de ajustes para se adaptar à visão do designer ou à preferência do cliente. E existem apenas limitações técnicas - se você estiver usando o WinForms, por exemplo, suas opções de layout automático serão limitadas. Os aplicativos da Web são melhores do que os aplicativos de desktop, eu acho, mas, a menos que possamos criar telepaticamente um layout de interface do usuário e conectá-lo, acho que ainda haverá uma quantidade considerável de trabalho envolvido. Estou ansioso para provar que estou errado neste ponto no futuro. :)
Adam Lear

55

Criar uma boa interface do usuário envolve muitas habilidades diferentes do que escrever um código de back-end.

Os requisitos de back-end geralmente podem ser especificados como uma caixa preta, x entra e é esperado que y saia. Fazê-lo funcionar envolve a implementação da lógica e você pode testar programaticamente se funciona ou não.

Para criar uma boa interface do usuário, considere a usabilidade, o design visual, o layout e coisas como esquemas de cores. Ter alguma criatividade artística é um bônus aqui, e muitos programadores não sentem que têm isso. Para um cérebro lógico, a solução para um problema de interface do usuário pode parecer subjetiva, pois não há uma resposta correta ou nenhuma maneira fácil de validar que isso é feito 'corretamente'.

Eu acho que muitos programadores que não têm muita experiência de interface do usuário ou não fizeram muita pesquisa sobre ela não percebem que existem regras e ciência por trás do bom design de interface do usuário, tanto na perspectiva da usabilidade quanto na de design (por exemplo, cor teoria).

Obviamente, alguns programadores não têm problemas com esse aspecto, mas odeiam porque muitas interfaces de usuário são muito chatas para codificar. Eles podem consistir em muito trabalho repetitivo, como páginas de formulários para páginas de administração, onde precisam ser funcionais e não há desafio de design.


3
Escrever código de back-end também envolve muitas habilidades diferentes (ao contrário do que seu primeiro comentário parece sugerir), é apenas um conjunto diferente de habilidades.
Matthieu M. 29/01

2
@ Matthieu sim, e eu nunca disse que não. O que eu quis dizer foi que a codificação da interface do usuário envolve muitas habilidades diferentes da codificação de back-end. Por favor, não acho que eu estava menosprezando back-end de codificação, é o que eu mais faço para viver :)
Alb

+1: isso é difícil, e a abordagem normal para design de software simplesmente não funciona para gráficos. Se é feio, permanece feio.

18

As pessoas apenas têm interesses diferentes. Alguns programadores estão mais interessados ​​em estruturas e algoritmos de dados, outros em arquitetura, outros em usabilidade e design de interface do usuário - ou qualquer combinação desses e de outros nichos. Cada um deles exige habilidades diferentes e maneiras diferentes de pensar sobre um problema. Se você gosta das porcas e parafusos de baixo nível da programação, talvez não se importe tanto com a maneira como o usuário pensa, ou vice-versa.

Pessoalmente, eu entro nesse último campo - prefiro criar uma interface do usuário do que um algoritmo complexo. É exatamente o tipo de coisa que acho interessante.


15

Se um determinado design de interface do usuário é bom ou ruim é bastante subjetivo , o que eu acho que os programadores em geral acham desagradável. Algumas décadas de esforço para quantificar e qualificar boas técnicas de interface do usuário ajudaram a criar algumas regras gerais que podem ser aplicadas, mas mais frequentemente do que não determinar se uma interface do usuário é boa requer muitos testes A / B e outras observações do usuário técnicas.

Embora haja certamente subjetividade na programação, geralmente você pode apontar para alguma forma de razões objetivas sobre por que uma escolha é melhor que outra: velocidade de execução, requisitos de memória, flexibilidade para atender às prováveis ​​necessidades futuras, práticas que demonstraram ser mais eficazes em o passado, etc. A defesa de uma determinada opção de interface do usuário - e, portanto, mesmo a própria escolha - geralmente se degrada para "eu gosto", que é um tipo totalmente diferente de argumento a ser apoiado.


2
no momento, o "subjetivo" é irritante. Leve duas pessoas para lá e elas têm opiniões muito diferentes sobre o que é uma boa interface do usuário. Você não pode testar unitariamente um aspecto da GUI (na verdade não). etc ...
Matthieu M.

13

Pessoalmente, não gosto do desenvolvimento da interface do usuário porque não sou bom nisso. Há um enorme elemento da psicologia do usuário que eu simplesmente não sou bom em entender. Acho que meu maior problema é que não posso me colocar no lugar do usuário. Não sei como criar layouts intuitivos em grande parte porque não sei o que é intuitivo para o usuário, nem sei como tornar as coisas bonitas.

Eu não necessariamente acho que alguns programadores odeiam projetar UIs, tanto quanto odeiam fazer coisas nas quais não são bons. Acontece que existem muitos desenvolvedores que não são bons no desenvolvimento da interface do usuário.


+1 - "Programadores odeiam fazer coisas em que não são bons." Tão verdade. Quando você está fazendo isso em um projeto pessoal, é prática e pode ser divertido, mas quando você está fazendo isso por seu trabalho - é desempenho e, se você não tem as habilidades, é estressante.
lunchmeat317

11

O problema com o design da interface do usuário é que todos têm uma opinião ... E não há resposta certa ou errada. Os desenvolvedores, por outro lado, adoram preto e branco e lógica. Em qualquer empresa de qualquer tamanho, todos concordam com isso 1+1=2, mas pergunte qual fonte facilita a leitura (Comic Sans Obviously)... prepare-se para o dilúvio. Dez mil respostas diferentes e todo mundo está certo, porque todo mundo é diferente.


6
Ah Deus, Comic Sans ...
Maxpm 27/01

+1 para lógica em preto e branco. Eu realmente odeio tomar decisões sobre coisas que não têm respostas certas ou erradas (projetar interface do usuário, decidir onde morar, o que comer no jantar, etc. lol).
Dan

7

Como desenvolvedor que realmente gosta de trabalhar na interface do usuário (especificamente, eu fiz meu quinhão de web design), agradeço quando alguém que não possui o conjunto de habilidades fica de fora.

O desenvolvimento requer a capacidade de manter muitos dados em sua mente e lidar com muitos de uma só vez. O design da interface do usuário requer a capacidade de reduzi-lo o mínimo possível, sem sacrificar sua integridade. Eu amo o desafio disso; e me encolho quando vejo alguém criar uma interface do usuário que é um wall-o-data incontrolável na tela. (Eu também sou totalmente nerd quando se trata de layout, teoria das cores etc.)

Por outro lado, eu odeio coisas de baixo nível. Nunca tocarei o código de drivers, kernels ou qualquer outra coisa assim: estremecimento: deixarei isso para os "caras que não são da interface do usuário" e estou feliz que alguém goste de fazê-lo, ou isso nunca seria feito.


6

Eu acho que depende da maioria dos programadores usar parte esquerda do cérebro.

Uma boa fonte para uma leitura mais aprofundada deste assunto.

insira a descrição da imagem aqui


6
Você pode apreciar o livro Pragmatic Thinking and Learning: Refactor Your Wetware , que fornece uma nova maneira de pensar sobre as diferenças do lado esquerdo / direito do cérebro. Na verdade, ele os renomeia nos modos Linear e Rich, e é realmente uma ótima leitura.
CaffGeek

@Chad Thankyou Chad! Eu vou considerar!
Amir Rezaei

+1 por trazer isso à tona. O desenvolvedor de aplicativos de back-end é altamente analítico, enquanto o trabalho de front-end é muito mais criativo. Algumas pessoas gostam de ambos, mas muitos gostam de manter seus respectivos nichos.
bunglestink

Apenas um pouco de informação adicional para aqueles que possam estar interessados: na verdade, não é 100% claro qual hemisfério desempenha um papel maior na determinação da capacidade matemática .
Dan Tao

Discordo que a "música" se enquadra nas funções do lado direito do cérebro, principalmente porque é agrupada com "arte". A música é extremamente matemática e lógica, enquanto a arte é o oposto completo (talvez com exceção da pixel art, onde as limitações técnicas reintroduzem a lógica na "arte").
Dan

6

O desenvolvimento da interface do usuário fica complexo porque você recebe muitas informações das pessoas erradas. Eles são todos especialistas em design gráfico. Eles não são encontrados onde você quer saber a fórmula de alguma coisa.

Eles não sabem o que querem, mas sabem quando o veem, não têm gosto e aqueles com poder de decisão não usam o aplicativo de qualquer maneira, mas têm certeza de que deve ser verde. Você segue as diretrizes para uma boa interface do usuário, como limitar a quantidade de campos em um formulário e recebe uma solicitação para adicionar mais 50 campos, porque eles 'precisam' de todos eles e tê-los em guias separadas é muito esforço. Você sabe, o mesmo que o Excel. Camponeses!

Você não pode inventar isso. Eu participei de uma reunião em que as duas principais pessoas do departamento de contabilidade (salário de aproximadamente 500 mil / ano) de um grande escritório de advocacia passaram meia hora discutindo sobre um rótulo em uma página de cobrança usada pelos advogados. Isso deveria facilitar o entendimento dos advogados. Por que não perguntar aos advogados? Muito fácil. Assim, o departamento de TI recebe 50 ligações telefônicas de advogados que desejam conhecer o "Valor Residual de Faturamento Líquido" da WTF e por que está no formulário de registro de horas.


5

Algumas pessoas gostam de brócolis, outras não. Podemos ter que comê-lo, mas não precisamos gostar e não vamos gostar quando comermos. Não só isso, vamos evitar ter que comer o máximo possível.

Existem muitas outras coisas para codificar além da interface do usuário. Serviços da Web, Windows Services, incorporados (pouca interface do usuário no microondas), apenas para citar alguns exemplos.


9
A interface do usuário geralmente fica encolhida no microondas, e é por isso que a maioria delas é péssima.
Robert Harvey

4
O problema do micro-ondas é que, quando você tem um bom, com uma interface de usuário agradável, em que não precisa de uma ordem muito específica para os botões para realizar uma tarefa, nem pensa nisso. Mas quando você compra esse micro-ondas barato para o porão, ou qualquer outra coisa, percebe imediatamente o quanto a interface do usuário é horrível. Você precisa memorizar ordens precisas de pressionar botões. Eu escolho o nível de energia antes da hora? Ou depois? Preciso acertar o tempo de cozimento primeiro? etc, etc ... E quando você precisar ler as instruções ocultas ?! UGH! Uma boa interface do usuário deve ser "invisível" para o usuário.
CaffGeek

Metáfora terrível. Eu amo brócolis, mas odeio projetar interface do usuário. ;)
Dan

4

Isso pode ser porque - em alguns casos - ferramentas expressamente concebidas para ajudá-lo a desenhar a interface do usuário para sugar macacos mortos bebê através de um canudo.


4

Há certas coisas no desenvolvimento da interface do usuário que são difíceis de corrigir.

O layout é um deles. Desenvolvo interfaces de usuário há mais de 15 anos e ainda não tenho uma solução decente para o gerenciamento de layout.

Outra é o roteamento de eventos - mesmo com arquiteturas MVP e outras coisas exigidas pelas estruturas, eu diria que as interfaces de usuário mais complexas têm problemas de roteamento de eventos - que podem ser descobertas se alguma das estruturas de teste puder resolvê-las bem.


3

Eu sei que, para mim, eu odiava o UI dev porque achava muito tedioso e lento, especialmente escrevendo código de layout para posicionar as coisas em um formulário ou winow. Agora, com as ferramentas de designer de interface do usuário, como o Forms Designer no Visual Studio, eu quase gosto . Outras razões para odiá-lo que ouvi de outras pessoas incluem "é estúpido", "sempre muda demais", "não é suficientemente desafiador", "é tedioso / chato".


4
Como você responde quadrado com seu nome de usuário? :)
Robert Harvey

@ Robert Harvey: Justo! O Forms Designer é bom, mas quando você começa a gostar de contêineres genéricos de interface do usuário, ele começa a engasgar. Ou pelo menos o VS2008 fez. Ainda não experimentou 2010, mas suspeito que possa ter problemas semelhantes? De qualquer forma, o problema acabou sendo resolvido (veja meu primeiro post no SO). Há outras coisas que sufocam-lo também, mas ele remove o suficiente do tédio que eu normalmente agora desfrutar UI concepção / desenvolvimento.
FrustratedWithFormsDesigner

3

Por que todos os jogadores de xadrez não gostam de projetar tabuleiros de xadrez e as peças com as quais brincam?

Não é estranho que algumas pessoas não gostem disso ... é estranho que você espera que devamos.


11
os jogadores de xadrez não projetam peças e tabuleiros de xadrez porque esses projetos são padronizados há mais de um século pela Federação Internacional de Xadrez (FIDE) e esses padrões foram universalmente adotados.
Jwenting

2

Eu gosto de trabalhar na interface do usuário. Isso nem sempre foi verdade para mim, mas minha satisfação com o trabalho da interface do usuário aumentou à medida que eu me tornava melhor nos últimos anos. Eu sei que alguns desenvolvedores não devem ser permitidos perto de uma folha de estilo ou paleta de cores. Definitivamente, é um conjunto de habilidades diferente, e nem todo mundo tem.


2

Eu não odeio tanto a interface do usuário, como odeio algumas estruturas de interface do usuário. Por exemplo, estou programando .NET há> 10 anos. As estruturas para a criação de aplicativos Web são ótimas (ASP.NET WebForms e ASP.NET MVC). Mas as estruturas para escrever aplicativos de desktop, bem, não gosto deles (WinForms e WPF).

Portanto, nesse aspecto, escrever aplicativos GUI é mais um aspecto do uso de estruturas de que não gosto.

Há outro aspecto. Costumo trabalhar com aplicativos de estilo "corporativo", ou seja, aplicativos em que um aplicativo de desktop precisa receber dados de um servidor. Nesse caso, existem tantas camadas de conversão de dados de um formato para outro que ficam realmente muito chatas.

Por exemplo, o aplicativo recebe informações através de uma série de objetos DTO. O aplicativo cria sua própria representação de modelo dos dados (não reutilizando as mesmas classes de domínio que foram criadas no servidor). As classes de modelo são consumidas por um modelo de visualização (em um padrão WPF MVVM), que expõe as propriedades no modelo.

Muitas vezes, os mesmos dados são representados por classes diferentes. E isso fica chato. Mas esse é um problema específico para esse tipo de aplicativo de desktop.

Também existem desafios interessantes nesse tipo de aplicativo, como obter alterações de um cliente para atualização imediata em outro cliente.


++ Eu sei o que você quer dizer. Para o último ponto sobre a propagação de atualizações entre clientes, uso sondagens (normalmente em 1 segundo), mas isso provavelmente funciona apenas para um banco de dados bastante pequeno e um número pequeno de clientes.
Mike Dunlavey

2

Não sou um grande fã do desenvolvimento da interface do usuário por esses motivos:

  1. Como desenvolvedor, você tem menos liberdade para criar: O cliente pode ver e ter opiniões sobre cada pequena faceta da interface do usuário à qual você deve reagir. Você receberá solicitações como: altere a cor disso; mova esse botão para lá; não importa, mova-o de volta. O código de back-end raramente é tão visível.

  2. A interface do usuário é mais confusa, enquanto o back-end é mais "platônico". Enquanto eu vi bagunças feias de código de back-end, acho que é mais comum que seja limpo (da perspectiva do código) do que o código da interface do usuário. Uma interface do usuário pode ter uma aparência realmente limpa e bem projetada para o usuário, mas como sou desenvolvedor e passo mais tempo no código do que usá-la, gosto mais de limpar o código.

  3. Eu sinto que a interface do usuário é mais um "encanamento" do que o back-end, ou seja, há menos oportunidade para algoritmos inteligentes e realmente empurrando seu cérebro ao limite.


1

Eu faço a interface do usuário (desktop, não web) e coragem interna.

A quantidade que eu gosto ou não de um depende de quanto eu posso fazer usando algo como uma linguagem específica de domínio (DSL).

No domínio da interface do usuário, o que estou apresentando aos usuários e a complexidade das informações que estou obtendo deles são de tal ordem que eu ficaria louco se tivesse que usar ferramentas típicas, como designers de formulários, muitos manipuladores de eventos, MVC , todo esse material de "estado da arte". Felizmente, décadas atrás, descobri o que considero uma maneira melhor, que é criar uma DSL para ela e trabalhar nisso. Atualmente, chamo-o de Diálogos Dinâmicos e é baseado em uma estrutura de controle que chamo de Execução Diferencial . A boa notícia é que, para uma determinada funcionalidade, o código fonte é aproximadamente uma ordem de magnitude menor, permitindo que eu coloque muito mais funcionalidade na interface do usuário. A má notícia é que, por mais que tentei ensiná-la, não tive muita sorte em transferir a tecnologia.

No domínio que não é da interface do usuário, tirei uma lição de vários produtos que começaram como DSLs utilizáveis ​​na linha de comando, na qual uma interface do usuário foi posteriormente enxertada. Isso fornece ao usuário especialista algo em que ele pode ignorar a interface do usuário, enquanto fornece ao usuário casual algo que ele pode usar casualmente. (Exemplos: R, SPlus, Matlab, SAS, WinBugs.) Portanto, nosso produto possui uma linguagem de linha de comando para especialistas. Adoro desenvolver essas coisas, com um analisador, gerador de código, pré-compilador e mecanismo de modelagem em tempo de execução. O esforço gasto com isso é pelo menos uma potência de 10 a menos do que o esforço gasto na interface do usuário.

Um dos motivos pelo qual o esforço da interface do usuário é grande é que ainda há muita "cola" que não pode ser feita com uma DSL - gerenciamento de grades de dados, todos os tipos de maneiras de classificar dados, todo o material que cai na "rachadura" bocejante entre UI pura e linguagem subjacente.

Portanto, sua pergunta foi "Por que alguns programadores odeiam a parte da interface do usuário do desenvolvimento?". Eu só odeio por causa dessa "cola" para a qual eu não tenho uma DSL.


1

Honestamente, acho que encontrar o melhor kit de ferramentas da GUI e realmente aprender os detalhes é meio que uma PITA ... sem mencionar que você não aprende muita coisa da interface do usuário na faculdade e sou um novato, então ... ..


1

Além do que já foi declarado (é um trabalho tedioso, chato e frustrante para codificá-lo e o design geralmente é feito antecipadamente por alguém que não tem idéia dos problemas que suas idéias causam para quem tenta implementá-las), um fator importante é que você está tendo que trabalhar com pessoas cujas idéias sobre o que você deve fazer mudam constantemente, muito mais do que no backend. Como resultado, você está disparando contra uma especificação em movimento ainda mais, e essas pessoas também tendem a ser mais exigentes. Eu literalmente tenho interfaces de usuário com falha nos testes porque um componente estava a 1 pixel do local que a pessoa que testava achava que deveria estar. Funcionou? Sim. Pareceu bom? Sim. Mas ele começou a contar pixels e havia um único pixel fora de linha com o resto, então o enviou de volta para retrabalho.


1

Mais alguns pontos:

1) O design da interface do usuário pode ser mais difícil de testar; você pode verificar se esse botão faz o que deveria, mas testar se é mais fácil de usar é mais difícil. Que tal testar se será utilizável com alguém com deficiência?

2) Muitos programadores não são treinados e não sabem muito sobre isso.


1

O fato é que muitas ferramentas de interface do usuário / framework / API são ruins, complexas e muito distantes para serem intuitivas. Eu desenvolvi com API Win32 em C / C ++, com javax.swing, CSS, etc Desde então, eu odeio ter que lidar com o desenvolvimento de UI ... Até o quadro Qt!


11
Quer dizer que você esgotou as ferramentas que não são mais de uso comum (a maioria das pessoas não usaria o Win32 para programação de UI atualmente)? Desculpe, mas não considero isso válido.
user16764

1

Como estudante de CS, você aprenderá a estrutura de dados, banco de dados, C ++ ... exceto a interface do usuário. Então você não será bom nisso desde o início . Se você não é bom nisso, vai odiar.


Muitas universidades e faculdades oferecem cursos de design de UX. Frequentemente, como parte do currículo do CS.
user16764

1

Tendo trabalhado nos dois lados da moeda, ou seja, no design da interface do usuário e no código de back-end, descobri que ambos os lados da moeda são basicamente a mesma coisa.

Os requisitos que diferem do que você faz no dia a dia não surgem o tempo todo e agora, na era em que todos os serviços giram em torno do CRUD, torna-se chato.

De qualquer forma, a codificação do front-end permite uma melhor interação e dinamismos malucos que basicamente estragam uma mão inexperiente no design do front-end. Eu, pessoalmente, aprendi da maneira mais difícil no frontend e posso dizer comodamente que o design do frontend é muito mais interessante e desafiador.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.