Tengo una tarde para exaltar los beneficios de .NET sobre VB6 ... ¿qué digo? [cerrado]

9

Mi empresa es una pequeña empresa de ingeniería de veinte hombres. Toda la programación de la aplicación aquí es realizada en VB6 por dos personas, quienes se han enseñado a sí mismos VB6 desde un fondo de ensamblaje mientras trabajan aquí durante los últimos 25 años, y yo mismo.

Como resultado, el código VB6 está plagado de horrendos olores de código, como toneladas de variables tipeadas en cadena , funciones terriblemente largas, cientos de variables públicas globales (algunas de las cuales son preferibles a pasar argumentos y devolver valores) y no un solo objeto clase. La refactorización es casi imposible, y cualquier cambio requiere excavar demasiado el código, y una vez realizado, siempre parece introducir más agujeros.

Mi jefe se está dando cuenta de que VB6 es una tecnología muerta y está dispuesto a escuchar mis ruegos de mudarme a .NET para un nuevo desarrollo. Estamos avanzando hacia .NET, pero él lo ve como una forma de mantener la compatibilidad con los nuevos sistemas operativos Windows, no como una forma de escribir un mejor código.

¿Cómo puedo explicar mejor los beneficios del lenguaje .NET sobre VB6, más allá de la mera actualización? ¿Qué puedo decir para enfatizar mejor que el cambio a .NET es un buen movimiento pero también que significa que nuestro paradigma de programación actual también debería comenzar a cambiar? Tan pronto como mi jefe escuche que Visual Basic .NET se parece a VB6, sé que su primer instinto será simplemente convertir nuestro antiguo desorden de código a .NET.

Entiendo que será imposible cambiar la mentalidad de cualquiera en una sola tarde, pero ¿cómo puedo al menos convencer a mi jefe de montaje de ensamblaje de que cosas como variables fuertemente tipadas, clases personalizadas y campos privados no son un pérdida total de tiempo? y energía?

dlras2
fuente
44
¿Los desarrolladores de VB6 son una raza moribunda? Intente reclutar desarrolladores .NET y desarrolladores VB6. Vea cuántos CV obtiene por cada uno. El hecho de que una vez que los 2 veteranos se retiren, no habrá reemplazo (o más bien, reemplazo muy costoso ) debería ser suficiente argumento.
Finalizado
3
Aprecio que pueda intentarlo , pero la mayoría de los desarrolladores que se respetan a sí mismos se mantendrían alejados del lenguaje muerto. No estoy seguro de cuándo MS dejará de admitir VB6, pero cada vez es más difícil encontrar recursos (y el fin de la vida útil del producto es otro argumento en contra de VB6). No estoy seguro de cuánto ayudará esto, pero estudie: msdn.microsoft.com/en-us/vstudio/ms788708.aspx - 2008 fue el final de la vida del IDE. Y me gusta "Los acuerdos de soporte personalizado pueden estar disponibles de Microsoft" - a qué tarifa, me pregunto ...
Obligado
1
@Oded Desafortunadamente, ninguno de estos argumentos realmente toca el hecho de que VB.NET se puede usar como un sustituto de VB6, variables públicas globales y todo. Una vez que usamos .NET , ¿cómo utilizamos todos sus beneficios?
dlras2
1
Quizás explique con ejemplos. ¿Hay algún problema que sea difícil de resolver en VB6 que sería mucho más fácil de resolver en VB .NET? ¿Podría elegir algunos ejemplos de su base de código y mostrar cómo se pueden limpiar en un mejor código en .NET que no sería posible con las características de VB6?
FrustratedWithFormsDesigner
1
@DanRasmussen VB.NET no pudo importar proyectos VB6 correctamente (¿arreglado todavía?). No es trivial actualizar.

Respuestas:

16

Respuesta corta: no hay nada que pueda hacer para cambiar de opinión en función de los criterios que enumeró en la pregunta, que son todos técnicos . Este es el equivalente de un debate religioso . La ruta más rápida al fracaso es presentar un argumento que no sea desde el punto de vista de la audiencia, en este caso, los dueños de negocios .

Respuesta más larga: el cambio en los negocios es impulsado por una cosa y solo una cosa. Beneficio a la línea de fondo.

