¿Cómo progresar en su carrera si su empleador está utilizando herramientas y tecnologías obsoletas?

Recientemente me uní a una empresa para trabajar como ingeniero/desarrollo en el software y las soluciones de TI que tienen. Durante mis entrevistas me presentaron todo de una manera que parecía bastante elegante y moderna. Sin embargo, después de algunas semanas aquí, entendí que es todo lo contrario:

  • Están utilizando tecnologías totalmente obsoletas (10+) años.
  • Apenas hacen CI / CD
  • las herramientas que uso funcionan muy lentamente y son realmente obsoletas. Además lo usan de forma desordenada.
  • Utilizan lenguajes y frameworks completamente antiguos y de bajo rendimiento. Dudo que ningún posible empleador esté interesado en esas tecnologías.
  • Además, tienen malas prácticas en lo que se refiere a organizar archivos de proyectos de software, empaquetar los archivos, etc.
    • No tienen ningún paquete de software, por lo que todo el código fuente es un solo proyecto. Esto provoca un cuello de botella en todas partes.
    • Mezclan el software con la infraestructura de una manera que es muy dolorosa para trabajar y desacoplarla si es necesario.

Además, la tendencia no parece detenerse. Parecen conscientes de ello y tienen en el fondo algunos planes para mejorarlo, pero nada se está convirtiendo en realidad.

Me he comunicado activa y pasivamente sobre esto desde que me uní a la empresa. Consideran que la mayor parte está en las tareas pendientes. Sin embargo, está en sus tareas pendientes desde hace mucho tiempo y todo está completamente atascado. Puedo ver que presentaron algunos problemas sobre esto hace mucho tiempo y realmente no pasó nada para arreglar toda la deuda técnica.

Me pregunto si podría quedarme en esta empresa y no hacer nada con respecto a la deuda técnica. O seguir luchando para reducirlo. Sería mucho mejor para mis perspectivas futuras si puedo demostrar que he estado trabajando en cosas modernas en lugar de tecnologías obsoletas.

¿Qué puedo hacer para animar a mi empresa a comprometerse con sus propias tareas pendientes y limpiar el producto?

¿Qué quiere decir con su "progreso profesional" ? Todas las empresas tienen software heredado y poder mantenerlo es una parte tan importante de su "carrera" como desarrollador como la capacidad de utilizar las tendencias de software más nuevas.
¿Ha hablado con su gerente acerca de sus preocupaciones? Quizás no se den cuenta del error que están cometiendo y tú puedas ser el héroe que les muestre el error de sus caminos.
@IDrinkandIKnowThings según la situación, incluso recomendaría a OP que considere el resultado de esa reunión para determinar si necesitan irse, pasar de una nueva pila a una pila antigua no es la forma de adquirir satisfacción laboral en TI jajaja.
@Dan, creo que OP fue cebado y cambiado para unirse a su compañía actual específicamente con el pretexto de que estaría trabajando en tecnología de punta. De lo contrario, no se hubiera unido.
Hola, @trabajador, edité su publicación para resaltar una pregunta específica y acortarla un poco. Si arruiné su intención original, no dude en revertir mis cambios o editarlos. Y, ¡bienvenido al lugar de trabajo!
@Worker: Enumera un montón de cambios que cree que deberían implementarse. Sin embargo, no proporciona ninguna razón concreta por la que deban incorporarse. ¿Qué tipos específicos de problemas tiene que solucionarían sus cambios y qué gran mejora supondría la incorporación de esos cambios? Si no tiene respuestas a esas preguntas, entonces sus recomendaciones no tienen sentido. Especialmente porque no tiene un historial en el que haya construido su credibilidad hasta el punto en que las personas se inclinan a 'confiar' en su opinión sobre la suya.
La razón de ser de la empresa es la eficiencia. Es decir, harán más cosas en menos tiempo. es decir, más barato ya que se necesita menos gente y menos tiempo para hacer las cosas.

Respuestas (7)

Si tienes que irte, vete.

Pero mientras estés allí, elige las batallas que puedas ganar. No se limite a objetar la tecnología porque es "vieja", sino que trate de centrarse en la mejora incremental del proceso . Puedes hacer un gran trabajo con herramientas antiguas, si las usas sabiamente. Y, francamente, es bastante común hacer un trabajo horrible con las últimas herramientas pero usarlas sin cuidado, especialmente cuando las soluciones establecidas se eliminan a ciegas sin comprender realmente lo que ofrecen a la empresa.

Si desea reemplazar una tecnología, concéntrese específicamente en el valor que una solución más nueva puede aportar al negocio. Encuentre formas de adaptarlo a la infraestructura existente, reimplementando las interfaces heredadas para que una nueva solución pueda ser un reemplazo en el ecosistema general. Eso puede significar no usar inicialmente algo ni siquiera una fracción de su ventaja potencial, pero significa abrir la puerta a las posibilidades.

