¿Cómo lidiar con un compañero de trabajo que escribe software para darle seguridad laboral en lugar de resolver problemas?

Tengo un compañero de trabajo que principalmente desarrolla programas para uso interno en la empresa. Diseñan sus programas de manera que progresivamente consoliden su posición dentro de la empresa para que sean cada vez más difíciles de reemplazar. Algunos ejemplos:

  • No verifique su código en el control de versiones de la empresa, solo distribuya binarios compilados.
  • Diseñe sus programas utilizando una arquitectura cliente-servidor para que los programas que distribuya sean clientes ligeros que envíen solicitudes a un servidor que ejecuten en su máquina; nadie sabe cómo funciona este servidor o qué está haciendo (aparte de una descripción de alto nivel).
  • Cada vez que se rompe algo relacionado con sus programas, la única persona que puede arreglarlo es ellos mismos, todos los demás no tienen acceso a su código y carecen de los conocimientos necesarios para replicar la funcionalidad de su servidor.
  • Nadie tiene tiempo para escribir un conjunto de programas paralelos o aplicar ingeniería inversa al servidor secreto, por lo que nos limitamos a lo que obtenemos de esa persona.

Como han desarrollado una gran parte de los programas que usamos internamente, no pueden ser reemplazados, y como no serán reemplazados, no podemos salir de esta situación. Y cada vez dependemos más de esa persona, ya que sigue diseñando su código para fortalecer su posición en la empresa.

¿Cómo salir de este círculo vicioso? ¿Cómo acercarse a la gerencia sobre esto?

Si eres un colega, probablemente no puedas hacer nada; es cuestión de gestión establecer algunos estándares y forzar su uso en toda la empresa
¿Es usted el gerente de esta persona?
No, estamos en equipos completamente diferentes.
¿La gerencia está bien con esta situación? ¿Tiene un impacto en su propio trabajo?
En lugar de ser contradictorio e ir ¡Mira! ¡Se está atrincherando! ¡Injusto! debe presentar un caso a la gerencia por estar preparado para que su colega sea atropellado por un autobús
¿Cómo es esto específicamente un problema para usted personalmente? Sigues diciendo "nosotros", pero no eres la empresa. Cuando preguntas "¿Cómo lidiar con ellos...?", ¿qué problemas específicos te ha causado en los últimos meses? Tal vez desconfíen de la dirección, pero si les pides que te expliquen algo (verbalmente, con el ejemplo, lo que sea), ¿lo hacen o no?
@bobglausl: Cite Bus Factor a su gestión. -- en.wikipedia.org/wiki/Bus_factor
¿Quién sabe cuál es la defensa del desarrollador infractor? Es posible que el desarrollador infractor esté haciendo las cosas como la gerencia espera y es realmente el OP el que lo malinterpreta. Es muy difícil decir lo que está pasando aquí objetivamente.
@bobglausl, ¿los compañeros de equipo podrían o estarían dispuestos a admitir este código? Eso eliminaría inmediatamente parte del riesgo. Tal vez pueda convencerlos de que controlen la fuente de estas aplicaciones. Aparte de eso, parece que tal vez haya algunas políticas organizacionales que sean la verdadera causa raíz
Si no estás en el equipo de ese chico, ¿por qué te importa en absoluto y cómo sabes que los compañeros de equipo de ese equipo no han hecho nada? Todo lo que tiene que hacer realmente es informarles, luego ellos se preocuparán por cómo proceder. No estás en su equipo, no es tu responsabilidad.
@ cst1992 Es porque afecta directamente mi trabajo.
Solo una nota: no atribuyas a la malicia lo que puede explicarse fácilmente como estupidez. Tuve un compañero de trabajo que hizo algo similar: el código exótico, el no-check-in, los programas cliente-servidor... al final, solo quería estar nervioso y usar tecnologías "nuevas" como servicios web y similares sin un verdadera necesidad de ello.
Escriba un script con XCopy que copie su código en un servidor de red todas las noches y verifique los cambios en el control de código fuente.
Contrate a un desarrollador o contratista que sea lo suficientemente bueno para obtener la información que necesitan. Su computadora está en la red, ¿verdad? Si es así, es accesible. Su código está en un disco duro en alguna parte, ¿verdad? Si es así, es accesible. Hay mejores formas de lidiar con este problema, pero al final del día, si esas medidas no funcionan, sigue siendo una computadora de la empresa, una red de la empresa y el código de la empresa.
Los desarrolladores novatos siempre intentan usar lo último y lo mejor, incluso si no saben nada al respecto.
¿En qué codifica? Tuvimos un desarrollador que hizo esto con proyectos .Net. Descompilamos todas sus DLL "secretas", nos aseguramos de que pudiéramos ejecutar la pila con el código descompilado y lo despedimos. Si no puede, renuncie, como sugiere @Jasper
@MarkRogers, la cuestión es que todo el mundo quiere aumentar su experiencia y en este campo a muchas personas les apasiona mantenerse al día. Esto puede suceder tanto en grupos enteros como con individuos. A veces, las personas se adelantan a cosas para las que no están preparadas o con las que no están familiarizadas para salir adelante. Esto no es necesariamente algo malo, demuestra una voluntad de evolucionar. En mi humilde opinión, es mucho peor tratar con novatos que no están dispuestos a probar cosas nuevas.
Estoy de acuerdo en que no quieres personas que nunca prueben cosas nuevas, pero como todas las cosas, se necesita un equilibrio entre las soluciones pragmáticas y la experimentación. Probar cosas nuevas y experimentar es bueno, pero el tiempo dedicado a hacerlo suele estar en contradicción con los plazos estrictos y las necesidades comerciales.
¡Cópialo! ¡Reduzca su carga de trabajo y aumente su seguridad laboral!
¿Por qué dices que su código no resuelve problemas? Ciertamente parece que resuelve su problema de seguridad laboral.
No veo ningún problema aquí. ¿Por qué él es tu problema?
Guy es un genio para ser honesto. +1 De acuerdo con @CarlWitthoft
Me pregunto cómo terminó esta historia...
Sin embargo, puedo ver de dónde viene. La mayoría de los contratos suelen decir, parafraseando: “cualquier código escrito en horario laboral pertenece a la empresa”. Entonces, al escribir un cliente ligero en el código real que usa, está protegiendo su implementación y le permite reutilizar el código externo en otro lugar.

Respuestas (17)

Necesita compilar un informe para la gerencia.

Escriba un documento breve que describa exactamente por qué el enfoque actual está llevando a la empresa por un camino peligroso (por ejemplo, ser atropellado por un autobús). Describa los riesgos de seguridad, tal vez incluso cite historias de advertencia dentro de su industria, con referencias a artículos, etc.

También incluya una lista de las formas en que el enfoque de este tipo está perjudicando su propio trabajo, así como el trabajo de sus compañeros de trabajo.

