Ainda vale a pena aprender o desenvolvimento de GUI de desktop? [fechadas]

18

Nos últimos anos, todos os projetos sérios nos quais trabalhei foram baseados na Web ou tinham uma interface de usuário não gráfica (serviços, scripts de linha de comando etc ...). Posso reunir um aplicativo WinForms ou executar um WPF simples quando necessário, mas nunca me aprofundei em algumas das APIs de nível inferior, como MFC ou QT.

Entendo que isso depende da situação, mas, em geral, ainda vale a pena aprender bem o desenvolvimento de desktops ou os aplicativos estão migrando para a Web e dispositivos móveis em um ritmo que torna esse conhecimento menos relevante? Além disso, você espera que os desenvolvedores com quem você trabalha tenham experiência em GUI de desktop?

aubreyrhodes
fonte
5
Ter o desenvolvimento de aplicativos de desktop é ótimo, mas, pelo amor de Knuth, não se preocupe com o MFC. Tudo o que você precisará para 95% dos trabalhos de aplicativos da área de trabalho do Windows é WinForms ou WPF / XAML. Os outros 5% dos trabalhos que você não deseja ter.
Adam Crossland
1
@ Adam: +1 para "Os outros 5% dos trabalhos que você não deseja ter". - Tão verdade. :)
Bobby Tables

Respostas:

38

Eu diria que sim, é. Há um efeito pêndulo no desenvolvimento do programa. Primeiro, tudo correu diretamente no computador. Então, quando o computador se tornou poderoso o suficiente para executar vários programas, eles obtiveram mainframes com terminais burros. Mas os terminais burros são realmente péssimos em termos de usabilidade; assim, quando os computadores ficam poderosos o suficiente para colocar quantidades razoáveis ​​de hardware em um sistema do tamanho de um terminal, temos computadores pessoais e tudo é executado diretamente no computador.

Então eles inventaram a World Wide Web, e voltamos a um mainframe (servidor) e um terminal burro (navegador). Mas os terminais burros ainda são péssimos em termos de usabilidade, e as pessoas estão começando a reaprender as lições de 30 anos atrás. , e estamos nos afastando disso novamente. Atualmente, grande parte do desenvolvimento realmente quente é para aplicativos de desktop (ou móveis) executados localmente, mas que podem se conectar à Internet para fins específicos, a fim de aprimorar sua funcionalidade.

Mason Wheeler
fonte
5
+1 por destacar que essas tendências são executadas em ciclos. No entanto, vi um caso em que um aplicativo de terminal foi reescrito como um aplicativo de desktop e os usuários conseguiram trabalhar com mais eficiência com o aplicativo de terminal.
Larry Coleman
2
A diferença com os navegadores é que eles podem realmente executar código no sistema local, e esse recurso cresce a cada geração de navegador. A conseqüência disso é que a diferença de usabilidade entre aplicativos de desktop e web não é tão grande. Para muitas pessoas (inclusive eu), o gmail é mais utilizável que o outlook. O pêndulo oscila menos a cada vez e pára na metade, com os aplicativos sendo uma mistura de partes locais e da nuvem, independentemente da tecnologia subjacente.
Joeri Sebrechts
13
+1, odeio quando as pessoas começam a afirmar que a área de trabalho está morta, isso é ridículo.
dr Hannibal Lecter
1
@ Joeri: A maioria dos terminais sempre pode executar pelo menos alguns bits localmente. Uma quantidade deprimente de JavaScript que eu já vi faz coisas que um IBM 3270 (por exemplo) também poderia ter feito localmente.
Jerry Coffin
1
@ Joeri Sebrichts - quando o Gmail me permite arrastar e soltar um email em uma tarefa ou item de calendário, posso concordar com você, mas até então, há menos recursos.
Jeffo
11

Mesmo que você nunca pretenda fazer o desenvolvimento de desktops, sugiro que você tenha experiência suficiente para ter uma opinião informada sobre quando é melhor usar uma solução de desktop em um cliente da Web.

