Os programadores da GUI têm uma vantagem indevida sobre os outros?

23

É fácil para gerentes e clientes apreciarem o que podem ver.

Eu já vi muitos desenvolvedores de GUI que são programadores comuns, com conhecimento mínimo de princípios de design ou outros idiomas de programação. No entanto, essas deficiências geralmente passam despercebidas, especialmente pela gerência e pelos clientes, se o programador puder criar uma interface de usuário impressionante. Tanto é assim que muitos desenvolvedores de GUI que conheço passam horas embelezando a GUI à custa de escrever códigos ruins e inatingíveis.

Por outro lado, programadores de camada intermediária que desenvolvem APIs ou funcionalidade comercial ou código de banco de dados (SQLs etc.) estão em desvantagem, pois não há nada tangível para mostrar. Talvez um revisor de código ou um arquiteto aprecie a elegância, o bom design, a escalabilidade etc. do código, mas isso não significa nada para o mundo exterior. Seu código pode funcionar por anos sem quebrar, pode ser muito fácil de manter e ter um bom desempenho, mas nunca provoca o 'uau' que uma GUI de aparência elegante faz.

Na minha opinião, um corolário disso é (e eu vou ser muito criticado por isso, eu sei) que há menos motivação para um programador de GUI escrever um bom código limpo.

Edição : Devo explicar aqui que, por programador de GUI, não me refiro a um designer de web / GUI completo, mas a um programa front-end, por exemplo, um programador de Java-Swing.

O resto da comunidade concorda?

Rahul
fonte
6
Quem tem que sofrer com as solicitações 'tolas' de fontes, rótulos, cores e mudar tudo? Você toma o bem com o mau.
Jeffo
@ Jeff O: Muito verdade. Nenhum usuário jamais criticou minha escolha de quanta memória alocar para uma estrutura de dados ou quais colunas de uma tabela de banco de dados indexar.
dan04
2
Ter que trabalhar com layouts (. Se Swing, GWT, HTML, CSS) é tal tortura a que não ter de lidar com isso é uma vantagem ...
Uri
@ dan04: Tente trabalhar com usuários científicos seniores. Eles ficam felizes em usar interfaces de usuário feias e passarão anos brigando por estruturas de banco de dados (geralmente em uma tentativa de manter alguma crosta antiga e não-indexável, porque seus scripts antigos fazem uso dela). Grr ...
Donal Fellows
É como a diferença entre um baixista e o resto da banda. Eles fazem muito trabalho de importação em segundo plano, mas ninguém nota, exceto outros baixistas.
Gordon

Respostas:

21

Acho que entendi seu ponto de vista, mas suspeito que também haja uma questão oposta a considerar.

Basicamente, acredito que você está sugerindo que, como a interface do usuário é o elemento do aplicativo 'na cara' dos usuários finais, os desenvolvedores da interface do usuário desfrutam de uma maior visibilidade do que os membros da equipe que trabalham em camadas mais profundas do aplicativo.

Certamente concordo que pode haver uma maior visibilidade. Por exemplo, os desenvolvedores que trabalham nos elementos da interface do usuário podem interagir com os usuários finais com mais frequência (sem dúvida, por boas razões, uma vez que se concentram no aspecto de interação humano / computador).

No entanto, acho que a maior visibilidade entra em jogo, mesmo nos casos em que há um problema. Por exemplo, é muito provável que os usuários finais relatem problemas como 'Problemas da GUI' mesmo quando não o são.

Tudo pode se resumir à percepção, e uma organização madura deve ser capaz de reconhecer valores, virtudes e fraquezas dos vários membros da equipe, independentemente da camada do aplicativo em que trabalham. Uma organização madura também pode ter ido além de distinções como 'desenvolvedor de interface do usuário' e 'desenvolvedor da camada de negócios', reconhecendo que todos são membros da equipe de qualquer maneira, talvez com conhecimentos diferentes, mas sempre tentando se educar nessas áreas de conhecimento.

PARA
fonte
1
E não é como se a maioria das empresas fizesse uma pesquisa com usuários para ver quem é o melhor programador.
Jeffo
1
+1. Eu trabalho na GUI e, sempre que há um 'problema', ele chega na minha caixa de entrada. A responsabilidade é minha: 'provar' que a fonte do problema vem de baixo para baixo. Os programadores de GUI também precisam manipular a "pureza" dessas APIs bonitas com o caos dos requisitos do usuário.
Benjol 27/07
10

Para uma pessoa que não lida com programadores, posso dizer com confiança que eles acreditariam nesse tipo de coisa. Eles não sabem a quantidade de trabalho em segundo plano, tudo o que vêem é um monte de botões / caixas de texto / menus / [inserir elemento da GUI] e a velocidade necessária para realizar o que o botão iniciou. Então, inicialmente, as pessoas da GUI são mais queridas.