Por último, pero no menos importante, asegúrese de incluir una lista de recomendaciones que se implementarán de inmediato, como agregar el código al control de versiones para que todos lo vean y ejecutar el servidor en una máquina virtual a la que todos tengan acceso. Describa cómo estas medidas no deberían afectar de ninguna manera el trabajo de esta persona, y simplemente agregarán seguridad y transparencia a todo el proceso; deje en claro que no hay objeciones razonables a estas medidas.

Tal vez siéntese con su jefe cuando le entregue este informe y transmita verbalmente los temores exactos que ha escrito aquí: que este tipo está construyendo un imperio en la infraestructura de la empresa y que, en última instancia, es potencialmente peligroso . Si sus jefes sienten que esta persona puede volverse irrazonable, tal vez desee seguir el consejo de @BillLeeper y tomar el control de su máquina para que no pueda dañar su organización. Esto, por supuesto, será para que ellos decidan.

Los gerentes son conscientes de la situación (que trabajar con esa persona es difícil), pero no estoy seguro de que comprendan completamente las formas en que esto es peligroso, ya que es un poco sutil; después de todo, tenemos las herramientas que necesitamos para hacer nuestros trabajos Es solo que a largo plazo esto podría ser un desastre, pero la mayoría de las veces las personas solo están interesadas en lo que está justo frente a sus caras...
@bobglausl: como la persona que realmente comprende la magnitud del problema, es su deber informar debidamente a los gerentes del agujero en el que se están metiendo. No es tu trabajo ir a hablar con tu compañero de trabajo al respecto, o acosarlo de alguna manera. Es su responsabilidad exponer la situación a la gerencia. Entonces pueden manejar la situación o continuar cavando su hoyo.
Investigue el análisis de riesgos para encontrar un buen formato para este documento. Debe especificar claramente los riesgos para la empresa para la gestión. Si puede cuantificar los riesgos de alguna manera, eso es algo que debe hacer. Consulte también la Plantilla de matriz de decisiones para saber cómo cuantificar las cosas en función de su importancia relativa.
@bobglausl: además de esto, sugeriría documentar el tiempo perdido debido a problemas con estas herramientas. Déles los números: estamos perdiendo X horas a la semana debido a errores con las herramientas que potencialmente podríamos corregir más rápido si tuviéramos acceso al código.
La única parte con la que no estoy de acuerdo es que este tipo se está construyendo un imperio en la infraestructura de la empresa . El OP no puede probar que esto sea deliberado. Hacer esa acusación no es necesario y es probable que suene como si todo el asunto fuera una uva agria. (Si leí mal y esto no fue solo una nueva redacción de la suposición original del OP de que el compañero de trabajo crea seguridad laboral, siéntase libre de ignorar esto).
@BSMP El tipo ya construyó el imperio. Aunque sea tan ingenuo que no se dé cuenta de ese hecho, o tan altruista que no pretenda hacer daño con ello, tarde o temprano alguien no tan ingenuo o altruista lo invadirá. Eso no es una "acusación" sino una "evaluación de riesgo" de la situación actual.
"a la que todos tienen acceso" ... Creo que quieres decir, "a la que varias personas tienen acceso".
Este es posiblemente un consejo terrible, hasta que sepamos más sobre la configuración política... Entrar en conflicto con el tipo. Tratarlo de manera amistosa e informal a nivel de grupo de OP es mucho menos riesgoso. No empieces una guerra si una conversación es suficiente. No tiene idea de que mgmt lo respaldará, e incluso si es posible que no sea la mejor manera de lograr las cosas.

Este es un problema de gestión .

Antes de implementar el código crítico, se debe controlar la versión, revisar el código y, al menos, se debe documentar el uso. Si le preocupa la seguridad, elija a los revisores correctos y proteja el repositorio y los documentos. No hay ninguna razón por la que esto no pueda iniciarse de inmediato.

Hay un problema más grande que la seguridad laboral .

Cualquiera de estos desarrolladores podría introducir código malicioso en la empresa, ya sea por error o por sus propios motivos. En el peor de los casos, podrían cometer actos nefastos utilizando la situación que ellos mismos crearon (extorsión, sabotaje, espionaje industrial, etc.). En el mejor de los casos, su opacidad expone a todos a problemas de seguridad y siempre deja un signo de interrogación sobre cualquier auditoría o responsabilidad. Si algo sale mal, ¿quién puede decir que no estuvieron involucrados de alguna manera?

Los comentarios no son para una discusión extensa; esta conversación se ha movido a chat .
Respuesta decente, pero aún no completa. Si la gerencia cree que el empleado es lo suficientemente impecable, no se conmoverá por esto. -- Si incluyera el riesgo de indisponibilidad (enfermedad/vacaciones, ser atropellado por un autobús), sería genial.
No estoy de acuerdo con tu peor escenario. El sabotaje es menos probable pero podría ser ruinoso para un grupo mucho más grande de personas. Perder inesperadamente un gran porcentaje de herramientas desarrolladas internamente podría ser el beso de la muerte para una organización pequeña o mediana que deja a todos sin trabajo.
@Myles Eso fue discutido en uno de los comentarios que se ha retirado.
@ jimm101 Al ver que está de acuerdo con los comentarios eliminados en que este es un punto débil en la respuesta, enviaré una solicitud de edición.
Agregaría que en bastantes casos, las vulnerabilidades de un software son, de hecho, puertas traseras instaladas por los desarrolladores de dicho software. Esto es muy común. A veces es solo para que los desarrolladores puedan pasar por alto algunas cosas para probar, pero si alguien más lo descubre...

Desafortunadamente, no ha dicho realmente si alguien ha hablado sobre estas preocupaciones con el compañero de trabajo o la gerencia. ¿Es realmente malicioso? ¿O su colega es simplemente ciego? ¿O tal vez la gerencia es ciega?

Yo mismo he sido "ese" tipo.

En mi trabajo anterior, a veces tenía varias tareas secundarias para "hacer esta pequeña herramienta" o para hacer algo simple. Resulta que nunca hay recursos para el software interno... Por lo general, era algo como esto:

-- ¿Alguien puede ver las soluciones que elegí para decir si es apropiado? -- Vamos, solo necesitamos una herramienta simple que simplemente haga esta operación simple, hazlo y estará bien.

-- ¿Puedo crear un servidor virtual en nuestro servidor para esta cosa? - Hombre, es solo para uso interno. Solo póngalo junto con otras cosas en esa caja física rota. O póngalo en esa caja que no sabemos qué funciones. O póngalo en su propia estación de trabajo.

Por supuesto, nunca hubo recursos de tiempo para escribir documentos. A menos que elija hacerlo en mi tiempo libre. Por supuesto, todo lo que podía decir cuando algunas herramientas tenían problemas era "trabajando en ello".

