Cómo salir de un trabajo de mantenimiento de software heredado

Lo triste es que en realidad hay un gran negocio para mantener el software antiguo … hasta cierto punto. A medida que el ecosistema se debilita y el soporte se vuelve cada vez más difícil de encontrar, el codificador heredado puede obtener una prima cómoda para los pocos clientes desesperados que, probablemente en contra de su voluntad, están vinculados al sistema de envejecimiento. Hacer látigos con errores en 1925 no es un gran negocio; hacer látigos con errores en 1952 en realidad podría ser un acogedor nicho de negocios.

…por un momento…

Y ahí está el problema: hace poco descubrí que la compañía de un amigo está cayendo después de 15 años (!) De soporte en Lotus Notes. Mientras las personas estén atrapadas en el pasado, puede ser bastante lucrativo satisfacer sus necesidades, pero eventualmente tendrán que seguir adelante y ese pequeño y agradable comercio heredado seguirá el camino del dodo.

Desea tener a mano dos hechos importantes:

  1. ¿Cuánto tiempo puede durar este negocio realmente? ¿Está trabajando para una institución que no entregará sus sistemas hasta que se desmoronen físicamente, o una que cambie en cuanto se retire el CTO actual? ¿Es esta una agencia gubernamental pesada que no puede cambiar sin el permiso de la legislatura, o un negocio que podría comprarse y actualizarse en cualquier momento? No puede planificar si no tiene una suposición decente sobre cuánto tiempo podría durar esto.
  2. ¿Qué puede hacer usted (usted, el individuo o el equipo) para mantenerse relevante cuando el negocio inevitablemente se da vuelta? Si las cosas están en un modo de mantenimiento cómodo, debe trabajar duro para aprender habilidades modernas o idear un reemplazo moderno para el sistema heredado que está cuidando. Si el trabajo consiste principalmente en asegurarse de que las cosas no se hayan estropeado, es posible que pueda obtener soporte para un proyecto de actualización interno o portar partes del sistema a una infraestructura más moderna. Si las cosas son suaves, tal vez pueda obtener permiso para contribuir a proyectos relevantes de código abierto y actualizar su conjunto de habilidades personales y su reputación.

De cualquier manera, la clave es no sentirse cómodo. Un negocio de mantenimiento heredado tiene una vida útil limitada, desea estar listo mucho antes de que muera. Si el trabajo no es un lugar donde puede pulir las habilidades modernas, ciertamente puede hacer trabajo comunitario de código abierto en su propio tiempo.

O bien, puede forzar el problema diciendo “oye, este trabajo está dañando mis perspectivas profesionales a largo plazo”. Si quieres que me quede, tienes que compensarme por ese riesgo ”y simplemente tomar el dinero extra. No es una amenaza a menos que esté preparado para caminar, pero puede valer la pena solo para evitar quedar atrapado.

Sobre todo: toma la decisión por ti mismo. No te sientes y esperes a que ocurra algo agradable. El próximo Gran Evento en la vida de una aplicación de 20 años es probablemente un evento de extinción.

Al leer los comentarios, parece que la pregunta es “¿cómo hacer tiempo para aprender RoR o Node.JS”. También voy a hacer algunas suposiciones:

  • Tienes una familia. Si no, tiene un exceso de tiempo libre, pero elige gastarlo en algo que no sea el desarrollo profesional.
  • Basado en los comentarios despectivos de los desarrolladores de Java (totalmente incorrecto por cierto), actualmente está trabajando en un proyecto de Java. Probablemente basado en una tecnología anterior muchos años antes y migrado mal.
  • Temes que tu situación sea totalmente única. Nuevamente basado en algunos de los comentarios (bastante sarcásticos) hechos.
  • Su comentario sobre las discusiones de arquitectura sugiere que su empresa sabe que necesita avanzar pero no sabe cómo .

Podría estar equivocado sobre mis suposiciones.