... ¿cómo puedo al menos convencer a mi jefe de montaje de que cosas como variables fuertemente tipadas, clases personalizadas y campos privados no son una pérdida total de tiempo y energía?

No solo pueden ser una pérdida de tiempo y energía, sino más importante, ¡le cuestan dinero ! Debe ser capaz de mostrar cuantitativamente que sus sugerencias conducirán a un beneficio sustancial con el tiempo. Simplemente afirmar que el código limpio es "mejor" no es suficiente, porque el código limpio cuesta mucho más producirlo.

Si puede articular cómo conducirá el costo del uso de la tecnología moderna ($COST + X) * TIME = $PROFIT, dónde Xes un número positivo no trivial yTIME es relativamente corto, puede crear un escenario convincente.

Otra forma de calcular el ROI (retorno de la inversión)

Fórmula ROI

Si este ROI / ROR es un número trivial, especialmente durante un largo período de tiempo, tampoco tiene muchos argumentos comerciales.

¿Cómo gana dinero realmente su empresa?

cuantas lineas de codigo cuantos clientes ¿Cuántos ingresos al año produce este software? ¿Los ingresos son principalmente contratos de apoyo? o nuevas licencias? ¿Es estable el mercado objetivo? ¿en expansión? contratación? ¿Es el software un líder de pérdida para algún otro producto mucho más rentable?

Es difícil para un buen hombre de negocios ignorar el dinero que está sobre la mesa.

Por supuesto, debe poder respaldar sus declaraciones con hechos concretos. Esto significa que debe poder proporcionar números reales que demuestren que realmente comprende el negocio real y no solo los detalles técnicos académicos.

No solo los profesionales

También proporcionar un análisis de riesgo detallado y lo que estos riesgos harían $COSTsi ocurrieran, convencería de que tiene un caso realista y no solo se queja de que ya no quiere seguir haciendo VB6.

Enseñar a los perros viejos nuevos trucos

... ¿Qué puedo decir para enfatizar mejor que el cambio a .NET es un buen movimiento si y solo si nuestro paradigma de programación actual también comienza a cambiar? ...

Cambiar o no cambiar el paradigma de programación para que sea lo más idiomático posible de la nueva tecnología es parte del análisis de riesgos. Pero este es un argumento separado solo después de haber demostrado que se puede ganar mucho dinero haciendo un cambio en primer lugar.

Las personas de negocios tienden a escuchar casos de negocios al igual que las personas técnicas tienden a escuchar casos técnicos. Todos sus casos en su pregunta están propugnando méritos técnicos que son académicos en el mejor de los casos.

Predicción

Estoy haciendo algunas suposiciones aquí. La aplicación VB6, una tienda pequeña, pocos desarrolladores, 2 desarrolladores / dueños de negocios más antiguos apuntan a una aplicación de nicho de mercado que probablemente sea madura (se conocen errores y soluciones alternativas), características bastante completas y relativamente estables, independientemente del "desorden" la base del código. Esto me lleva a creer que la pequeña base de usuarios tampoco está creciendo dramáticamente año tras año, lo que me lleva a la siguiente conclusión.

Que realmente no habrá ninguna razón comercial realmente convincente para cambiar la dirección técnica con esta aplicación. Y portar a VB.Net también es una pérdida de tiempo porque solo tendrás el desorden, pero ahora con más, y 2/3 del equipo de desarrollo no se dedica a aprender nada nuevo. Buena suerte.