Y entonces decidí dejarlo. Ese fue el primer momento en que alguien a mi alrededor se dio cuenta de que las herramientas "pequeñas internas" eran realmente importantes y que las cosas "simples" no son tan simples. Pasé un par de fines de semana escribiendo documentos para fastidiar menos a mis colegas. Ha pasado casi un año y todavía recibo múltiples llamadas cada mes sobre cómo hacer algo con mis herramientas internas.

Editar

Algunos comentarios han señalado que no debería ayudarlos de forma gratuita. Esto es generalmente correcto. Quería aclarar que no estoy dedicando horas de mi tiempo a resolver sus problemas, solo estoy dedicando un minuto a responder una pregunta. Técnicamente, sigue siendo cierto que estoy habilitando y fomentando las prácticas existentes. Por cierto, la empresa me ha ofrecido un puesto a tiempo parcial o pago por hora para resolver problemas como lo hice antes y lo rechacé.

La cuestión es que no estoy dispuesto a obligar a mis ex colegas a "investigar mejor" en lugar de simplemente preguntarme "¿En qué máquina se ejecuta Veeam?" si puedo simplemente decir el nombre o la dirección IP sin pensar o decir "Debería estar escrito en [..]". Además, una llamada telefónica de 2 minutos con un ex colega suele ser una distracción tan positiva y relajante como visitar stackexchange.

editar fin

Entonces, ¿qué puedo sugerir? Tu colega parece muy capaz, ¿no? Discuta esto con la gerencia. No digas "se está volviendo insustituible". Solo pregúntales: ¿y si se va? ¿Qué pasa si se enferma durante un tiempo prolongado? Convéncelos de que el problema es real. Deberían discutirlo con ese tipo ellos mismos para encontrar soluciones. ¿Quizás simplemente le faltan recursos? ¿Tal vez necesita a otra persona en el equipo de "software interno" para que todo sea agradable y bonito?

"Almost a year has passed and I still receive multiple calls every month"- y seguirás recibiendo llamadas para siempre mientras sigas brindando soporte y documentación gratuitos (supongo que los fines de semana escribiendo documentos no fueron pagados). Ya no trabaja allí; si lo necesitan tanto, pueden pagarle las llamadas de soporte o para documentar/mantener los proyectos que entregó. Crees que estás ayudando a tus antiguos compañeros de trabajo, pero en realidad solo estás permitiendo que la gerencia continúe con las malas prácticas, poniendo a los desarrolladores restantes en la misma situación.
@brichins Culpable allí. Pero no puedo negarme a ayudarlos y no es tan malo sentirse necesitado e importante :D Para ser justos, la compañía ha tratado de volver a contratarme a tiempo parcial o por hora, lo cual me he negado y seguirá haciéndolo. .
¿Por qué no puedes negarte a "ayudarlos"? Incluso si los desarrolladores son amigos personales fuera del trabajo (muy diferente de los "amigos del trabajo"), a ellos se les paga por trabajar allí y a usted no. Llegar a sentirse “necesitados e importantes” a cambio de un trabajo no remunerado es una relación (indirecta) abusiva con la empresa. Brindar ayuda gratuita reduce el valor (percibido) de los empleados, establece una expectativa poco realista para los requisitos/costos del proyecto y alienta a los gerentes a seguir tratando mal a los desarrolladores. Acepta un pago equitativo directamente de la empresa o deja de trabajar gratis y socavar el futuro de tus amigos.
@brichins es completamente correcto. Debido a que se brinda soporte gratuito, la "gerencia" no tiene ningún incentivo para solucionar el problema y comprometer recursos (por ejemplo, antiguos compañeros de trabajo) para resolver el problema.
@Juris te sentirás más necesario e importante cuando te paguen por tu tiempo por horas. Diles que les darás x horas más de tiempo libre, y después de eso el medidor tiene que empezar a funcionar porque tienes otras responsabilidades por las que la gente te está pagando. Sorprendente cuánto mejor investigan las personas sus preguntas cuando también le pagan al contestador $ 80 por hora o lo que sea. Entonces, realmente, les estás haciendo un favor al cobrarles. Al conseguir que le den más valor a tu tiempo, estás haciendo que también le den más valor al suyo.
@BobRodes tal vez no me entendiste. No dedico tiempo a resolver problemas, solo respondo preguntas sobre qué y cómo lo he hecho.
Creo que algunos comentaristas aquí trabajan en entornos muy estructurados donde el desarrollo de software es el "trabajo central" de la organización. Pero hay muchas empresas que no son de software que todavía hacen "desarrollo de software" solo para satisfacer necesidades internas o como proyectos paralelos. Dichos lugares tienen una administración que malinterpreta por completo la naturaleza del desarrollo de SW, por lo que termina con proyectos ad-hoc, mala planificación y sin pensar en el mantenimiento. No es óptimo, pero es una forma en que MUCHAS personas comienzan. Cambiar tal organización es como hervir el océano para un individuo.
@Juris No, no creo que lo haya hecho, en realidad, aunque nuestras opiniones pueden diferir y eso está perfectamente bien. En mi opinión, si está dedicando algo de tiempo a ayudarlos, en algún momento debe dejar de hacerlo de forma gratuita. Hasta que lo haga, el punto de vista predominante allí será que es más fácil llamarlo y pedirle respuestas a preguntas triviales que encontrarlas por su cuenta. La gente generalmente busca la solución más fácil a sus problemas. Si te haces la solución más fácil ofreciendo soporte gratuito, te seguirán llamando hasta que empieces a cobrar.
@teego1967 Puedo simpatizar con este comentario porque yo he sido esa persona. No al nivel de la pregunta de OP, pero he creado varias herramientas y bases de datos para usar en toda la empresa (para una pequeña empresa de fabricación). En parte porque conocía el problema de primera mano, pero sobre todo porque si esperaba que la TI corporativa lo hiciera, nunca se resolvería. Sin embargo, siempre fue con la intención de "Probemos esto, y si funciona lo suficientemente bien, TI no puede darse el lujo de no admitirlo".

La mayoría de estas respuestas son MUY EXCESIVAS al asumir una intención maliciosa por parte del desarrollador en cuestión.

Antes de hacer una imagen subrepticia del servidor y luego sacar al tipo de la oficina, ¿por qué no tomar un respiro y tratar de entender qué está pasando?

Bien podría ser que la persona en cuestión esté sobrecargada de trabajo, no tenga suficientes recursos y esté más que dispuesta a compartir conocimientos. O tal vez lo ha estado haciendo de esta manera durante mucho tiempo y nunca ha recibido una indicación de que necesita hacer lo contrario. Como mínimo, especialmente si sus cosas FUNCIONAN, merece la oportunidad de resolver inquietudes y colaborar con sus compañeros de trabajo.

No veo evidencia de que se haya intentado nada de esto en la pregunta del OP. Antes de considerar opciones draconianas, intente comunicarse primero. Si la persona no tenía la intención de hacer daño, puede esperar su cooperación.