Conta
fonte
+1: Supondo que 'a área de trabalho esteja morta' e que os aplicativos de digitação sejam o oposto dos desenvolvedores puros de área de trabalho que dizem "isso nunca poderia ser bom como um aplicativo da web". Escolha com o que deseja trabalhar, mas conheça o outro apenas o suficiente para conhecer seus verdadeiros benefícios / armadilhas.
Steven Evers
8

Sim, mas não da maneira que você está pensando.

A programação da GUI não é mais difícil nem requer habilidades especializadas, além da familiaridade com a interface de programação da GUI. Ligar botões, janelas e controles não é muito difícil e é muito fácil com os ambientes de programação modernos, em comparação com os primeiros dias com coisas como o MFC. A programação da GUI é algo que é bastante fácil de aprender quando exigido.

No entanto, ao conectar botões e caixas de texto é bastante fácil, é muito difícil saber quando e onde colocar botões, e projetar uma GUI para ser usada por seres humanos. Essa é uma habilidade muito valiosa e importante de se ter. No entanto, os princípios de design que se aplicam às interfaces nativas versus a Web são muito semelhantes.

Portanto, aprenda a projetar boas interfaces de usuário eficazes e que não confundam os usuários, e você se familiarizará com a programação gratuitamente.

whatsisname
fonte
2
Especialmente hoje em dia, a experiência do usuário é responsável pelo design do software. A arquitetura não está mais no comando.
rwong
5

Realmente vai depender da sua situação. Recentemente, trabalhei para uma empresa da Fortune 500 que tinha vários projetos para converter aplicativos da Web novamente em aplicativos de desktop (SmartClient / Click-Once). Em suas circunstâncias particulares, fazia muito sentido e eliminava vários problemas de usabilidade dos quais os aplicativos existentes sofriam.

Se você é um funcionário em período integral e sua empresa geralmente não cria aplicativos de desktop, provavelmente não faz sentido estar totalmente atualizado com o Winforms ou WPF. Se, no entanto, você é um consultor e deseja oferecer outro serviço aos seus clientes, isso não pode prejudicar.

Walter
fonte
4

Hmm, além do GMail, Stack-Exchange e home banking do meu banco, eu uso o dia todo software não-web. Agora, com o advento de smartphones e tablets, os aplicativos da web são ainda menos atraentes para mim (eu uso o meu cliente do Facebook para smartphones). Esse é o lado do usuário.

Lado do desenvolvedor: nos últimos 10 anos, trabalhei quase apenas em softwares que não são da Web (e minha carreira abrange muitos domínios muito diferentes, como consultor de software) e não vejo nenhuma tendência futura da Web em meu trabalho.

Então, sim, ainda é necessário aprender ambientes de GUI de desktop.

Wizard79
fonte
2
Uau, você não usa um mecanismo de busca na Internet?
JBRWilkinson
1
@JBRWilkinson: não, eu confio no Gopher. Sério, com certeza eu uso o Google o dia todo, mas isso não é realmente um substituto para qualquer ferramenta ou aplicativo de desktop.
usar o seguinte comando
2

Claro que "depende" - mas acho que sua experiência é típica. Eu raramente tive que criar um cliente espesso para qualquer um dos aplicativos que escrevi. A menos que haja um motivo específico para que o cliente precise estar em execução na área de trabalho (problemas de conectividade ou jogo em 3D etc.) - acredito que é mais fácil para o desenvolvedor e os administradores manter uma "instância" do aplicativo. Se eles tiverem o conjunto de habilidades para projetar um aplicativo Web, devem estar em condições de migrar para o domínio de aplicativos de desktop em geral.

Na verdade, eu acho que é mais importante que um desenvolvedor de clientes grossos aprenda a programação de aplicativos da Web - a falta de estado de estado de herança do HTTP torna um paradigma de desenvolvimento de aplicativos mais difícil de entender (ou pelo menos você precisa pensar um pouco mais do que apenas dar um tapa) controles em um painel).