La primera opción es sacrificar algo para hacer tiempo para aprender. Tal vez viaje en tren en el que lee una novela todos los días. Tome una computadora portátil y úsela (compre una barata si es necesario, una basada en ATOM con unos pocos G de ram servirá si tiene pocos fondos).

Es muy poco probable que no tenga absolutamente ningún tiempo libre. El único punto en el que puedo pensar cuando eso sería cierto es en los primeros meses después del nuevo bebé. Pero ese es un mal momento para hacer algo nuevo. Debes esperar mientras te acostumbras a una rutina.

La segunda opción es introducir nuevas prácticas en su lugar de trabajo existente. Supuse que usted es un desarrollador de Java anteriormente, solo uno que trabaja en una base de código heredada. Algunas buenas noticias para ti. Java es un gran lenguaje para el desarrollo moderno. TDD, BDD, DevOps, código limpio, (prácticamente) sin placa de caldera, 12 aplicaciones de factor que puede (con las herramientas correctas) hacer todo eso. El infierno en muchos casos lidera el camino en eso. Esto te da la oportunidad de poner las cosas en práctica de inmediato. Podría convertirse en un agente de cambio en su organización. Lidere el camino reduciendo lentamente la deuda. Cuando otros desarrolladores vean que su código es más fácil de mantener que el resto, tendrá el capital político para comenzar a impulsar cambios más grandes. No pidas permiso, no comiences demasiado y no involucres a otros en este momento. Simplemente hazlo.

Basado en los comentarios de otras publicaciones, sé lo que vendrá después. ” Muéstrame que esto es posible “.

Pasé del soporte técnico al desarrollador productivo de Java; luego de desarrollador Java a desarrollador C # productivo en una semana más o menos, luego Arquitecto a Scala y actualmente un tipo de AWS DevOps. Algo de esto mientras es un desarrollador a tiempo completo y un cuidador a tiempo completo. Algo de eso mientras pasa por una separación desordenada. En este último pero solo paso de Arquitecto a desarrollador de Scala, tuve varios grandes “eventos de la vida” en curso: mi ex esposa ya no podía hacer frente y envió a nuestra hija a vivir conmigo y me mudé con mi pareja.

Entonces, sí, puedes encontrar el tiempo si buscas lo suficiente. Tener una familia que lo apoye es increíblemente útil en esto.

He incorporado las prácticas modernas de desarrollo a tres roles ahora. Dos cuando realmente bien. Una casa c # / VB sin pruebas se mudó a una tienda totalmente ágil con TDD y los inicios de BDD. Esto lo hago en el fondo por mí hasta que conseguí que el jefe viera los beneficios y trajimos a un experto ágil.

Lo siguiente que fui llevado a un equipo basado en el éxito que tuve transformando el anterior. Ese equipo comenzó odiando todas las cosas modernas para construir un producto moderno basado en Java.

El último intento no fue un éxito. Pero dos de cada tres no es malo.

Encuentre un trabajo mejor, avise con dos semanas de anticipación y comience a trabajar en el nuevo trabajo. La próxima vez, pregunte qué hará al principio del proceso de la entrevista. Limito las sorpresas desagradables obteniendo códigos, compilaciones y pruebas antes de considerar las ofertas.

Muchos ingenieros quieren entrar en el desarrollo de software de vanguardia, big data, aprendizaje automático, etc. ¡Eso es bueno! Sin embargo, parece más una moda hoy en día que un pensamiento lógico respaldado por habilidades poseídas. Es bueno, pero no veo que pongan ningún esfuerzo en hacer que ellos mismos puedan ser empleados en estas transmisiones. Le sugiero que se equipe primero con las habilidades y luego busque un trabajo adecuado. Si crees que ya tienes las habilidades, ¿qué estás esperando? ¡Todo lo mejor con tu nuevo trabajo!