Tienen los recursos y el tiempo para desarrollar sus programas correctamente, es solo que no son cooperativos y sufren el mismo síndrome que los desarrolladores de Gnome 3, es decir, creen que saben mejor que los usuarios lo que quieren los usuarios. Sus programas funcionan la mayor parte del tiempo, excepto cuando no lo hacen; entonces no tiene nada, porque lo que está ejecutando en su máquina es un cliente ligero y no tiene acceso al servidor, por lo que puede Ni siquiera decir qué fue exactamente lo que salió mal. ¿Fue algo que hiciste? ¿Problemas de conectividad de red? ¿Servidor caido? No puedo decirlo, porque los errores tampoco son descriptivos.
@bobglausl: luego pídales que mejoren sus mensajes de error, como primera tarea.
Sí. Huelo a exceso de trabajo. Probablemente el tipo estuvo demasiado tiempo expuesto a la presión bruta de las aplicaciones internas críticas (que ahora son solo "herramientas" ya que ahora funcionan) y decidió dejar que sus insignificantes gerentes manejaran su responsabilidad por sí mismos. No prioricé el servidor git; está bien, no hay ninguno. No asignó administrador - bien, no hay ninguno. No programó tiempo para comunicar estos mismos problemas, está bien, así que no los aprenderá. Y finalmente se presionó en esa rutina y ahora la repite inconscientemente, incluso si ahora tiene más tiempo. quemado Solo mi suposición salvaje.
@bobglausl en la pregunta original dices 'un compañero de trabajo' en singular, pero luego en el comentario aquí dices 'ellos'. ¿Cuál es? Sospecho que está diciendo que la empresa es (¿ahora?) lo suficientemente grande como para pagar los recursos (pero no lo ha hecho), y que el compañero de trabajo ha terminado siendo el títere de ese "uso cuidadoso de los recursos". El compañero de trabajo puede haber estado allí cuando los recursos eran realmente escasos. En muchos sentidos es normal. No culpes a nadie, ayuda a todos. Todos necesitamos ayuda de vez en cuando.
@PhilipOakley 'Ellos' se puede usar para referirse a una sola persona. Ver en.wikipedia.org/wiki/Singular_they
@user985366 solo en algunos dialectos del inglés, entendido por un pequeño grupo de personas.
Singular, no es raro @Shautieh y se está volviendo más común todo el tiempo.
@MarkBooth plantea la pregunta de si los usuarios también están progresando hacia el singular (retórico/sonrisas). Es tanto la fuerza como la debilidad del inglés que se está transformando continuamente en el uso, el idioma y los malentendidos; Como dicen, Estados Unidos y Gran Bretaña, dos naciones separadas por un idioma común.
Históricamente (desde el inglés medio del siglo XIV), la forma singular de they era mucho más común, el inglés cambió hacia los pronombres masculinos en el siglo XIX y solo ahora estamos comenzando a revertir eso.
@MarkBooth común en algunos foros y sitios web partidistas estadounidenses, como puede mostrar una búsqueda rápida en Google, pero no en ningún curso formal ni conversación común en la mayor parte del resto del mundo. Como extranjero, prefiero aprender y hablar inglés correctamente y no jerga con problemas gramaticales.
Si la Reina puede ser 'nosotros', el resto de nosotros puede ser 'ellos' @Shautieh. Si quiere verse limitado por la misoginia victoriana, siéntase libre, pero su "inglés correcto" no es tan común como parece pensar, ni es apropiado en una sociedad abierta e igualitaria del siglo XXI. Sin embargo , se debe llevar más discusión a The Workplace Chat .
@Shautieh, el término "ellos" se usa en todas partes como un pronombre singular. No es un dialecto oscuro. Lo he escuchado de todos los ámbitos de la vida, en todas partes, en todo Internet. Creo que simplemente malinterpretas el idioma.
Este debate semántico pertenece a otra parte.
En cuanto a esta respuesta, la intención maliciosa o no realmente no importaba (tales cosas poco profesionales deberían excluirse del informe en cualquier caso); el riesgo es el mismo.
@DoritoStyle, absolutamente no, la intención del compañero de trabajo es lo más importante a considerar al decidir cómo responder. Alguien que no tenga intenciones maliciosas estará dispuesto a cambiar o cooperar y arreglar las cosas.
@ teego1967 Estoy completamente en desacuerdo. En esta situación, OP necesita hacer un informe sin emociones y sin pretensiones a la gerencia y deben considerar el riesgo. Las buenas intenciones no previenen el daño cuando la persona en cuestión de repente no puede trabajar.
No estoy de acuerdo. Este individuo está actuando de una manera que está poniendo su propio interés por encima de las empresas y, sin duda, bloquearía el acceso al código fuente, etc., si se le confronta.

Hay algo que aún no he visto en las otras respuestas:

Casualmente empezar a buscar un nuevo trabajo

Por supuesto, esto se basa en la suposición de que ya ha hablado con su gerente sobre esto. Otras respuestas han brindado las razones por las que este no es su problema sino el de su gerente y también han brindado sugerencias sobre cómo abordar esta conversación con su gerente.

Ahora, estoy viendo la situación en la que ha hablado sobre esto con su gerente y luego, después de que ha pasado un tiempo razonable, no ha sucedido nada al respecto. Tiene la sensación de que su gerente no considera que esto sea un problema tan grande como usted sabe que es.

Ahí es donde es posible que desee comenzar a buscar un nuevo trabajo. No importa si su gerente simplemente no piensa que esto es un problema o simplemente no lo entiende lo suficientemente bien como para ver el problema, hay algo mal aquí. (Y no estoy hablando del código "privado", sino del problema de que el administrador no hace nada al respecto).

Tal problema es algo que probablemente no podrá cambiar desde la posición de un desarrollador. Sin embargo, hay otras empresas y no tienen los mismos problemas, por lo que es posible que desee buscar un empleador diferente.

Sin embargo, viéndolo desde el lado positivo, no hay demasiada presión sobre ti en este momento. Tienes un trabajo y no esperas perder ese trabajo. No tendrá que hacer concesiones para poder seguir pagando el alquiler, la hipoteca o los costos de vida. Puede simplemente comenzar a buscar casualmente y no renunciar a su trabajo actual hasta que encuentre el trabajo que realmente le gusta.