Glorfindel
fuente
2
desafortunadamente, el costo de la reescritura (más capacitación, más experiencia) generalmente supera el costo de mantener la aplicación en funcionamiento, al menos a corto y mediano plazo. Sin embargo, a largo plazo, corre el riesgo de que su propia reescritura deba reescribirse en $ next_new_technology.
gbjbaanb
44
+1 debate religioso. Si OP quiere trabajar en .NET, debería conseguir un trabajo en una tienda .NET; Diría que pasar de VB6 a .NET en esta empresa es un riesgo importante con beneficios cuestionables.
Kirk Broadhurst
Gran respuesta, excepto que le echaste un vistazo a su parte sobre "La refactorización es casi imposible, y cualquier cambio requiere excavar demasiado el código, y una vez hecho, siempre parece introducir más agujeros". Es la última declaración que tiene valor para el negocio. Demostrar que no pueden cambiar la base de código sin un costo significativo para el dinero del negocio es un argumento muy válido en línea con su respuesta. Por supuesto, las métricas tienen que estar ahí para respaldar esa declaración.
@ GlenH7 personalmente, creo que lo que usted cita es una dramática opinión y retórica personal porque el OP no muestra ninguna preocupación por nada más que impulsar su opinión y agenda personal. Mi respuesta es proponer que no están considerando cuál sería el verdadero impulsor del cambio y no es lo que piensan o han considerado. Mi punto es que los cambios incrementales a largo plazo que son "caros" siempre serán más baratos que lo que proponen durante el mismo período de tiempo. Hacer lo que dijeron y lo que usted cita es un argumento comercial insostenible.
Convino en que había cierto grado de retórica en la declaración. Algunas tiendas (y no, generalmente no son las pequeñas) rastrean fallas / escapes, por lo que es posible generar métricas difíciles sobre los errores. OTOH, la mayoría de las tiendas no guardan esa información y no es más que un "presentimiento" que no cuenta mucho en una presentación de negocios.
11

Tengo un cliente cuyo producto estrella está escrito en VB6 y mantenido por 3 personas. Vine a ayudarlos porque tenían un socio que quería que llamaran a un servicio web. Eso es muy difícil de hacer desde VB6, pero fácil desde VB.NET o C #, y les escribí un ensamblado .NET que se parecía a VB6 como un componente COM para que pudieran llamarlo. Luego necesitaban ofrecer un servicio web a alguien. Luego querían escribir una pequeña utilidad independiente e iban a necesitar encriptar y desencriptar alguna información, y analizar algo de XML. Les enseñé a escribir eso en .NET. En los últimos 5 años más o menos, más y más de su código está en .NET a pesar de que el producto estrella no se ha reducido en absoluto. Hay partes que odian, todas las aplicaciones las tienen, y donde pueden, están sacando estas partes (ahora comienza la reducción) y poniéndolas en servicios o utilidades separadas. El resto se convertirá holus-bolus a .NET. Sí, nombres de variables erróneos y todo: en mi opinión, hay muchos beneficios al mudarse a .NET, incluso si no cambian su paradigma de programación actual. Éstas incluyen:

  • puede usar el último Visual Studio con una mejor búsqueda, mejor Intellisense, construcciones más rápidas, etc.
  • puede integrarse con un sistema de control de fuente decente (es decir, no VSS)
  • hay bibliotecas que vienen con .NET de forma gratuita que simplifican el trabajo de encriptación, análisis XML, procesamiento de imágenes y más
  • La internacionalización y localización es mucho más fácil en un proyecto .NET (esto, con una consulta de un gran cliente canadiense que necesitaría versiones en francés e inglés, puede haber inclinado la balanza para mi cliente)
  • Las bibliotecas de control económicas (Telerik, Infragistics, ComponentOne, etc.) le brindan capacidades increíbles casi sin costo
  • será mucho más fácil encontrar ayuda temporal, como un estudiante de verano, en circunstancias en las que el tiempo dedicado a enseñarles VB6 no vale la pena (no discuta cómo se siente al enseñarlo a un nuevo empleado a tiempo completo)
  • su aplicación será compatible con UAC, por lo que funcionará mejor en Vista, 7 y 8. No necesitará ejecutarse en modo de compatibilidad con XP

Hay más, pero seguramente eso es suficiente?

La cuestión de los paradigmas de programación, la tipificación fuerte, el compilador es tu amigo, la encapsulación es tu amigo y así sucesivamente, en mi opinión (y me pagan por tener estas opiniones) completamente separados. Si quieres morir en esa colina, adelante, pero morirás con una copia de VB6 abierta.