Recuerda que estás contratado para resolver problemas, no para crearlos. Si los problemas que necesitan resolver no son los que usted puede o no está interesado en resolver, es hora de seguir adelante y encontrar un lugar donde haya una mejor coincidencia entre los problemas que quieren resolver y los problemas que usted quiere resolver .

He hecho más, trabajando con (ensamblaje, JCL y Fortran 77) en un mainframe de 20 años, de lo que nunca pensé que fuera posible. Hay cosas que esos sistemas le permiten hacer que son imposibles en las versiones más recientes de Java, C++ y C#. Esto no cambia el hecho de que todavía hago herramientas en otros idiomas, además de los idiomas heredados. Me he convertido en un mejor ingeniero debido a mi introducción a esos lenguajes heredados.

Creo que si te sientes estancado y la compañía no te satisface, tu única opción es cambiar de trabajo. Tal vez incluso con alguna rebaja en las ventajas, etc., pero con potencial de carrera.

Parece que el OP está menos preocupado por los acontecimientos de su nuevo lugar de trabajo que posiblemente se arrepienta de haber dejado el último.
Si el OP renuncia rápidamente y encuentra otro trabajo, puede suavizar las grietas en su CV. Personalmente, no mencionaría el trabajo actual cuando postulo a otros nuevos.
Como alguien que pasó meros meses en varios trabajos como desarrollador de .NET escalando la escala profesional, puedo decirle que la demanda de sus habilidades significará que pasarán por alto cualquier brecha en la carrera. Nunca tuve ningún problema más allá de algunas preguntas sobre por qué había trabajado por períodos cortos. Mis habilidades eran geniales y eso era lo que necesitaban. Trabajé en algunos trabajos terribles y, como resultado, los dejé. Le expliqué que me contrataron en algunos casos para programar y, sin embargo, terminé como probador, haciendo clic manualmente en cosas. ¿Quién no? Una vez que esté capacitado, puede ser contratado como desarrollador senior/líder, y luego puede implementar nueva tecnología.

He estado allí. Esto es más común de lo que piensas.

La prioridad número uno de las empresas es generar ganancias para sus propietarios (accionistas, etc.). Si la tecnología actual satisface las necesidades comerciales , ¿por qué invertirían en algo moderno y nuevo?

Para mí, comencé en TI como programador COBOL (ugh) en el '94. La firma para la que trabajé era una firma de corretaje muy exitosa. El código fue escrito en COBOL68 y parte de la fuente tenía cerca de 25 años. Era antiguo pero funcionaba. Se nos pidió que actualizáramos la versión de COBOL y que hiciéramos los cambios necesarios para Y2K.

Pasar a un entorno más moderno fue algo que sucedió debido a las presiones comerciales, no porque yo (como desarrollador que conocía C, C++, etc.) quisiera usar las últimas herramientas.

Entonces, ¿qué hacer mientras tanto? Para mí, mi primer proyecto de VB6 fue reemplazar una máquina perforadora de teclas con una aplicación de escritorio que podía producir imágenes de tarjetas (texto ASCII) que cumplían con Y2K. Puedo bromear diciendo que creé una máquina perforadora de tarjetas compatible con Y2K (¡en 1999!).

El punto más importante de esto es que pude usar algo 'nuevo' (esto fue antes de .NET y cosas más modernas) para ayudar a resolver una necesidad comercial. Su mejor opción es determinar cómo puede ayudar a la empresa a alcanzar sus objetivos mediante el uso de la tecnología más nueva. Hablar en términos comerciales.

Esa es la cosa. Así que... si hubieras estado usando C/C++ intensivamente en ese momento en lugar del golpe... bueno... hubiera sido mejor.

En mi empresa anterior definitivamente no todo era increíble (jejeje, ¡por eso me mudé!), pero usábamos tecnologías y herramientas de vanguardia y lo extraño. No espero estar usando tecnologías de punta todo el tiempo. Pero los de aquí están realmente desactualizados.

Me parece que echas de menos tu trabajo anterior. ¿Estás seguro de que esto no se trata realmente de arrepentirte de renunciar y perderte lo que estabas haciendo?

¿Qué puedo decirle a un posible empleador? ¿Pasé los últimos 2 años trabajando y arreglando cosas obsoletas? ¿O hizo una configuración básica de cosas modernas?

¿Es difícil determinar para qué lo contrataron? ¿Lo contrataron para reparar software heredado o como desarrollador general de pila completa? Si lo contrataron específicamente para reparar el software heredado, haría lo mejor que pudiera. De lo contrario, le dirá lo mismo a su próximo trabajo: usted era un desarrollador completo y lo que hizo para impulsarlos en la modernización y las tendencias actuales.