El mal comportamiento de algún otro empleado no debería ser la razón para que usted deje su trabajo. Si yo fuera otro desarrollador en esa empresa, lo vería como una oportunidad: si el tipo en cuestión hace algo realmente estúpido, tendré su trabajo, con toda la seguridad laboral involucrada (hasta que arregle el lío, obviamente) .
@gnasher729 No es que el otro empleado se porte mal la razón para irse. Es el fracaso de la empresa para manejar esta situación y, por lo tanto, el fracaso para crear un buen ambiente de trabajo.
@Jasper ... y por lo tanto el fracaso de la empresa, punto final. Buscar un nuevo trabajo como red segura no es una mala idea.
No puedo creer que esta no sea la respuesta mejor calificada. He estado en esta situación exacta. O bien (A), el castillo de naipes se derrumbará y ahora está en tu cabeza arreglarlo porque el desarrollador malvado se fue, ya sea que mgmt reconozca o no o incluso le importe que era malvado y que tenías razón (B) mgmt continuará toma malas decisiones y eventualmente tendrá que despedir a la gente, y adivina qué... no te necesitan, pero el otro tipo está atrincherado, por lo que estás fuera. En serio, he estado allí y es algo cultural que no puedes cambiar más de lo que puedes lograr que los alemanes no beban cerveza en el Oktoberfest.
Ustedes tienen un excelente punto sobre la cultura de la empresa, pero aún no creo que la mejor solución sea buscar otro trabajo de inmediato. Muchas empresas pequeñas o nuevas aún están buscando la mejor manera de hacer negocios, por lo que el hecho de que un pequeño equipo de desarrollo tenga una supervisión "simple" (según los estándares de un gerente que puede no entenderlo completamente) no significa que toda la empresa está destrozado. Por supuesto que podrías dar en el clavo, pero según la información que tenemos, es difícil decirlo con certeza.
No veo cómo esto constituye dejar la empresa... no es un problema hasta que es un problema, en el que ahora mismo no lo es; es un riesgo
@AcumenSimulator, que es exactamente por lo que no sugiero que deje la empresa. En cambio, estoy sugiriendo que casualmente comience a buscar otro trabajo. Si encuentra un trabajo que le gusta más que este, cambiar de trabajo es una buena medida, sin importar si el problema es lo suficientemente grande o no. Si no lo haces, puedes quedarte quieto. Si la situación mejora, siempre puedes dejar de buscar.

Todas las respuestas actuales y la mayoría de los comentarios actuales solo indican la situación actual o brindan sugerencias para tomar medidas extremas.

Solo para resumir: hay dos situaciones posibles: los compañeros de trabajo están haciendo esto intencionalmente, en este caso son maliciosos de una forma u otra, y entonces es necesario extremar la precaución. O los compañeros de trabajo simplemente no ven los problemas y peligros potenciales y reales que están causando, entonces son "amistosos" pero se les debe enseñar a hacerlo mejor.

Por lo tanto, la siguiente hoja de ruta intenta dos cosas al mismo tiempo: 1) Intentar minimizar el daño potencial que pueden hacer esos compañeros de trabajo, si son maliciosos, y 2) tratar de mantenerlos en la empresa (para que puedan convertirse en cooperadores). compañeros de trabajo en el futuro) si son amistosos:

(por cierto: lo sé, usted no es el jefe, pero con la información que otros han proporcionado, supongo que tendrá todo en sus manos para convencer a su jefe, para tomar este hilo muy en serio, por lo que esta hoja de ruta aborda lo que su jefe podrías hacer, no lo que harías. Lo único que puedes hacer es llamar la atención sobre tu jefe. btw2: Si tu jefe todavía no te escucha, busca un nuevo trabajo y retírate tan pronto como lo encuentres. Porque que los compañeros de trabajo son bombas de relojería, independientemente de si son amistosos o maliciosos, eso no importa en absoluto).

1.) Realice copias de seguridad silenciosas de todo lo que puede acceder. No apague los sistemas en el proceso, apagar los sistemas podría desencadenar algunos tipos de trampas explosivas.

2.) Construya una razón por la cual las estaciones de trabajo deben cerrarse. Si necesitas una idea, contáctame por privado.

3.) Extraiga los discos duros, haga una imagen completa, vuelva a colocarlos. Haga esto durante un fin de semana más o menos

4.) Si los sistemas tienen elementos de detección de intrusos a nivel de BIOS, y no puede eludirlos, construya otra razón, por qué se activaron esos sistemas de detección de intrusos.

Esos compañeros de trabajo están creando herramientas para cosas internas, ¿verdad? ¿Entonces no necesitan acceso a los sistemas de los clientes y similares?

5.) Si tienen acceso a los sistemas, no necesitan cambiar las contraseñas, asegurarse de que no haya ningún tipo de inicio de sesión de clave pública, verificar los puertos en busca de procesos que permitan un inicio de sesión no estándar. Verifique los trabajos cron/at, verifique inetd, verifique todo lo que se está ejecutando actualmente. Para cada pid, debe poder responder por qué se ejecuta ese proceso.

6.) Consiga un nuevo empleado (realmente nuevo, completamente desconocido. Debe ser un muy buen experto, porque debe ser capaz de hacerse cargo de su trabajo solo durante algún mes si fuera necesario. No puede simplemente tomar algunos estudiante graduado al azar (ni siquiera uno con la calificación más alta), necesita a algunos de esos muchachos, que nunca visitaron una universidad pero aún lo saben todo) e insértelo en ese equipo para apoyarlos. Especialmente porque están bloqueando a los otros trabajadores, se puede justificar fácilmente. Su trabajo oficial es apoyarlos, su verdadero trabajo es aprender cómo operan.

El paso 6 es especialmente importante, porque de esta manera, tiene la oportunidad de averiguar si esos compañeros de trabajo son maliciosos.

Si el chico nuevo se está integrando bien en el equipo, entonces puedes asumir que son amigables, ese chico nuevo debería poder implementar los cambios necesarios sin necesidad de decirles a esos chicos que ha habido alguna sospecha en su contra.

Si el chico nuevo se da cuenta, son maliciosos, pero lo integran, entonces su trabajo es seguirle el juego. Aprende todo, encuentra genial lo que están haciendo, y así sucesivamente. Págale el doble de dinero, porque tiene que trabajar dos veces, porque una vez que llega a casa, tiene que escribir todo lo que aprendió y enviarlo a algún equipo recién formado que debería hacerse cargo del trabajo tan pronto como se haya transferido suficiente conocimiento.

Si los tipos maliciosos no lo integran, entonces su única oportunidad es esperar, tiene suficientes datos respaldados (solo para el caso) y despedir a ese equipo. Entonces, es posible que necesite dos o más de esos súper expertos de los que estaba hablando anteriormente, para que un nuevo equipo ingrese a ese código muy rápido.

Espero que esta hoja de ruta ayude, al menos como fuente de inspiración sobre cómo manejar esto. Tal vez, en su empresa, tiene algunas opciones que no puedo considerar, tal vez, hay algunas diferencias culturales, por lo que aún debe pensar en esto y tal vez ajustar el plan.