Kate Gregory
fuente
¿Qué quieres decir con tu párrafo final?
dlras2
66
Que "mudarse a .NET" y "programemos todos de una manera diferente" son diferentes, y que si elige luchar contra el segundo, no solo es poco probable que tenga éxito, es casi seguro que no lo hará. NET con ese enfoque. Quiero decir, estoy de acuerdo en que deberían programar de una manera diferente. Pero el mejor camino hacia .NET es "como lo que tienes ahora, ¡pero con salsa de chocolate y chispas!"
Kate Gregory
Entiendo el beneficio de abordarlos como problemas diferentes, pero el problema es que abordarlos como problemas separados simplemente garantiza programas igualmente imposibles de mantener, solo en .NET.
dlras2
1
Tendrá mejores aplicaciones (mejores controles, más funcionalidades) y un mejor proceso (colarse en un control de fuente y tal vez incluso trabajar en el seguimiento de elementos) junto con desarrolladores que ahora ven que se puede hacer de manera diferente y que vale la pena el cambio. debido a estos grandes beneficios. Serán mucho más receptivos a lo siguiente que les pidas. Y "no mantenible" no es binario. El código no será excelente, pero la situación seguirá siendo mejor de lo que era. También tendrás credibilidad comprobada.
Kate Gregory
8

Comencé con un proyecto VB6 hace unos años (el sistema ERP personalizado de la compañía) y lo he estado migrando lentamente a .NET. Está en algún lugar a medio terminar.

En primer lugar, la conversión de VB6 a VB.Net es casi siempre una mala idea (e investigué mucho sobre eso). Simplemente hay demasiado diferente. Además, si su jefe piensa que VB.Net es "como VB6", está completamente equivocado y debe cambiar su perspectiva rápidamente.

Mi estrategia era mantener las dos bases de código separadas y mantenerlas separadas y luego mover lentamente módulos completos de VB6 a .NET, pero solo cuando haya un cambio significativo a punto de suceder a ese módulo, para que podamos amortizar parte del costo. Aun así, la reescritura es una gran tarea costosa y arriesgada.

Hay dos formas de integrar VB6 existente con el nuevo código .NET (y probablemente lo hará durante mucho tiempo, por lo que será mejor que se acostumbre a la idea). La primera forma en que lo hice fue comenzar a escribir pequeños módulos en .NET y luego hacer que la aplicación VB6 principal inicie el ejecutable .NET pasando algunos parámetros de la línea de comandos. Esto funcionó, pero tenga en cuenta que .NET tiene un tiempo de inicio de 4 a 10 segundos, por lo que está limitado en lo que puede hacer de esta manera.

Una vez que comenzó a ser realmente doloroso, cambié la estrategia y usé el método de este artículo de CodeProject para mostrar los formularios VB6 existentes en mi aplicación principal .NET. Una vez que seguí esta ruta, pude incurrir solo en un tiempo de inicio de .NET y usar ClickOnce para la implementación, lo cual fue un regalo del cielo en comparación con cómo se implementó la aplicación VB6 anteriormente.

Dicho esto, aquí están las ventajas que encuentro en .NET sobre VB6:

  • Mejores marcos de persistencia (NHibernate, EntityFramework, Linq2Sql, etc.)
  • LINQ (No puedo enfatizar lo suficiente lo importante que es esto)
  • Genéricos!
  • Sintaxis Lambda (resuelve elegantemente una clase completa de problemas como "agujero en el medio")
  • Del mismo modo Actiony Functipos
  • Reflexión (algo que rara vez usas, pero cuando lo haces es enorme)
  • Mucho mejor soporte de pruebas unitarias (por supuesto, dudo que convenza a sus otros empleados para realizar pruebas unitarias, pero debería hacerlo)
  • ReSharper (y otras herramientas de refactorización / perfilado) (10 veces mejor que MZ-Tools)
  • ClickOnce y / o Setup / Installer Projects
  • Proyectos de servicio de Windows
  • Verdadero soporte orientado a objetos (VB6 se basa en COM y es realmente malo en este departamento).
  • Mecanografía estática
  • Al horno en soporte XML
  • WPF y Windows Forms (los controles de VB6 son muy limitantes)
  • WCF
  • Mucho más código de ejemplo en línea
  • Excepciones (el manejo de errores de VB6 es absolutamente terrible en comparación)
  • Integración de control de fuente de Visual Studio
  • Decimal tipo (VB6 nunca tuvo un tipo decimal de primera clase, a pesar de que tiene CDec)
  • Soporte de primera clase para Guid
  • Soporte de primera clase para enteros de 64 bits.
  • Mejores bibliotecas de colecciones.
  • ReportViewer
  • Multithreading, biblioteca paralela de tareas

