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?
Respostas:
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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).
fonte