Excelente respuesta: aunque algunos de estos pasos serían innecesarios, ya que, por ejemplo, nuestras computadoras están muy estrictamente controladas por el equipo de TI, lo que significa que la modificación del BIOS está fuera de discusión, me aseguraré de sugerir un curso de acción similar a la administración. Todavía no puedo aceptar que esa persona sea capaz de realizar cualquier acción maliciosa, pero las respuestas aquí realmente me han convencido de cuestionar sus motivos.
Estaba pensando en esos sistemas estándar de detección de intrusos que se encuentran en muchas PC de serie hoy en día, no en algo que esos compañeros de trabajo podrían haber construido ellos mismos.
Y tenga en cuenta también la respuesta de @Juris. Todavía entraría en la categoría de amigable, pero es posible que ni siquiera necesite que se le enseñe nada, solo con el apoyo de desarrolladores adicionales.
Creo que el problema aquí es que UN empleado es potencialmente malicioso, no todo el equipo. Sin embargo, sigue siendo una buena respuesta.
Primero, el OP dijo "un compañero de trabajo" y luego dijo "Ellos". Entonces, no está muy claro si es uno o muchos. Pero escribió en plural la mayor parte del tiempo en el resto de su publicación, así que supongo que es un equipo completo.
@ bobo-thiesen has leído mal el contexto allí. El pronombre se refiere al sujeto "mi compañero de trabajo", que es claramente singular.
"Si necesitas una idea, contáctame en privado". Tal declaración realmente no pertenece a SE. (Si lo hiciera, ¿no cree que SE habría tenido un sistema de mensajes privados?)
@Jasper: Si no le gusta mi respuesta, mejórela (y vea si sus mejoras son aceptadas por mí o por los cuervos) o escriba la suya propia.
Informar al autor sobre un problema en su respuesta es un uso perfectamente razonable de los comentarios . Como parece que prefieres que haga una edición, lo haré. No sé qué omitió, por lo que dejará un "agujero" en su respuesta, pero es una mejora con respecto a la situación actual. Además, escribí mi propia respuesta. Nada de eso quita el hecho de que "contáctame en privado" no debería estar en una respuesta.

Parece que hay algunos buenos remedios aquí para prevenir esto en el futuro, pero no qué hacer al respecto ahora.

  1. Asegure la computadora. Haga que la gerencia y un experto en TI lo revisen cuando esté desbloqueado y desatendido, o vaya y exija que desbloquee la máquina y le conceda acceso. Entonces saca a este monstruo de la red. Haga una imagen inmediata del HD en caso de que tenga un interruptor de hombre muerto.

  2. Despida a este individuo inmediatamente. Sal con él por la puerta. No te preocupes por la causa, habrá muchas pruebas en esa computadora suya. Si la empresa está preocupada, que su abogado haga su magia, para eso les pagan.

  3. Reúne al equipo. Explique lo que pasó. Este individuo estaba actuando de manera imprudente y poco profesional. Puso en riesgo a la empresa y fue despedido por eso. Vamos a necesitar todos los recursos que tenemos para solucionar este lío.

  4. Use el equipo para reconstruir y volver a implementar este trabajo de manera adecuada en máquinas seguras, etc. El equipo tendrá que revisar aplicación por aplicación y controlar las cosas. No se preocupe de inmediato por reescribir, solo asegúrese de que no haya puertas traseras, etc., luego obtenga los servicios en hardware nuevo y controlado.

  5. Consiga a un experto en seguridad. Este tipo probablemente no se irá en silencio e intentará 'piratear' nuevamente para sabotear u obtener acceso a su sistema. También puede tener contraseñas globales para los sistemas con los que interactuó u obtuvo contraseñas individuales a lo largo del tiempo. TI debe activar un restablecimiento de contraseña forzado en todos los usuarios y bloquear cualquier acceso externo por un tiempo (como VPN).

Esta es una buena respuesta, pero se beneficiaría al aclarar que el OP necesita que la administración haga esto. @emory Esta respuesta es extrema y puede hacer suposiciones sobre el individuo que no son ciertas. Pero hacer cualquier cosa sin una copia de seguridad completa de la máquina de esta persona es extremadamente arriesgado. Si no restringe el acceso desde el momento en que informa a este empleado que está realizando una copia de seguridad hasta el momento en que finaliza la copia de seguridad, corre el riesgo de que el empleado se enoje y tome medidas perjudiciales para la empresa.
Una respuesta más "moderada" sería asegurarse de que se tome una imagen de respaldo de su computadora y luego decirle que necesita tener todo bajo control de versiones, etc. Básicamente, darle la oportunidad de "hacer lo correcto" antes de volverse nuclear. pero protégete de las consecuencias si no lo hace.
@ jpmc26 Estoy de acuerdo en que esta es una respuesta dirigida a la administración (no a OP). Para la gestión, recomiendo text.sourcegraph.com/… sobre este enfoque.
Los comentarios no son para una discusión extensa; esta conversación se ha movido a chat .
Suenas divertido (¡NO!)
Esto parece increíblemente duro. ¿Qué es el tipo es simplemente incompetente?
@TheGreatDuck esta es una situación muy peligrosa para la empresa. Si la computadora de este individuo experimentara una falla en el disco duro, la pérdida podría ser catastrófica. Entonces, incluso si es incompetente, esta es una reacción justa y una razón aún más importante para eliminarlo del equipo.
@BillLeeper "Asegure la computadora. Haga que la administración y un experto en TI la revisen cuando esté desbloqueada y desatendida, o vaya y exija que desbloquee la máquina y otorgue acceso. Luego saque a este monstruo de la red. Haga una imagen inmediata de el HD en caso de que tenga un interruptor de hombre muerto". Creo que incautar la computadora personal de la casa de la persona y convertirla esencialmente en propiedad de la empresa es bastante extremo. Parecería mucho más razonable, en mi opinión, simplemente pedirle al tipo el código fuente y explicarle el problema. Esta respuesta asume automáticamente que el desarrollador es malicioso, lo que es descaradamente grosero.
Si saliera mal, ninguno de estos pasos te salvaría. Más bien traerían el desastre sobre vuestras cabezas al instante.

Al programador en cuestión no se le debe dar ningún trabajo nuevo hasta que la situación se resuelva de una forma u otra. Todos los nuevos requisitos deben ir a otro desarrollador/equipo que debe seguir los procedimientos adecuados de control de fuente y revisión por pares (nuevas contrataciones si es necesario). El programador en cuestión puede mantenerse ocupado reparando defectos o "apagando incendios" de su legado existente. Se deben asignar recursos para aplicar ingeniería inversa al legado existente y volver a implementar mediante los procesos apropiados. El costo de hacer esto tiene que estar justificado por el riesgo existente: ¿cuánto le costará a la empresa si todo lo que ha hecho este programador se pierde repentinamente? O peor aún, ¿qué datos propietarios (de la empresa) son vulnerables a la pérdida frente a la competencia?

Quizá merezca la pena preguntarle a este empleado: "¿qué nos pasa si te atropella un autobús o decides hacer un crucero de un mes alrededor del mundo?" y mida la respuesta para decidir si entregará su código voluntariamente. Si coopera, no hay necesidad de que la situación se vuelva antagónica; si no hay señales de preocupación por la empresa de su parte, es hora de ocuparse de asegurar todo lo que ha tocado.