Desventajas de VB6:

  • Notarás una actuación. Puede que no sea suficiente preocuparse, pero confía en mí, lo notarás. VB6 compila a código nativo después de todo.

Para ser justos, aquí hay algunas desventajas de mantener una solución combinada VB6 / .NET:

  • Mantener dos capas de acceso a datos (suponiendo que su aplicación VB6 realmente tenga una)
  • Cableado adicional para exponer servicios / formularios / etc. De un lado al otro
  • El doble de complejidad / arquitectura para tener en la cabeza

Ahora, como has insinuado, realmente deberías reconstruir tu arquitectura desde cero si comienzas a escribir código en .NET. Sin embargo, parece que ninguna de las personas de su empresa está familiarizada con el mundo de programación .NET y / o Java, que es de donde provienen muchos de los patrones y prácticas que son comunes a los marcos de grandes empresas.

Si toma a alguien que está acostumbrado a arrastrar un botón en un formulario, hace doble clic en él y escribe algunas cadenas SQL directamente en el controlador de eventos de clic, y eso ha funcionado para ellos, es realmente difícil hacer que vean una ventaja de seguir SOLID criterios de diseño. Por otro lado, si muerde la bala y decide que todo el código nuevo estará cubierto en un 90% o más por pruebas unitarias automatizadas, se dará cuenta rápidamente de que es realmente difícil de hacer a menos que adopte los principios de diseño SÓLIDO.

Por lo tanto, debe analizar detenidamente la realidad de la situación. En mi caso, yo era el único programador, y estaba decidido a que todo el código nuevo se probara unitariamente, a pesar de que no tenía experiencia con él. No puedo enfatizar lo suficiente lo mucho que esto impactó negativamente en lo que pude hacer en la primera semana, incluso los primeros meses. Aún así, estaba decidido a hacerlo, y tuve la aceptación de la gerencia. La mayoría de la gente no tiene ese lujo. Ahora tengo mucho código y acabo de terminar una refactorización importante casi sin problemas.

Siendo realistas, no vas a hacer pruebas unitarias, lo que significa que es más difícil justificar principios como la inyección de dependencia a tus compañeros de equipo. Tendrá que vender .NET por méritos distintos de los beneficios arquitectónicos. Debe centrarse en un mejor soporte de biblioteca y mejores herramientas. Eso es lo único que resonará. Sugeriría lo siguiente en su demostración:

  • Cree un proyecto de Windows Forms (manténgase alejado de WPF y xaml, es demasiado sorprendente)
  • Conéctese a una base de datos SQL (alguna base de datos de prueba)
  • Use Linq2Sql o EntityFramework para generar un modelo de datos para él
  • Cree una clase de repositorio que tenga un método para devolver alguna lista de entidades
  • Escriba una consulta en ese método usando linq, señale el intellisense
  • Señale que linq funciona en todos los objetos, no solo en entidades
  • Muestre que si cambia la base de datos y regenera el modelo, obtendrá un error de compilación
  • Suelta un DataGridViewen la ventana principal
  • Demuestre el enlace de datos al llenar la cuadrícula con las entidades del repositorio
  • Señale todas las cosas interesantes sobre la cuadrícula que son mucho mejores que VB6
  • Crear un archivo .rdlc (informe)
  • Haga un informe simple dentro de Visual Studio
  • Coloque un visor de informes en la ventana y renderice el informe dentro del visor de informes.
  • (Obviamente, necesita instalar ReportViewer y haber practicado todo esto primero)
  • Cree un problema de "agujero en el medio" y luego demuestre Actioncómo resolverlo creando un método que tome un parámetro. Haga esto primero pasando otro método como parámetro, y luego haga volar su mente pasando un delegado anónimo usando la sintaxis lambda
  • Demuestre los genéricos utilizando las clases List<T>y Dictionary<T1,T2>colección y muestre cómo crea código fuertemente tipado (VB6 tiene cosas similares, pero está tipado dinámicamente)
  • Escriba un foreachbucle que sea vergonzosamente paralelo, úselo System.Diagnostics.Stopwatchpara medir el tiempo que lleva ejecutar, luego use la biblioteca paralela de tareas para cambiar el bucle en un Parallel.Foreachbucle y demostrar la aceleración, suponiendo que esté en una máquina multinúcleo.
  • Demostrar la capacidad de agregar un controlador de excepción global (esto es algo que VB6 no puede hacer)