He estado en una situación similar últimamente, trabajando en un código que es más antiguo que yo (es decir, más de 30 años), pero aún envío algunos productos durante 2-3 años más mientras migran a una arquitectura más nueva.

Por lo que sé, la muerte de esta base de código ha sido anunciada muchas veces en el pasado, solo para posponerse porque lo que sea que esté destinado a reemplazarla no estaba lista para el horario estelar. Por una variedad de razones sobre las cuales no puedo explicar aquí; esta vez parece que podría ser real.

Afortunadamente para mí, ya me han asignado tareas en sistemas mucho más nuevos con I + D en curso; Si esa es una opción en su empleador actual, intente involucrarse en ellas. De lo contrario, como han sugerido otros, comience a buscar en otro lado y seleccione proyectos paralelos relevantes para que sus habilidades no se pudran.

Buena suerte,

Anónimo

Comienza a buscar otro trabajo, antes o después de hacer su preferencia para trabajar en un nuevo código conocido por su empleador actual. Pueden decidir que les gustas y permitirte que te transfieran a un trabajo diferente internamente, lo que puedes decidir que es interesante o no. Es poco probable que te despidan por preguntar.

Si no sacude la caja de alguna manera, la situación no cambiará.

Si hay al menos unos pocos grandes al mes involucrados, siempre puedes empeñarlo en mí. Me encanta el mantenimiento de aplicaciones heredadas. La última compañía para la que trabajé todavía me paga para mantener su antiguo sitio mientras están poniendo en funcionamiento el nuevo. La última vez que hice un trabajo serio fue hace unos seis meses. Desde entonces, he estado cobrando cheques y vigilándolo.

Sabes que es un buen concierto cuando tu mayor problema es inventar las facturas.

Por supuesto, me llevó alrededor de un año llevar la aplicación al punto en el que podría ponerla en piloto automático. Considero que el último medio año de dinero “gratis” es para mí solo disfrutando de los frutos de mis habilidades y trabajo.

Por supuesto, algunos programadores no pueden estar satisfechos con el dinero fácil. Necesitan hacer algo difícil. Eso está bien para mí. Envíame tu proyecto de dinero fácil, estaré encantado de aceptarlo. Lo haré desde una playa en el Caribe.

More Interesting

¿Los desarrolladores temen ser eliminados por los desarrolladores jóvenes cuando envejecen?

¿Cómo manejan los desarrolladores de software lo desconocido y lo nuevo?

¿Por qué algunos desarrolladores de software se llaman ingenieros de software?

¿Qué lema debo dar para mi empresa de desarrollo de software?

¿Es cierto que los desarrolladores de software llevan sus computadoras portátiles a todas partes, incluso cuando viajan con su familia?

¿Conseguiré un trabajo de desarrollador de software (como nuevo) si solo conozco C y también he realizado proyectos usando C?

Cómo convertirse en un desarrollador web / software agnóstico

¿Cuál es el potencial (monetario) de un negocio de desarrollo de software personalizado, una tienda de consultoría de software para ser precisos?

Trabajo como analista financiero para un banco. Estoy interesado en hacer un cambio de carrera y convertirme en desarrollador de software. Si me enseño a codificar con cursos en línea, ¿cuánto tiempo hasta que una empresa de tecnología pueda emplearme como desarrollador?

¿Es cierto que debería "fingirlo hasta que lo sepa" cuando solicito un trabajo de desarrollador de software que requiere habilidades que no conozco?

¿Cuáles son algunas habilidades que aprende como desarrollador de software que son transferibles a la vida real?

¿Cuál es el mejor nivel de descomposición que debe hacer un programador con el código?

Como desarrollador de software con 1.3 años de experiencia, ¿cómo puedo obtener un trabajo como analista de negocios? ¿Qué herramientas necesito para dominar? ¿Qué tipo de preguntas de entrevista puedo esperar?

¿Cuáles son algunas de las mejores empresas / personas de desarrollo de software en San Francisco?

¿Qué significa ser un desarrollador senior?