Se a pessoa faz negócio com os programadores, então, é um pouco diferente. Como você disse, eles notariam se você o tornasse escalável, mais fácil de manter, reescrevesse um algoritmo para que fizesse mais sentido ou qualquer outra tarefa do tipo manutenção. Esse tipo de pessoa olharia para todos os programadores igualmente.

No meio, depende do que você está fazendo. A velocidade então se torna o fator importante aqui. Se você pode mostrar antes e depois das gravações de quanto tempo leva para um formulário ser processado e armazenado e há uma melhoria, você é igual. Se você pode mostrar o aplicativo sob carga de 100 clientes e mostrar a eles o servidor derretendo, e depois mostrar a eles sua versão onde tudo está bem, é igual. Etc.


Em resumo, depende da pessoa e do que você está fazendo.

TheLQ
fonte
8
Como alguém que apenas passou os últimos 5 anos trabalhando em coisas de infraestrutura (pilhas SIP), +1 - a maioria das pessoas não sabe o que você está fazendo, e não há nada particularmente visível, além de algo que não está funcionando. Quanto você acha do seu encanamento ... até que ele se quebre?
Frank Shearar
6

Como o "especialista em interface do usuário" da minha empresa (o responsável por todo o desenvolvimento da interface do usuário, não apenas o design), acho que você pode estar perdendo parte da história. Enquanto eu sou o responsável pela interface do usuário, também trabalho no back-end, nos bancos de dados, etc. Faço tudo isso (somos uma equipe pequena). [Desenvolvimento de C # e ASP.Net WebForms]

Primeiro de tudo, sim, é muito mais fácil para as pessoas não técnicas apreciarem o trabalho de um desenvolvedor de GUI, porque é isso que as pessoas enfrentam. Para pessoas não técnicas, a GUI é o aplicativo . A desvantagem é que a GUI também é a primeira a ser responsabilizada quando algo dá errado.

Em segundo lugar, o desenvolvimento do front-end tem sido muito mais desafiador para mim do que o back-end já foi (algoritmos obscuros / complexos à parte). Há muito mais para se proteger, é apátrida (nossos aplicativos estão na Web), os navegadores não se comportam de maneira consistente (as bibliotecas JavaScript eram uma dádiva de Deus) etc. Espero que a maior parte dessa complexidade seja devido à estrutura que tenho. trabalhar com (ASP.Net WebForms) e que todas as coisas difíceis não serão um problema no futuro.

No geral, tive muito mais dificuldade em resolver problemas de interface do que problemas de back-end.

mbillard
fonte
5

Eu odeio o desenvolvimento de GUI por duas razões,

  1. Sou mais lógico do que graficamente artístico e minha interface do usuário sempre sofre como resultado.
  2. Como a interface do usuário não se baseia na lógica, os testes de unidade são quase impossíveis de serem escritos com algum significado

No final do dia, no entanto, acho que meu código será mais apreciado pelo usuário final (em oposição, talvez, a um patrocinador do projeto), do que o de um desenvolvedor medíocre que é um gênio na UI, pois geralmente funciona .

johnc
fonte
4

Para (talvez) expandir um pouco a resposta do @ TheLQ, acho que também depende do "visualizador".

Eu tive alguma experiência com alguns gerentes / supervisores de nível superior que não têm experiência em programação. Alguns reconhecem que não programam, mas entendem que o cromo e as calotas são tão importantes quanto o motor e o chassi.

E já tive experiência com alguns gerentes / supervisores de nível superior que não se importam com outras métricas além da escalada da interface do usuário. Mesmo afirmando que mais desenvolvedores orientados à interface do usuário eram importantes.

IMHO, todos sabemos que você não pode polir um bosta e um aplicativo rápido, confiável e feio será muito pior do que um aplicativo que pareça bom e funcione bem. Está tudo nos olhos de quem vê e, até certo ponto, você tem o poder (independentemente do que faz) de ser visto à luz que deseja, trabalhando para aqueles que apreciam as mesmas qualidades que você.

EDIT: devo acrescentar que, sendo alguém que se sente mais à vontade trabalhando em itens de nível inferior, fico desanimado quando você trabalha tão duro quanto a equipe da interface do usuário e é o polonês elogiado na demonstração e não o fato de o sistema " apenas funcionou ". Mas, como eu disse, sei que meu supervisor sabe que o trabalho é necessário em todas as áreas.

DevSolo
fonte
3

Eu acho que existe uma presunção geral por aí de que os desenvolvedores da interface do usuário são os desenvolvedores "juniores". Só consigo pensar em um caso em que encontrei um cara de interface do usuário que era considerado sênior.

Dito isto, acho que a interface do usuário é muito mais difícil do que qualquer outra parte de nossos aplicativos. E não estou falando sobre o design de UX, estou falando sobre a codificação. Quantas outras áreas codificamos onde devemos contabilizar dezenas, senão centenas, ou possíveis cenários? Apenas redimensionar uma tela às vezes pode se tornar uma dor real quando você precisa descobrir o que precisa acontecer com algumas dezenas de elementos. Isso ocorre principalmente quando você tem diretrizes que dizem "precisamos oferecer suporte a 800x600" e, em seguida, designers de UX que nunca usam nada além de resoluções em HD.

Portanto, se eles obtêm mais bondade por causa de mais exposição, provavelmente merecem. Geralmente, eles estão errados com mais frequência do que com os bons.

MIA
fonte
3

Muitas vezes parece haver a ideia de que um programador de GUI está na parte inferior da cadeia de programadores. Quão difícil pode ser arrastar e soltar um botão no VS para um formulário? Você levará uma semana para programar isso? Está desenhando algumas barras. Portanto, não estou surpreso ao ver a idéia de que os programadores da GUI, por serem os botões que arrastam, também devem estar escrevendo código horrível.

A programação da GUI tem alguns desafios únicos. Multithreading para manter a GUI ativa enquanto os dados são carregados. Isso leva ao encadeamento de código seguro e adequado. O desempenho é muito importante. Ninguém gosta de esperar dois minutos até obter o controle do aplicativo novamente. A reutilização também se torna um grande problema. Se você tiver que escrever dez telas semelhantes, é melhor estruturar bem seu código. Isso leva a um código melhor. E, é claro, criar uma boa interface gráfica do usuário é um desafio em si.

Mas para algumas pessoas, basta arrastar um botão para o seu aplicativo. Assim como para algumas pessoas, a lógica de negócios nada mais é do que "analisar uma mensagem e colocá-la no banco de dados".

Carra
fonte
2

Eu acho que é óbvio que eles fazem. Talvez os desenvolvedores de primeira linha estejam isentos, mas a maioria dos outros não.

Quando seu gerente pergunta o que você fez no mês passado, é fácil mostrar uma interface gráfica interessante. É difícil mostrar uma API legal. Muito difícil. O frescor da API só é aparente através do uso real - não pode ser apreciado de relance.

enverpex
fonte
1

Você pode se safar de todo tipo de hackery e atalhos nos sistemas internos. Ao lidar com a GUI, você não tem essa liberdade. Sua API interna pode ter inconsistência e você espera que os codificadores lidem com ela porque é muito difícil de corrigir. Você não pode tentar fazer com que seus clientes façam a mesma coisa. Então, em certo sentido, as pessoas que precisam lidar com os componentes visíveis do usuário precisam seguir um padrão mais alto.

Winston Ewert
fonte
1

Vou dizer que sim, por uma simples razão: o iPhone. Todo mundo com quem conversei acha isso fantástico por causa da interface elegante, mas só posso imaginar o trabalho abaixo para tornar tudo isso possível.

Steven Evers
fonte
1

Depende da audiência. Eu trabalho com muitos analistas financeiros e a idéia deles de um bom design de GUI é aquela que possui tantos campos quanto você pode inserir em um formulário. Sério, estou falando de 75 a 100. Eles são viciados em dados que sempre querem mais. Recentemente, melhorei o desempenho em alguns procedimentos armazenados que podiam levar 45 segundos para carregar (calcular médias ponderadas desde o início das coisas). Reduza para 30 segundos; Estou pensando uau, corte um terço do tempo; deve ser um item de linha no meu currículo. Ninguém nem percebeu. Continuou trabalhando nele e chegou a 15-20. Mudança perceptível. Todo mundo estava muito feliz. Eu ainda acho que a GUI é uma abominação e se tirássemos essa porcaria inútil, ela seria carregada em 2 segundos,

Portanto, se você deseja que os usuários realmente o amem, lembre-se de que a melhor interface do usuário não é nenhuma interface (gostaria de lembrar quem disse isso). Depois de querer ver todos esses dados, meus analistas perceberam que são eles que fazem toda a entrada de dados - o horror.

JeffO
fonte
1

Testar partes da interface do usuário do aplicativo é um pesadelo.

Todas as pessoas ao redor se sentem competentes para dar um conselho ou definir uma demanda sobre como você deve fazê-lo.

Depois que o sistema funciona, mais tarde, mesmo que alguém se lembre acidentalmente de quem ele é a virtude, ninguém se lembrará de quem fez o quê.

Mas se algum erro for visto ( alguns sempre acontecem), o primeiro homem a ser condenado será o programador da GUI. O usuário simplesmente nunca viu os outros!

Gangnus
fonte