Eso es lo que yo haría.

Scott Whitlock
fuente
1

Me parece que esta es una situación en la que necesitarás ponerte el sombrero de político en lugar del de programación. Debes ser muy consciente de cómo haces tu argumento y de que no antagonizas con tu audiencia. Asegúrese de mostrar las ventajas de .Net en lugar de mostrar las desventajas de VB. Argumentar las desventajas de VB pondrá a sus compañeros de trabajo en una posición en la que necesitan defender sus decisiones y obligarlos a admitir que un idioma en el que tienen una fuerte inversión es un mal idioma. En cambio, muéstreles cómo mudarse a .NET aumentará las herramientas que tienen disponibles y facilitará su vida.

Mi forma ideal de hacer este argumento sería encontrar una tarea o un código del que todos se quejan constantemente y solucionarlo usando .NET. No estoy especialmente familiarizado con VB, pero aquí hay una breve lista de tareas molestas que probablemente serían más fáciles usando .NET en lugar de VB.

  • Manipulación de cuerdas
  • Análisis XML
  • Búsqueda / coincidencia / expresión regular
  • Matemáticas (los idiomas más nuevos suelen tener bibliotecas de matemáticas más rápidas y completas)
  • Edificio / diseño GUI

Elija cualquiera de las tareas anteriores, o alguna otra tarea específica para los proyectos en los que generalmente trabaja, y siéntese con ellas y escriba un código, desde cero, que maneje el problema de manera rápida y fácil. En realidad, mostrar el proceso de escribir el código mostrará las herramientas que las versiones más nuevas de VS traen a la mesa y proporcionará evidencia de que mudarse a .NET no hará que la vida de nadie sea más difícil.

Al entrar en esto, absolutamente, definitivamente debe hacer su tarea. Si se muestra inseguro de cómo funcionan las herramientas o tiene un código que no funciona correctamente, nunca podrá ganárselos a su lado.

TwentyMiles
fuente
0

Lo primero que dice es que VB6 ya no es compatible con Microsoft. Si bien puede mantenerlo en funcionamiento, debe comprender que sus opciones a largo plazo son nulas. Ni siquiera sé si las aplicaciones VB6 se ejecutarán en Windows8, o si el IDE se ejecutará en Win8.

Por lo tanto, eventualmente tiene que volver a escribir, y si ese es el caso, también podría comenzar ahora en lugar de más tarde, dándole tiempo suficiente para descubrir qué nueva tecnología desea usar (mientras VB.NET suena ideal, esta es tu oportunidad de probar algo más avanzado, como hacer que la aplicación funcione en iPads).

A corto plazo, puede mitigar un poco el problema mediante la introducción de nuevas secciones como componentes COM para que la aplicación existente los consuma, con suerte, estos componentes permanecerán cuando ocurra la inevitable reescritura.

No me molestaría con argumentos técnicos sobre por qué .NET es mejor que VB6. Tendrás una discusión perdida allí, la tecnología en sí misma nunca resuelve problemas. Depende de usted cómo aplica esa tecnología, y si la aplicación VB6 está resolviendo cosas por usted, no hay ningún argumento para responder. Puede hablar sobre la facilidad de mantenimiento o la disponibilidad de personal experimentado, pero una vez que lo hace, admite que su personal existente no tiene experiencia en la nueva tecnología y tendrá que capacitarse, y luego tomarse un tiempo para ponerse al día por completo con eso. También tendrá que responder las preguntas sobre cómo muchas reescrituras terminan peor que el proyecto original (a veces debido a la falta de experiencia, a veces debido a diseños demasiado grandes).

