Un poco de historia :
Estoy trabajando en una gran empresa, usando Windows XP y codificando Winforms en VB6 / VB.Net y algunos WebForms en VB.Net (95% de código de mantenimiento). Tengo una pantalla de 4: 3 de 19 ". Una versión más moderna de Windows no está sucediendo pronto, ¡tampoco hay ningún trabajo nuevo por el sonido!
No me dijeron nada de esto cuando me uní a la compañía, me engañé al pensar que estaría trabajando con tecnologías y marcos mucho más actualizados.
Tengo mucha más experiencia actualizada de trabajos anteriores, tanto con marcos más modernos y otros lenguajes de programación, y cuando me estoy poniendo al día con amigos desarrolladores de otras compañías, todo lo que escucho es cómo están usando el último marco ASP MVC, o Vagabundo / Ruby on Rails / etc y estoy recibiendo los ojos verdes!
Podría resolver otro trabajo bastante rápido, pero siento que debería darle una oportunidad más.
La pregunta :
Estoy tratando de convencerme de que mi trabajo actual no es tan malo. ¿Cuáles son las ventajas de este tipo de rol? ¿Hay ventajas de trabajar con tecnologías obsoletas? ¿Quizás algunas técnicas que no aprendería trabajando con otras más modernas? ¿O es este el tipo de lugar donde las carreras van a morir, y debería salir mientras todavía tengo mi alma?
Respuestas:
Ah, pero allí están jugando con sus juguetes, y ahí estás haciendo un trabajo real, usando una herramienta que hace el trabajo para lograr una solución.
Eso es lo que debe considerar: el software es a menudo un asunto de aficionados con personas que saltan de una tecnología nueva y genial a la próxima última moda. Luego, hay otros que lo tratan como una carrera mucho más profesional en la que las herramientas no importan tanto como el producto o la solución que usted crea.
Hay lugares donde la tecnología antigua necesita ser reemplazada por algo nuevo, pero generalmente solo son actualizaciones, no reemplazos al por mayor. Por ejemplo, VB6 se actualiza a VB.NET, Visual Studio 2002 se actualiza a Visual Studio 2012. Cualquiera que realice una reescritura completa siempre encuentra que las cosas no son tan fantásticas con las nuevas herramientas. (por eso Joel, entre otros, dice que la reescritura es siempre la respuesta incorrecta)
Por lo tanto, concéntrese en lograr cosas y actualice donde pueda, lenta y cuidadosamente donde tenga sentido, no porque quiera jugar con los juguetes más nuevos (que de todos modos se descartarán lo suficientemente pronto, y lo último que quiere es mantener un sistema escrito por personas que codificaron la tecnología genial del año pasado )
fuente
De hecho, hay varios beneficios para que una empresa se adhiera a las tecnologías obsoletas:
Las cosas heredadas a veces no funcionan con cosas nuevas
Una empresa puede haber invertido una gran cantidad de dinero en sistemas que simplemente no funcionan con idiomas o sistemas operativos más nuevos. Un ejemplo clásico son muchas aplicaciones web de intranet que son compatibles con IE6 y solo IE6. La elección entre quedarse con Windows XP + IE6 y tirar un sistema de trabajo e invertir dinero en el nuevo no es obvio.
Cambiar por el bien del cambio no es una buena elección
Ejemplo: muchos bancos continúan manteniendo aplicaciones originalmente escritas en COBOL. Cuando todo funciona, ¿por qué una empresa decidiría reescribirlo en otro idioma, dado el costo de reescribir un sistema crítico de gran negocio, así como el riesgo de equivocarse, introduciendo un montón de nuevos errores? (Una de las razones se describe a continuación)
Las licencias son caras.
Digamos que una empresa tiene unos cientos de escritorios que usan Windows XP. Quieren pasar a Windows 8. ¿Cuál es el costo de una sola licencia de Windows 8 Enterprise? ¿Qué pasa si multiplicamos este costo por la cantidad de máquinas?
Se vuelve aún peor para los servidores. Una licencia única para Oracle o Microsoft SQL Server cuesta alrededor de $ 30 000 - $ 40 000. Si una empresa tiene, por ejemplo, cincuenta servidores de bases de datos, se vuelve rápidamente muy costosa incluso con licencias por volumen.
En mi empresa, estamos atascados con Visual Studio 2010. Sufrimos de sus numerosos errores y sabemos que nunca se resolverán, ya que Microsoft abandonó esta versión. Pero $ 13 000 (dado que necesitamos la versión Ultimate debido a sus características únicas que no están disponibles en otras versiones) es demasiado alto para que podamos actualizar a Visual Studio 2013.
Dicho esto, también hay inconvenientes importantes.
Las cosas heredadas no atraen nuevos talentos
Ese es uno de los problemas de las empresas que mantienen las aplicaciones COBOL: les resulta difícil encontrar desarrolladores económicos. Además, trabajar en mainframes y escribir código COBOL no es algo atractivo para las personas creativas.
Si bien es una buena opción para los sistemas troncales que requieren mantenerse sólidos, esos sistemas e idiomas no se adaptarán bien a los productos que requieren innovación constante.
Viejo no significa seguro
Como reescribir un producto en un nuevo idioma puede introducir nuevos errores, mantener sistemas antiguos que ya no son compatibles también puede ser peligroso. Imagine que se encuentra un error en Windows 98, que podría comprometer todo el sistema: ¿Microsoft lanzaría una actualización para resolverlo?
El legado es viral
La incompatibilidad entre los sistemas heredados y los más nuevos significa que, a menudo, cuando se queda con un producto, idioma o infraestructura antiguos, no podrá actualizar en otro lugar. Una aplicación de intranet antigua que funciona solo en IE6 conduce a Windows XP en todos los escritorios, lo que significa que no puede migrar a una nueva versión de Active Directory, lo que significa que no puede usar nuevas aplicaciones que requieren la versión más reciente de Active Directory, y pronto.
Productividad
Las nuevas versiones de productos aportan nuevas características que, a veces, aumentan la productividad. Una tarea que tomaría una hora con Visual Basic 6.0 podría realizarse en menos de una hora con Visual Studio 2013, porque Visual Studio 2013 y .NET Framework 4.5 traen Intellisense mejorado, Entity Framework y miles de otras cosas que reducen el código que uno tiene para escribir, aumente la velocidad de escritura de código y disminuya el riesgo de introducir errores.
Si el ejemplo no es lo suficientemente claro, aquí hay otro. En Windows 3.1, los administradores del sistema configuraban cada máquina una por una, a mano (a menos que hubiera alguna automatización que no conozca). Hoy, usarían PXE y el Kit de evaluación e implementación de Windows para implementar en cuestión de minutos un nuevo sistema operativo y software en miles de máquinas automáticamente.
El uso de versiones anteriores simplemente puede convertirse en un costo prohibitivo. Puede que no sea obvio para algunos usuarios que están contentos con el uso de Windows 95, pero es mucho más obvio para los desarrolladores, administradores de sistemas, diseñadores, científicos y otras personas que dependen en gran medida del poder del hardware y las aplicaciones.
fuente
Desarrollar con tecnologías obsoletas tiene algunas ventajas, pero si estas superan o no el costo que sufre por perder fluidez con sus reemplazos y el dolor de trabajar con ellas, es una elección personal entre usted y ellos.
Puedo pensar en tres beneficios de trabajar con tecnología obsoleta y reemplazada:
Familiaridad con la tecnología más antigua.
Las únicas tecnologías antiguas aún en uso son aquellas que alguien, en algún lugar, ha decidido que son más baratas de mantener que reemplazar. Ser capaz de enumerar la experiencia laboral con tecnología tan antigua puede, en sí mismo, ayudarlo a obtener otro trabajo trabajando en la misma área. Y a medida que más y más desarrolladores avanzan, aumenta la prima que puede cobrar por trabajar en ellos.
Una oportunidad para practicar aprender algo nuevo
No eres realmente un programador si solo puedes programar en idiomas que alguien más te enseñó. Ser capaz de adaptar sus técnicas y modelos a la tecnología más antigua requiere exactamente las mismas habilidades que necesitaría para adaptarse a la nueva tecnología.
Comprensión más profunda de por qué fueron reemplazados
Es difícil explicarle a un tipo de Recursos Humanos o Ejecutivo no programador por qué VB.NET o C # es superior a VB6 si no está familiarizado con la tecnología en sí. Y si no está completamente familiarizado con este último, aprender lo que reemplazaron puede ayudar a comprender por qué los reemplazos se escribieron como estaban.
Dicho todo lo anterior, no hay absolutamente ninguna razón por la que una empresa deba persistir en el mantenimiento de cualquier aplicación escrita en tecnología que haya quedado tan desactualizada.
Si se puede dejar solo hasta que el tiempo de ejecución falle debido a algún error indocumentado, eso es una cosa, pero cada hora que un desarrollador gasta en tecnología antigua sin un plan de transición es una deuda técnica que la empresa eventualmente tendrá que pagar.
fuente
En algún momento, la empresa deberá preocuparse por el final de la vida útil de VB6, pero lamentablemente a VB.NET le queda algo de aliento.
¿Hay alguna razón relacionada para trabajar en un solo monitor pequeño? Eso suena más a que la compañía es barata que está preocupada por tecnologías bien probadas. No es que un par de monitores de 21 "introduzcan errores.
Para mantener sus habilidades afiladas y recibir un pago por ello, le sugiero que observe su configuración de compilación, prueba e implementación. Esta puede ser una oportunidad para comenzar a introducir algunas tecnologías más nuevas mediante el uso de rake, powershell y / o nant para la compilación y la implementación. Si no tiene pruebas unitarias, comience a agregarlas.
Al final del día, si la empresa no está en el espacio de la tecnología, siempre será secundaria para ellos. Tiene mucho sentido para ellos mantener la estabilidad para proteger sus operaciones comerciales centrales.
Evitaré dar consejos profesionales, estoy seguro de que otros han cubierto las bases.
fuente
Para las personas mayores, avanzar hacia el final de su carrera profesional, vender su profundo conocimiento de una tecnología más antigua a una empresa que todavía usa las cosas antiguas, puede ser financieramente atractivo . Por ejemplo, si tiene experiencia en PDP-11, es posible que desee mudarse a Canadá .
Sin embargo, al principio de su carrera, recomendaría seguir adelante.
fuente
Hay múltiples ventajas:
1) Habrá muchos recursos disponibles para las tecnologías, siempre y cuando no sean oscuras y no se utilicen ampliamente.
2) Esperemos que otros en la compañía estén bien versados en las tecnologías ya que no han cambiado.
3) Si no hay mucho desarrollo nuevo, puede trabajar en la refactorización del código antiguo para que sea más limpio o más rápido. Tenga en cuenta que el tipo de tienda que mantiene esta vieja tecnología probablemente estará en contra de cambiar cualquier código que "funcione" a pesar de lo aborrecible que pueda ser.
fuente
Me voy a concentrar en la otra cara de esta pregunta, es decir, las desventajas de usar nuevas tecnologías, ya que las ventajas de las tecnologías obsoletas se han cubierto suficientemente en otras respuestas.
Todavía tenemos una gran base de código de Visual Studio 6 y parece que no se reemplazará en el corto plazo.
Sin embargo, estamos avanzando con nuevas tecnologías donde podamos para nuevos desarrollos.
Como creo que aludiste, es posible escribir VB.NET que interactúa bastante bien con el código VB6 heredado usando COM.
El uso de tecnologías de vanguardia es indudablemente divertido, ya que a menudo aportan importantes beneficios de productividad. Sin embargo, la otra cara es que puedes encontrar un error / falla que te retrasa días / semanas. Se llama borde de sangrado por una razón!
Incluso si la compañía fuera a gastar el dinero para actualizar el software, esto (como he encontrado por experiencia personal) puede ser un poco molesto en cualquier forma que elija la empresa:
Puerto de software
El software se reescribe pero tiene que verse exactamente igual que el software anterior para no molestar a los usuarios. El placer de trabajar con nuevas tecnologías se ve anulado por el hecho de que no puede utilizar ninguna de las nuevas herramientas de GUI.
Actualización de Visual Studio
Realmente no puedes usar ninguna de las nuevas funciones correctamente, ya que pasas mucho tiempo solucionando fallas en el código donde funciona bien en una versión de estudio pero no en la otra.
Migración funcional
Migra el software manteniendo la funcionalidad principal. Esto permite la mayor libertad desde el punto de vista del desarrollador, pero podrían introducirse errores que podrían hacer que la empresa cuestione el valor de dicho ejercicio a menos que también se incluyan nuevas características de valor agregado.
Nirvana para la mayoría de los desarrolladores es un entrenamiento de calidad en tecnologías modernas, una oportunidad de practicar lo que has aprendido y luego un proyecto innovador para cortarte los dientes.
Lo que debe hacer depende en gran medida del tipo de persona que sea. Los neófilos siempre querrán trabajar con las cosas nuevas, mientras que los luditas creen que la tecnología antigua es la mejor. La mayoría de nosotros estamos en algún punto intermedio. Necesita ejercitarse donde se sienta cómodo. Si sientes que puedes vivir con el status quo, entonces genial, de lo contrario toma la moneda por ahora y mantente atento para una posición más adecuada.
fuente
Puede que esto no sea exactamente lo que está preguntando, pero tengo algunas sugerencias:
Creo que el mayor beneficio es lo que puede ofrecer a su empleador en términos de experiencia cuando eventualmente se den cuenta de que necesitan migrar. XP se descontinuará este año, así que imagino que su departamento de TI ya está considerando una estrategia de migración. (Si no, prepare su currículum, porque su compañía no durará mucho).
Con eso en mente, podría ser prudente comenzar a compilar una lista de ventajas para migrar los conjuntos de herramientas de software principales junto con la migración del sistema operativo / plataforma. Ayude a educar a su cadena de gestión técnicamente no conocedora sobre el ROI con respecto a las nuevas tecnologías Sus gerentes no estarán interesados en los marcos de whiz-bang y los juguetes tecnológicos, pero deberían estar muy interesados en sus proyecciones de largo alcance con respecto a los costos comparativos de los gastos de mantenimiento continuo, desarrollo futuro, etc.
En esta misma línea, puede aprovechar esta oportunidad para conocer el nivel de satisfacción de sus clientes (los empleados que usan su software). ¿Qué mejoras les encantaría ver? ¿Qué errores los vuelven locos? ¿Qué características mejorarían significativamente su eficiencia? Si puede mostrar a sus empleadores que una nueva inversión en tecnología impactaría demostrativamente sus resultados, bien podría obtener el título de Gerente Técnico de Migración.
Y ESO se vería bien en CUALQUIER CV.
ACTUALIZACIÓN: Parece que no estás solo en tu industria: "El 95% de los cajeros automáticos del mundo funcionan con XP ". No me malinterpreten: XP es genial, siempre fui un fanático. Pero la realidad es que, una vez que finalicen los parches de seguridad y las actualizaciones, XP no será un producto viable para un banco. Su trabajo (por el bien de los clientes de su banco) es informar gentil pero persistentemente a sus gerentes que terminarán pagando mucho más (en acuerdos de servicio extendido o mitigación de ataques) para mantener XP después de su fecha de jubilación. Como señaló el enlace de @ RobbieDee: tiene hasta el 14 de julio de 2015. Ese es el tiempo suficiente (si comienza ahora) para diseñar, implementar y desplegar un sistema de reemplazo.
(Pero NO trate de vender esta idea al tipo que acaba de firmar la instalación de XP en toda la empresa. Él no es su aliado. Con un juicio como ese, sus días en ese papel están contados. Simplemente trabaje en silencio hasta que llegue a su lado). las cabezas más sabias prevalecen.)
fuente