Vacaciones obligatorias - text.sourcegraph.com/… - puedes hacer realidad ese crucero de un mes
OP está hablando de un compañero de trabajo . No es su función actuar sobre esto excepto levantar una bandera roja a la gerencia.

Este no es su problema, esta es la responsabilidad y el rol de los gerentes, usted es solo un compañero de trabajo y posiblemente no tenga toda la información necesaria. Me preocuparía más por mis propias tareas que por involucrarme con mis compañeros de trabajo. No veo cómo podría salir algo positivo de armar un escándalo por tu compañero de trabajo.

Te enemistarás con él, acusarás a tu jefe de incompetente y darás la impresión de que tienes tan poco trabajo que tienes tiempo para iniciar investigaciones internas sin que te lo pida ni tengas autoridad para hacerlo.

El problema es que los resultados de mis propias tareas dependen del software que está desarrollando esa persona, y dado que ese software no es de muy alta calidad y es propenso a errores, me ralentiza.
Acéptalo cuando afecte a tus tareas, no como un todo. Esta es una forma normal de tratar los problemas a un nivel inferior. Suponiendo que tiene un sistema de solicitud de reparación, utilícelo. Pero no saltes de un lado a otro tratando de que despidan al tipo porque te está 'ralentizando'.
El compañero de trabajo se convierte en el problema de @bobglausl tan pronto como muere la empresa. Así que es su problema.
@BodoThiesen sí, y el gerente es incompetente, así que ese también es su problema, y ​​el director ejecutivo no tiene los ojos puestos en el suelo, así que ese es su problema, y ​​la señora de la limpieza no apagó el gas, así que ese es su problema, y el cliente no sabe lo que le conviene, y el taxista del jefe es un borracho...etc,. En algún momento, debe ser realista y pragmático y preocuparse por usted, no por los demás.
Cuando se trata de la decisión de quedarse o irse, esto se convierte en asunto suyo.
@bobglausl: Así que haga que el tipo haga un poco más de pruebas y mejore sus mensajes de error. O al menos elabore un plan de prueba, contrate a un probador junior/QA/SET para hacer el trabajo sucio y que el tipo les enseñe. Parece un enfoque más cordial. Es muy probable que trabajar con un probador mejore su código.
@Kilisi, todos en el equipo de software son propietarios del software y son responsables de que sea terrible. Las mejoras a la capacidad del software resultante son responsabilidad de todos.
@Gusdor no, soy responsable de mis tareas, el gerente es el responsable general y debe tener una supervisión clara, su jefe es responsable de él y de los demás y debe tener una supervisión clara de su trabajo... ¿alguna vez ha oído hablar de una jerarquía? No soy responsable de mis compañeros de trabajo y no voy a adelantarme a mi rol de gerente. No tengo su sueldo, ni tengo acceso a su información.
@Kilisi Si encuentra una falla grave en el trabajo que no se le asignó, ¿dejará que el producto falle y que su colega sufra porque no se le asignó a usted? Suena como una cultura de equipo muy divertida.

¿Cómo acercarse a la gerencia sobre esto?

Diga que la mejor práctica es no permitir esto, por muchas razones.

Los programadores profesionales deben saber que esta no es forma de administrar un negocio; y si los gerentes no saben nada más, al menos deberían saber eso (los programadores deberían decirle a los gerentes y/o los gerentes deberían decirle a los programadores).

Las razones son tan conocidas que no necesito decírtelo. Incluyen "respaldo", es decir, está en problemas si pierde al programador (o si lo reasignan a otra cosa), o si el programador pierde su máquina.

Al menos tiene el "control de versión de la empresa", por lo que no necesita pelear esa batalla; solo haga que sea un requisito de trabajo/proceso que realmente se use.

Probablemente no debería ejecutar software de producción en la máquina del desarrollador. Un primer paso podría ser insistir en que:

  • Los usuarios no hacen conexiones de red a la máquina del desarrollador
  • El software se ejecuta en/desde un servidor de producción
  • El software que se ejecuta en el servidor de producción debe ser compilable por otra persona (o por una máquina de compilación), desde el control de código fuente

La implementación requiere que se registre el código fuente y se publiquen las instrucciones de compilación. Te sugiero que lo hagas como una semi-emergencia. No permita que el desarrollador tenga acceso de escritura al servidor de producción o a la máquina de compilación (para verificar que el código de producción se pueda compilar desde el control de versiones).

Una vez que haya hecho eso (después de saber que el código fuente está bajo control de versiones y que las instrucciones de compilación están publicadas), otros desarrolladores pueden pensar en inspeccionar el código fuente y ayudar a mantenerlo.

Tenga en cuenta que Deshágase del programador indispensable lo más rápido posible fue publicado por Gerald Weinberg en 1971 (así que, en realidad, todos deberían saber esto ahora). IIRC la cita original es,

"Si un programador es indispensable, deshazte de él lo más rápido posible".

No sé si solo eres tú u otros en la empresa, pero todos pueden ser reemplazados. Puede haber retrasos, pero puede y debe hacerse cuando las personas no hacen su trabajo. Sus gerentes no están haciendo lo suyo.

Estos desarrolladores están rompiendo casi todos los estándares básicos de codificación. La gerencia debe tener alguna idea de que algo anda mal, pero no hacen nada al respecto. No los veo como una solución a tu problema.

Necesitas tener seguridad laboral también. Si hay un error específico que necesita corregir, obtenga el código fuente. Si está en su computadora, dígales que lo copien en otro lugar. Si tienen derechos sobre los servidores de producción, quíteselo. Pueden ir y quejarse a la gerencia si quieren. Te estarán haciendo un favor y exponiendo su incompetencia.

Con suerte, alguien se dará cuenta de que todo el código debe estar centralmente ubicado y respaldado. Esta es propiedad de la empresa y todos los involucrados deben querer asegurarla. No dejes que se salgan con la suya con este lío. No tienen propiedad de nada y ni siquiera han mostrado la más mínima habilidad para supervisar la propiedad intelectual de la empresa.

La pregunta es, ¿cuántas ganas tienes de salir de este círculo vicioso? Porque no seamos monos con esto, le va a costar a la empresa.

  1. La empresa tendrá que gastar dinero para contratar a alguien que escriba el código que controla la empresa.
  2. La empresa tiene que exigir el código del codificador y respaldar esa demanda con ayuda legal si es necesario. Señalaré que el código fue encargado por la empresa, que el codificador obtuvo un cheque de pago de la empresa mientras escribía el código, por lo que el código es de la empresa. Si el codificador no produce el código, en el peor de los casos se consideraría robo, lo que constituiría un delito penal.

La libertad no es gratuita. Si la empresa no está dispuesta a gastar recursos para liberarse de este individuo, entonces todo lo que está haciendo es agitar las encías. Todos ustedes van a tener que enfrentar la situación, porque si el codificador se aleja o lo atropella un camión, la firma es SOL.

