La empresa para la que trabajo utiliza C ++ Builder 6. Hemos estado desarrollando código nativo desde su concepción. Nuestro producto estrella está escrito completamente en código nativo.
Entra en .NET Framework con sus campanas y silbidos. Caigo, gancho, línea y plomada. Convenzo a la gerencia de que .NET debería ser absolutamente nuestro nuevo marco para todo el desarrollo de software nuevo y que deberíamos comenzar a migrar nuestra línea de código existente lo antes posible. Con todos los beneficios, no hace falta mucho para convencer. Aceptan mi propuesta como de costumbre.
En este punto empiezo a desarrollar mi primera aplicación .NET. Todo va según lo planeado. El proyecto es solo un componente de nuestro producto. Y así llego al punto de crear un instalador para este nuevo componente. Como empresa, nos enorgullecemos de hacer que las cosas para el usuario sean lo más fáciles posible. Incluso Microsoft, con miles de desarrolladores, no crea instaladores como nosotros. Cuando instale Microsoft CRM, por ejemplo, solo obtendrá una lista de fallas y requisitos previos que necesita instalar antes de poder continuar. Nosotros no. Nunca. Si necesita algo, lo instalaremos por usted.
Esto hace que nuestras instalaciones se sientan tan fáciles. ¿.NET Framework no está instalado? ¡No hay problema! Lo haremos por ti. ¿Necesita un cliente SQL Native? ¡Multa!
El problema es este, ahora que un solo componente de nuestra solución está escrito en .NET, complica increíblemente el proceso de instalación. Antes de que pueda instalar nuestro producto, debo hacer lo siguiente:
Detectar si el requisito previo está instalado
Instálelo si no lo es
Verifique que se instaló correctamente
Siguiente prerrequisito
Para instalar .NET Framework, primero necesito Windows Installer 4.5. Pero hay diferentes versiones para los diferentes sistemas operativos, así que agrego la detección del sistema operativo y ejecuto el EXE correcto. Oh, .NET Framework ya está empaquetado con 2k8 y el instalador exe no se puede ejecutar en él, debe ejecutar OCSetup.exe con parámetros para instalarlo.
Y así continúa. Entonces es necesario instalar SQL Express 2005. Las dependencias aumentan una vez más.
Argumento con la dirección de que ni siquiera Microsoft se lo pone tan fácil al usuario. Su respuesta es que no hay ninguna razón para que no seamos mejores que ellos de esta manera. No puedo discutir con eso, excepto que siento que hay muy buenas razones por las que han optado por su enfoque.
De repente, nuestro instalador es enorme. Todos los requisitos previos para .NET, ni siquiera hablar del soporte de 64 bits que tiene toda una gama separada de EXE para instalar. Así que ahora llegamos al punto en el que queremos que los usuarios puedan descargar una evaluación "rápida". Que broma. Debe descargar 500 MB para ejecutar una aplicación de 30 MB. La mayor parte del paquete de instalación es un requisito previo.
La gerencia siente que tenemos demasiadas dependencias / requisitos previos. Lo entiendo completamente. Sugieren que nos alejemos del marco .NET y regresemos a la tierra nativa donde las cosas aún eran "fáciles" en términos de instalación. Aquí es donde una parte de mí quiere defender .NET explicando los beneficios en el panorama general, la experiencia de desarrollo mejorada, el mantenimiento más fácil y la calidad general del código. ¡La otra parte de mí está de acuerdo con ellos de todo corazón! Desarrollar en .NET simplemente requiere que instale muchos otros requisitos previos que complican la instalación.
Sí, algunos de los defensores de .NET afirmarán que todo debe instalarse en un sistema operativo parcheado y actualizado. Esto es cierto, pero no todos los clientes lo tienen, y simplemente decir "Lo siento, actualice primero" no es suficiente. Recuerde, nos enorgullecemos de la experiencia general del usuario.
Ahora estamos considerando escribir código nativo nuevamente y sé que estamos perdiendo en términos de velocidad de desarrollo y todas las ventajas de .NET. Pero estamos ganando en esta área, ya sea pequeña si se mira el panorama general o no. Como tenemos habilidades de desarrollo de código nativo y .NET es realmente un terreno nuevo para nosotros, incluso tiene sentido retroceder.
Mi pregunta es la siguiente: ¿cuál es la opinión de su empresa sobre este tema, si es que es un problema y cómo será el caso de negocio que propongo a la gerencia asumiendo que quiero continuar migrando todos nuestros productos a .NET?