gbjbaanb
fuente
MS admitirá VB6 en PC Intel / AMD con Windows 8. No puede escribir aplicaciones Metro en VB6, pero tampoco puede escribir aplicaciones Metro en .NET. Ambos están construidos en Win32. Se supone que al menos el código escrito en C # para .NET es más fácil de portar a WinRT para ejecutarlo en Metro, pero no cuente con que sea una simple reconstrucción.
Scott Whitlock
0

Dale la analogía "auto viejo nuevo vs auto":

Sí, ambos probablemente lo llevarán a su destino. Sin embargo, el nuevo automóvil no necesita una manivela , no necesita un estrangulador , no necesita mapas , sus ruedas no se bloquean cuando frena bruscamente y, finalmente, es mucho más probable que se aleje de un accidente automovilístico .

  • VB6 es legado, es el nuevo COBOL
  • .NET tiene mejores marcos
  • .NET tiene mejores herramientas
  • .NET tiene mejor rendimiento
  • .NET tiene mejor IDE
  • .NET tiene mejor soporte de idiomas
  • .NET tiene mejores características
  • .NET tiene mejor soporte comunitario
Noche oscura
fuente
77
Las analogías de los automóviles generalmente fallan, y la suya no es diferente. ¡Una cosa que tiene un auto viejo que no tiene un auto nuevo es que se paga! Si fuera dueño de un taxi y se lo pagara y le hiciera ganar más dinero del que le costaba mantener, y un automóvil nuevo le costaría más dinero del que pagó, ¿qué preferiría tener como persona de negocios?
2
@JarrodRoberson Está pagado, pero tienden a frenar más a menudo y después de un tiempo ya no funcionarán. Las analogías de los autos son geniales. :)
Steven Jeuris
1
En realidad, esta analogía del auto es buena. El jefe de OP tiene ese taxi en marcha y el OP debe considerar eso al acercarse a él. Un cambio completo no puede suceder durante un día, pero comencemos a mover bits, cambiar piezas, uno tras otro.
ZJR
1
El dueño del negocio diseñó y construyó el suyo. Lo más probable es que se haya pagado por sí mismo muchas veces, y el mantenimiento es gratuito para todos los efectos, ya que solo hay 3 desarrolladores y él es uno de ellos. Como dije, las analogías de los autos son terribles, particularmente esta, y usted me hace entender sus argumentos que están completamente fuera de la base de los negocios. En el mejor de los casos, el nuevo software lo convertirá en un beneficio mucho más pequeño año tras año y, en el peor de los casos, perderá dinero por un período de tiempo indeterminado.
2
Las aplicaciones no tienen entropía de uso y desgaste como los elementos físicos, tampoco se atrofian naturalmente, por lo que no se desgastan ni se descomponen independientemente del uso, por lo que no se aplican analogías con los elementos físicos, especialmente los automóviles. Una aplicación se ejecutará para siempre, siempre y cuando cumpla su propósito. Una empresa para la que trabajé hace unos años tenía una vieja máquina basada en MS-DOS que controlaba los lectores de tarjetas en las puertas. La idea de que el software se desgasta es tonta. Dicho esto, un buen plan de fin de vida siempre debe estar en su lugar. Incluso si ese plan es nunca volver a escribir el software.
0

En primer lugar, creo que debería cambiar la pregunta (no en stackexchange sino dentro de su empresa). No es tanto por qué .Net es mejor que VB6, sino más bien ya que VB6 ya no es compatible , es hora de seguir adelante, sino a qué. Pregunte a las partes interesadas cuál debería ser esa 'nueva' tecnología Quizás no sea .Net.

Pero parece que necesita pasar a una nueva tecnología Y obtener algunos buenos patrones y prácticas de programación. La respuesta a la segunda parte es mucho más difícil. Probablemente tenga que hacerlo en una pequeña sección de la aplicación y demostrar que vale la pena, es decir, es más estable, más fácil de mantener, etc.

fader oscuro
fuente
-1

Dile a tus jefes que escriban dos anuncios de búsqueda. Uno para desarrolladores de C #. Uno para expertos en VB6. Ponlos ahí afuera. Compara resultados.

Erik Reppen
fuente