Não se esqueça - você tem tecnologias como o Silverlight e o Adobe Flex / AIR que podem ultrapassar a linha entre aplicativos de desktop / web.

Watson
fonte
+1 para o desenvolvimento da web, sendo mais difícil. Comecei como desenvolvedor de desktop e tive que mudar para o desenvolvimento da web no trabalho. É definitivamente mais complexo (obviamente, isso está assumindo tarefas comparáveis, o que não é fácil).
Bobby Tables
@ Guzica - sim, encontrei uma atitude semelhante de bons desenvolvedores com quem trabalhei que estavam presos ao desenvolvimento de aplicativos de desktop. Uma vez que eles tentam mudar, não é tão fácil para eles como eles pensavam. Não sei se há alguma complexidade inerente na programação de aplicativos da Web, é apenas uma maneira diferente de programar e muitas das suas suposições subjacentes sobre o que o sistema pode fazer devem mudar (além de aprender novas estruturas).
Watson
É sempre mais difícil fazer coisas com ferramentas mais limitadas, que não a tornam "mais complexa". Isso torna mais um aborrecimento.
Sam
0

De acordo com a equipe do IE9:

Não deve haver uma lacuna entre aplicativos nativos e aplicativos da web. Aceleração de HW, JS rápido e fixação de sites iniciam

Eu acho que é uma aposta segura que essas tecnologias se aproximem. Se você é desenvolvedor de Java, há muito pouca diferença entre o desenvolvimento de aplicativos de desktop e aplicativos da Web (usando o GWT). Não é irracional esperar que cada vez mais plataformas de desenvolvimento "desktop" possam atingir o mecanismo do navegador. Também não é razoável esperar que cada vez mais aplicativos de desktop tenham um modelo de distribuição semelhante à Web (atualização automática em segundo plano, execução em área restrita, como o chrome).

Joeri Sebrechts
fonte
3
Isso é total BS. Estou trabalhando em um aplicativo de medição de latência que precisa estar localizado localmente para medir e exibir em "tempo real" as latências da entrega de dados de mercado. Esse tipo de coisa NUNCA será movido para a nuvem.
Tim
É total BS porque você encontrou uma necessidade ridiculamente obscura de um aplicativo ser local?
Mike M.
@ Tim: você está certo de que alguns aplicativos sempre serão locais. Também é verdade que outros aplicativos nunca poderiam ser locais (por exemplo, google translate). Mas, executar localmente não significa que não vem da nuvem. O Chrome é executado localmente, mas é um aplicativo baseado em nuvem (você tem pouco controle sobre qual é a "versão"). Existem tentativas de vincular a execução de código nativo às plataformas do navegador (Google NaCl) e tentativas de vincular os idiomas da web aos aplicativos nativos (Adobe Air).
Joeri Sebrechts
1
@ Mike M - isso não é ridiculamente obscuro. No meu trabalho anterior, trabalhei no software de bordo da Marinha. É provável que esses também não estejam na nuvem. Os domínios em que trabalho provavelmente não serão migrados - eles precisam ser locais por razões de latência e interface de hardware. A web é boa, mas alguns de nós ainda trabalham na área de aplicativos nativos por um motivo.
Tim
@ Tim O que quero dizer é que você encontrou um cenário que não se sustenta. O autor percebe isso quando diz MAIS. Você apresentou um contraponto, e isso é ótimo. Você nunca provou que a coisa toda não tem base. É claro que haverá momentos em que deve ser local por várias razões. Mas para a grande maioria, conecte um cabo de fibra óptica e suas 1200 milhas podem ser percorridas em 10 milissegundos? Como usuário, eu aceitaria que cada um dos meus aplicativos de desktop levasse 10 milissegundos a mais para carregar um formulário.
Mike M.