Por mucho que el mundo de los desarrolladores te haga pensar, no se espera que entres en todas las organizaciones y te conviertas en una especie de ninja del código arreglando cosas y provocando un gran cambio y ahora estás buscando nuevos trabajos. Su último trabajo tenía un entorno en el que usaban nuevas tendencias, no es que tuviera nada que ver con eso aparte de trabajar allí, el nuevo entorno parece ser complaciente pero comprende que hay nuevas tendencias y formas de hacer lo que son. Si puede lograr una sola cosa, como impulsar las pruebas unitarias, sería un gran logro en comparación con lo que describí anteriormente. Las empresas buscan jugadores de equipo y personas que puedan entrar y contribuir tanto como difundir nuevas ideas. Están interesados ​​en ganar dinero, no en personas que vienen y cambian todo y luego los dejan para que lo averigüen.

No me contrataron para arreglar todo, sino como desarrollador general. Además, no echo de menos mi trabajo anterior. Simplemente fue bueno que nos mantuviéramos al día usando nuevas tecnologías, configurando todo correctamente, etc.

No enfatizarías la técnica, sino las habilidades blandas. Cómo eras un defensor constante. Tal vez haga talleres o presentaciones sobre nuevas herramientas para el personal (o la gerencia). Con análisis de costo beneficio.

Y si la empresa tiene presupuesto, formar. O si dan tiempo para labores de investigación, investiga.

Habilidades blandas. Procedimientos. Protocolos. Si la gestión está de su lado. Esto es lo que destacaría a posibles nuevos empleadores/clientes.

La cuestión es que... si le digo a un posible empleador "Hice un taller para mis universidades sobre tecnología X y cómo mejoraría su flujo de trabajo", el peso no se compararía con "Estaba trabajando en un gran proyecto todos los días con tecnología X durante dos años, por lo que ahora me siento muy seguro con ella". Además, no estoy seguro acerca de la formación. ¿Por qué recibiría una capacitación sobre la tecnología X de la empresa si no planean usarla? Pero sí, veo lo que quieres decir. También pensé de la misma manera sobre la formación, la enseñanza en mis colegios, etc. etc.

Quizás es por eso que lo contrataron: al mostrar las cosas más sofisticadas / más nuevas, querían evaluar dónde estaba usted con las tecnologías, y ahora les gustaría que mejorara la pila de producción diaria actual.

Aunque depende y esto es pura especulación de mi parte. ¿Por qué no le menciona esto a su gerente y trata de elaborar un plan (si aún no hay uno, pregúntele al respecto!)?

Bueno, estoy bastante seguro de que me contrataron porque estoy muy por encima del resto del equipo en términos de conocimiento de diferentes tecnologías, herramientas y comprensión del escenario, etc. He trabajado en muchos lugares y puedo aportar mucho. . Ya le dije al gerente. El plan es "lo haremos", pero vi que están al tanto de muchos de los problemas y planearon hacerlo desde hace mucho tiempo, pero nada sucedió, sucedió y planeó que sucediera. Como mencioné en el post original.

No todo el mundo está listo para hacer frente a la deuda tecnológica y muchos querrán salir corriendo gritando, pero hasta cierto punto, cada base de código tiene algún grado de deuda tecnológica. Veo esto como una oportunidad para estar a nivel del suelo definiendo la nueva arquitectura y procesos.

Habiendo trabajado tanto en el lado de la ingeniería como en el que no lo es, su argumento de que todo está "desactualizado" no es sólido. Suena como despotricar y no respaldado por números. ¿Existe un buen caso comercial para dividir la base de código en múltiples repositorios? ¿O simplemente genera más mantenimiento porque no existe integración continua/implementación continua (CI/CD)? ¿Cuánto más rápido podría implementar a los clientes si tuviera CI/CD? ¿Cómo se pueden minimizar los errores en el proceso de compilación e implementación?

Por ejemplo, si no tiene un CI/CD o uno pobre, haga una prueba de concepto y mida las ganancias potenciales. Preséntelo a su gerente oa quien decida en qué debe trabajar y haga de eso su proyecto. Incluso puede presentar un caso para asistir a conferencias sobre DevOps/SRE y aprender de los demás.

Odio ser demasiado materialista, pero en mi experiencia, si no es su empresa, gastar una enorme cantidad de tiempo y esfuerzo personal para actualizarlo conduce a un gran agotamiento mental y no vale la pena.
Quiero decir que te sientes libre de tomar el camino que más te convenga. Personalmente, me gusta tomar el problema en mis propias manos. Sin embargo, tener una empresa que respete la iniciativa es realmente clave aquí, o su proyecto será asesinado antes de que comience.
@Strader Tengo la misma sensación...