Considere la razón por la que están haciendo esto. Es muy posible que se estén tomando atajos para ajustarse a las limitaciones de tiempo, los objetivos de rendimiento y las demandas en constante aumento. Esto a menudo conduce a una deuda técnica y a un codificador muy estresado que no tiene más remedio que solucionar todos los problemas desde el principio.

Es posible que esta persona esté escribiendo cosas de una manera que solo ellos pueden arreglar porque no tienen tiempo para documentar, crear versiones y mantener el código de manera oportuna. Confía en mí cuando digo que esto tiene un efecto completamente negativo en cualquiera que se encuentre en esta posición. No es un papel cómodo donde alguien puede sentarse y relajarse.

Si, como sugiere su título, no están resolviendo problemas, no habría problema. Simplemente tirarías al codificador, con todo su código, porque es inútil.

Sin embargo, "no verificar el control de versiones" es la bandera roja aquí. Si es posible, no hay una buena razón para hacerlo (obviamente, puede haber obstáculos burocráticos para agregar sus propias cosas al VC de la empresa, en cuyo caso no es deliberado)
@ pjc50 Eso es más o menos lo que estaba pensando aquí. Si hay restricciones para escribir código que está disponible públicamente, pero hay obstáculos que superar antes de abrir un nuevo repositorio privado. Solo hay una opción que permite que el software se entregue con una prisa irrazonable.

Prevenir situaciones como esta es una tarea de gestión extremadamente básica. De ello se deduce que la dirección que es consciente del problema no es competente, y la dirección que es competente no es consciente.

Desafortunadamente, desenredar situaciones como esta es una tarea de gestión difícil. Entonces, dado que los gerentes a cargo de este desarrollador ni siquiera fueron capaces de prevenir la situación, no cuente con que puedan solucionar la situación.

La única* forma de solucionar esto es ascender a un nivel superior de gestión. Si están interesados ​​y pueden solucionar esto, ni siquiera tiene que explicar nada más de lo que nos explicó a nosotros, simplemente hágalo menos personal centrándose en los programas y los problemas con ellos, en lugar del programador.

Debe saber que esta es una opción de alto riesgo y baja recompensa . Si hace esto, incluso si funciona, el desarrollador y su gerente (que probablemente también sea su gerente) sufrirán y sabrán que usted es el responsable. El único beneficio que obtiene al hacer esto es que (posiblemente) está siguiendo su propio código de ética y honor, pero podría perder su trabajo por ello. Es por eso que algunas de las otras respuestas recomiendan dejarlo ir o simplemente buscar un mejor trabajo, que es lo más inteligente.


* La otra forma de arreglar esto es convertirte en administrador y arreglar esto, pero hay bastantes escollos involucrados.

Después de su propia autoevaluación, ha decidido que no tiene la oportunidad de ser promovido y que la única razón por la que la empresa tendría que retenerlo es que les está ocultando el código.

No sé si está de acuerdo con esto, pero si lo está, probablemente alguien mejor podría hacer el código. O si no explica por qué este comportamiento asegura que nunca podrá ser ascendido.

Creo que se trata tanto de si vale la pena arreglar esta situación como de cómo arreglarla.

Esta es una tarea de la gerencia. Primero, la gerencia debe tratar de descubrir si esto es intencional. Si es así, se debe hacer un plan para despedir a las personas infractoras. Si no es intencional, se debe hacer un plan para capacitar a las personas infractoras.

Ellos diseñan sus programas... para que sean poco a poco más difíciles de reemplazar.

¡No si yo fuera el jefe!

Hay dos problemas aquí:

  1. Mal programador.

  2. Gestión incompetente.

Esto es, por supuesto, asumiendo que estás representando la situación correctamente.

No puedes arreglar el problema #1. Existe una pequeña posibilidad de que pueda abordar el problema n.° 2. Esta pequeña posibilidad es si el jefe, por alguna razón, simplemente no está al tanto de lo que está sucediendo. Vaya con el jefe y cuéntele los problemas que ve y por qué son malos para la empresa. Es probable que eso falle porque el jefe ya conoce el problema y no es competente para abordarlo, o sabe tan poco sobre el software y la gestión de ingenieros de software que ni siquiera es competente para comprender el problema.

La única solución real es comenzar solucionando el problema n.º 2, en el que, en el mejor de los casos, puede desempeñar un papel menor. El gerente incompetente debe ser reemplazado.

Luego, el nuevo gerente se sienta con este programador, le pide que explique la arquitectura y le dice que detenga cualquier desarrollo nuevo y documente todos los protocolos. Mientras tanto, consigue un nuevo ingeniero que está allí para "ayudar" al primer ingeniero a documentar los protocolos, poner el software en control de código fuente y asegurarse de que el código en sí esté bien documentado. Este nuevo ingeniero realiza cualquier nuevo desarrollo y, con suerte, corrige errores y realiza mejoras menores del software existente.

Al primer ingeniero no le gustará esto. Puede renunciar, hacer una rabieta, objetar ruidosamente o, peor aún, sabotear las cosas. Es por eso que hacer una copia de seguridad es la primera orden del día. Sería bueno tener una transición suave del primer ingeniero al segundo, pero no espere que eso suceda. El plan es eventualmente despedir al primer ingeniero, si no renuncia o se vuelve (aún más) destructivo contra la compañía primero.

Simplemente no puedes dejar que estas tonterías continúen. Cuanto más lo haga, más doloroso será finalmente arreglarlo. No arreglarlo porque ya será doloroso es absolutamente la forma incorrecta de pensar sobre esto.

En este caso estaba usando el retórico "tú". Para responder a la pregunta de qué puede hacer usted personalmente, comience por llevar sus inquietudes al jefe, como dije anteriormente. Una vez más, es poco probable que resulte en algo útil.

El siguiente paso depende de cosas que no nos has dicho. Puede ser muy peligroso pasar por encima de la cabeza de tu jefe. Si es así, poco más puedes hacer aparte de evaluar si realmente quieres seguir trabajando allí. Si se trata de una empresa lo suficientemente pequeña en la que puede hablar cómodamente con la alta dirección, entonces adelante. Es muy posible que la gerencia superior ya tenga la sensación de que el administrador de software de bajo nivel es incompetente, pero por supuesto no le dirán eso. Esta podría ser la información adicional para que tomen medidas más decisivas.

Otra posibilidad lejana, si su objetivo principal es arreglar este lío y se ve a sí mismo como un trabajador a largo plazo en este lugar, es ofrecerse a asumir parte del desarrollo de herramientas internas usted mismo. Eso debería darle una razón legítima para hablar con el primer ingeniero, comprender cómo funcionan las cosas, dónde vive el código, etc. Eventualmente, usted será el encargado de las herramientas y la gerencia puede deshacerse del primer ingeniero. Luego, puede pedirles que contraten a alguien para ese rol para que pueda volver a hacer la transición a lo que quiere hacer. Nuevamente, esto no es algo que esté sugiriendo seriamente, pero es una alternativa si realmente quieres y estás dispuesto.