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?
user-interface
zero95teen
fonte
fonte
Respostas:
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".
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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.fonte
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.
fonte
Eu acho que depende da maioria dos programadores usar parte esquerda do cérebro.
Uma boa fonte para uma leitura mais aprofundada deste assunto.
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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".
fonte
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.
fonte
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.
fonte
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.
fonte
Não sou um grande fã do desenvolvimento da interface do usuário por esses motivos:
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.
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.
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.
fonte
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.
fonte
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 ... ..
fonte
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.
fonte
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.
fonte
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!
fonte
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.
fonte
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.
fonte