A empresa para a qual trabalho usa C ++ Builder 6. Temos desenvolvido código nativo desde a concepção. Nosso principal produto é escrito totalmente em código nativo.
Entra no .NET Framework com seus sinos e assobios. Eu caio, gancho, linha e chumbada. Eu convenço a gerência de que .NET deve ser absolutamente nossa nova estrutura para todo o desenvolvimento de software e que devemos começar a migrar nossa linha de código existente o mais rápido possível. Com todos os benefícios, não é preciso muito para ser convincente. Eles aceitam minha proposta como de costume.
Nesse ponto, começo a desenvolver meu primeiro aplicativo .NET. Está tudo indo como planejado. O projeto é apenas um componente do nosso produto. E assim chego ao ponto de criar um instalador para este novo componente. Como empresa, temos orgulho de tornar as coisas para o usuário o mais fáceis possível. Mesmo a Microsoft com milhares de desenvolvedores não cria instaladores como nós. Ao instalar o Microsoft CRM, por exemplo, você obterá apenas uma lista de falhas e pré-requisitos que precisam ser instalados antes de continuar. Nós não. Nunca. Se você precisar de algo, nós o instalaremos para você.
Isso torna nossas instalações tão fáceis. .NET Framework não está instalado? Sem problemas! Faremos isso por você. Precisa de um cliente SQL Native? Bem!
O problema é este, agora que um único componente da nossa solução foi escrito em .NET, ele complica incrivelmente o processo de instalação. Antes mesmo de instalar nosso produto, preciso fazer o seguinte:
Detecte se o pré-requisito está instalado
Instale se não for
Verifique se foi instalado com sucesso
Próximo pré-requisito
Para instalar o .NET Framework, preciso primeiro do Windows Installer 4.5. Mas existem versões diferentes para os diferentes sistemas operacionais, então adiciono a detecção de sistema operacional e inicio o EXE correto. Oh, o .NET framework já vem com 2k8 e o instalador exe não pode ser executado nele, você tem que executar OCSetup.exe com parâmetros para instalá-lo.
E assim continua. Em seguida, o SQL Express 2005 precisa ser instalado. As dependências aumentam mais uma vez.
Eu defendo com a gerência que nem mesmo a Microsoft torna isso fácil para o usuário. A resposta deles é que não há razão para não sermos melhores do que eles dessa forma. Não posso contestar isso, exceto que sinto que há boas razões para eles seguirem sua abordagem.
De repente, nosso instalador é enorme. Todos os pré-requisitos para .NET, sem falar no suporte a 64 bits, que tem toda uma gama separada de EXEs para instalar. Portanto, agora chegamos ao ponto em que queremos que os usuários possam fazer o download de uma avaliação "rápida". Que piada. Você precisa baixar 500 MB para ter um aplicativo de 30 MB em execução. A maior parte do pacote de instalação é pré-requisitos.
A gerência sente que temos muitas dependências / pré-requisitos. Eu entendo completamente. Eles sugerem que nos afastemos do framework .NET, de volta à terra natal, onde as coisas ainda eram "fáceis" em termos de instalação. É aqui que uma parte de mim quer defender o .NET, explicando os benefícios em geral, a experiência de desenvolvimento aprimorada, a manutenção mais fácil e a qualidade geral do código. A outra parte de mim concorda com eles de todo o coração! O desenvolvimento em .NET requer apenas a instalação de muitos outros pré-requisitos, o que complica a instalação.
Sim, alguns dos defensores do .NET afirmam que tudo deve ser instalado em um sistema operacional corrigido e atualizado. Isso é verdade, mas nem todos os clientes têm isso, e simplesmente dizer "Sinto muito, atualize primeiro" não é suficiente. Lembre-se, temos orgulho da experiência geral do usuário.
Agora estamos considerando escrever código nativo novamente e sei que estamos perdendo em termos de velocidade de desenvolvimento e todas as vantagens do .NET. Mas estamos ganhando nesta área, seja pequeno se você olhar para o quadro geral ou não. Como temos habilidades nativas de desenvolvimento de código e o .NET é realmente um terreno novo para nós, faz sentido voltar para trás.
Minha pergunta é a seguinte: qual é a visão da sua empresa sobre esse problema, se é que é mesmo um problema, e como será o business case que proponho à administração, supondo que quero continuar migrando todos os nossos produtos para .NET?