Como mencionado por outros, é uma questão de troca e de ter o conhecimento certo.
A única armadilha que você pode querer considerar é esta: você menciona na sua pergunta que considera a Web como tendo uma "plataforma cruzada" como uma vantagem. Mas isso realmente? Pense da seguinte maneira: se você desenvolver algo para a área de trabalho, precisará definir a lista de plataformas e seus requisitos para dar suporte.
Não se engane, é o mesmo para a web. E mesmo que já seja tremendamente mais simples do que costumava ser, se você criar um aplicativo público amplo, terá que lidar com todas as versões possíveis de todos os navegadores da web. E se for mais um aplicativo corporativo, prepare-se e prepare-se para elaborar os requisitos das plataformas de navegador suportadas com muita precisão.
Não pense que você evitará ter hacks específicos da plataforma aqui e ali, se criar algo significativo.
E então as partes divertidas. O que e melhor? Navegadores que se atualizam quase transparentemente com muita regularidade como o Chrome? Ou os que lançam atualizações de segurança apenas mensais e os principais recursos a cada idade da pedra (como o IE)? A resposta não é tão óbvia quanto você imagina, porque algumas dessas atualizações "transparentes" frequentes podem quebrar o seu código e você precisará segui-las e reagir imediatamente. Ou fique de olho nas pré-versões beta e dev durante o desenvolvimento e o teste. Para todos os navegadores que você disse tolamente que queria apoiar (boa sorte).
Ah, e não vamos esquecer as considerações da interface do usuário. Você também enfrentam a alegria de decidir se você quer uma interface de usuário consistente ACROSS todas as suas plataformas de destino, ou uma interface de usuário consistente COMplataforma de destino de cada host. Veja todos esses pequenos botões que você pode ver nas páginas da web? Deseja que sejam exatamente iguais em todos os lugares ou que se integrem ao ambiente usado por seu usuário? É claro que esse problema não é novo e existe para outros modelos de desenvolvimento, mas parece ser mais importante aqui e depende do tipo de usuário que você deseja e do que ele espera. O usuário final público tende a querer que você se integre à plataforma dele - mas ainda assim quer que você "uau!" eles com coisas sofisticadas - enquanto o usuário corporativo deseja algo que se parece com um aplicativo de desktop. E as plataformas móveis tiveram uma nova dimensão para tudo isso.
Nos últimos 2 parágrafos, uma idéia comum é às vezes empacotar um navegador da Web pré-configurado com o instalador, que se conecta ao seu aplicativo da Web (hospedado localmente ou na Web). É ótimo porque você controla a frequência da atualização e pode "congelar" o estado e sabe exatamente no que apoiar e testar. Além disso, você pode adicionar itens interessantes, como extensões de usuário dedicadas. Por exemplo, empacotar um Chromium "congelado" com pequenas extensões do Chrome que você desenvolveu para facilitar o uso do aplicativo da web para diferentes tipos de usuários pode ser extremamente agradável. Por outro lado ... agora você é responsável se ocorrer uma violação de segurança porque congelou o ciclo de lançamento e seu aplicativo não se beneficiará de melhorias na velocidade (se houver).
Como muitas coisas, é um machado de dois gumes.
Nota: Eu tenho um forte viés contra a Web por ser basicamente uma grande pilha de tecnologias semi-cozidas (e sou educado aqui), até as camadas OSI, nas quais continuamos adicionando camadas de porcaria que escondem os problemas subjacentes sem realmente resolver ou consertá-los.
Dito isto, sou a favor da Web por sua natureza onipresente como plataforma. Acho que a mudança da sua empresa é (provavelmente) a correta. Depende do seu mercado-alvo e das plataformas que você deseja, obviamente. Se você deseja expor algo como um serviço, provavelmente estará pronto (embora também não seja necessário). Caso contrário, talvez não haja muitas razões para isso.
Hmm, e espere alguns desenvolvimentos divertidos no futuro agora que mais variantes leves de sistemas operacionais existentes continuam gerando ambientes móveis (netbooks, smartphones, PDAs, tablets, eBooks ...), com mais ênfase no uso de navegadores embarcados leves. .. mas com todo o seu novo compartilhamento de falhas na renderização da interface do usuário.
Em relação às tecnologias baseadas em plugins ... eu diria que se afaste delas. Eles aumentarão o poder do seu aplicativo, mas limitarão sua penetração no mercado. Em alguns casos, você verá isso como uma vantagem em termos de suporte entre plataformas, até que uma nova plataforma se recuse repentinamente a apoiá-los. Os padrões da Web estão aqui por um motivo (tenha cuidado para não ficar muito animado com tudo no HTMl5, ou isso poderá explodir na sua cara).
EDIT: outras coisas a considerar ...
Recrutamento
É extremamente difícil encontrar desenvolvedores web experientes. Você pensaria que há um grupo deles, mas eles estão perdidos em um imenso conjunto de pessoas bem incompetentes que acham que ter conseguido escrever 700 linhas de JavaScript / ECMAScript para implementar alguma validação em seus formulários é o fim de tudo e tudo o que pode ser alcançado em termos de habilidades de alto nível.
Não estou brincando, ultimamente, minha primeira pergunta para todas as entrevistas de desenvolvimento da Web é como declarar uma variável e, em seguida, se há uma diferença entre usar var
ou não (dependendo de como elas respondem). É deprimente. Acho muito mais difícil encontrar um desenvolvedor web médio ou avançado do que encontrar um desenvolvedor de desktop médio ou avançado.
Percepção
Ninguém nunca o considerará seriamente quando você disser "Sou desenvolvedor de web". É para uma subclasse de programadores, desenvolvedores, não é? Os que você ignora e zomba de longe, e não se junta quando vai tomar café. :)
Isso é obviamente falso, mas tudo se resume ao fato de você se desenvolver para um ambiente que é gerenciado principalmente por você. Os navegadores corrigem sua marcação danificada, seus estilos danificados e até corrigem seus scripts danificados para alguns deles, além de otimizá-lo para você, por favor. E se você é um desenvolvedor web, as pessoas não assumem que você tem uma pista sobre programação de nível inferior; portanto, você deve ser um idiota completo, certo?
E então eles percebem o quão loucamente complexo o ECMAScript pode ser, mas se recusam a revisar sua opinião. Porque é web. Não gostamos intrinsecamente, apenas gostamos do que isso nos permite fazer.