¿Cómo lidiar con un compañero de trabajo mayor con hábitos de trabajo potencialmente malos?

Como algunos antecedentes, soy el líder del equipo.


Hay un desarrollador sénior en mi equipo que no impulsa su código en absoluto.

Se compromete con la rama maestra directamente y coloca el código en una rama de producción sin que primero se haya versionado correctamente.

No abre ramas de funciones de acuerdo con el flujo de trabajo, y cuando se le pide que organice todo, regresa y dice que tenía prioridades más altas, como implementar cosas nuevas en producción.

Desde mi perspectiva, seguir algunas prácticas simples en un flujo de trabajo de desarrollo y tener todo el código correctamente controlado y cargado en el servidor Git es parte de cualquier tarea que implique lidiar con código compilado o artefactos.

Para mí, el código de nuestra rama principal debe poder implementarse y las ramas de desarrollo deben ser confiables. Esto es para hacer posible que otros desarrolladores abran sucursales.

Mis palabras finales sobre este tema son: tener el código correctamente versionado y fusionado en ramas adecuadas es " sine qua non " para cualquier tarea de desarrollo. Cualquier desarrollador senior debe cuidar bien el código.

¿Cómo convencer a este desarrollador para que deje de hacer esto?

¿Cuáles son los riesgos de que continúe con esto?

¿Es esto un bloqueador para otros miembros del equipo, o me equivoco?

Los comentarios no son para una discusión extensa; esta conversación se ha movido a chat .
No tengo mucha paciencia con las personas que deliberadamente no aceptan instrucciones. Dele a esta persona una oportunidad, enfatizando que la adherencia a los estándares es un requisito del trabajo. Si siguen sin cumplir, despídelos. Gente como esta es un gran lastre para la eficiencia.
Github, Gitlab y la mayoría de los servidores git permiten sucursales protegidas. Bloquee su rama maestra para que nadie pueda empujar directamente.
Puso en negrita la palabra "senior" para marcar el término como irónico en este caso, ¿verdad? Eso espero...
@RaduMurzea, no fue irónico, lo contrataron como desarrollador senior
@Testa Ha pasado un tiempo desde que preguntaste esto. ¿Hay alguna actualización al respecto? ¿Se resolvió este problema? Si es así, ¿cómo?
solo VTC. Este q hace tres preguntas: la primera se trata de convencer a un compañero de trabajo, la segunda es muy específica y merece estar en un sitio SO diferente, la tercera es específica de la empresa. Si alguna de estas preguntas se hiciera como una sola pregunta, se cerrarían o se engañarían.
Los repositorios modernos de git permiten bloquear las inserciones de rama sin solicitudes de extracción. Esto, combinado con un flujo de trabajo automático de compilación e implementación que todos deben seguir, debería funcionar.

Respuestas (10)

Las otras respuestas cubren mucho, pero agregaré algo ligeramente diferente.

¿Por qué sus procesos le permiten acceder a cualquier servidor de producción de forma abierta?

Debe configurar su sistema de implementación para que sea automatizado, reproducible y cerrado; nadie debería poder eludir el sistema de implementación.

  1. Elimine el acceso de todos los desarrolladores a los servidores de producción. Permítales el acceso remoto a los registros del sistema y los depuradores, pero eso es todo.

  2. Ejecute toda su compilación y empaquetado de código a través de un sistema de integración continua, como TeamCity.

  3. TeamCity crea sus sucursales y etiquetas específicas en git; haga que ejecute las pruebas unitarias y las pruebas de integración.

  4. Implemente todo su código a través de un sistema de implementación automatizado como Octopus Deploy: esto tomará la salida empaquetada de su sistema CI y la implementará de manera automática y reproducible en cualquier entorno que haya configurado. Puede implementar ramas específicas en su entorno de desarrollo, promocionar esos paquetes a UAT o Producción, y nunca permitirá que sus desarrolladores se metan en la producción. También le brinda un registro de auditoría completo de lo que se implementó y dónde.

Utilice los procesos para hacer cumplir las restricciones a sus desarrolladores; hasta que lo haga, siempre encontrará a alguien eludiendo sus procesos manuales porque son "mejores que usted".

Si sus desarrolladores no tienen derechos de administrador en los servidores de producción, no pueden eludir sus procesos.

Sus procesos de implementación son parte de su sistema: en el caso de una reconstrucción del servidor, debería poder implementar todo su código de la misma manera que antes. Encontrará esto increíblemente difícil de hacer cuando el proceso de implementación es manual, ya que hay mucho sin documentar, mientras que si el proceso de implementación está automatizado, al menos la configuración de automatización actúa como documentación mínima: solo hace clic en un botón y tiene todos los paquetes relevantes implementados. al nuevo servidor. Sin problemas, sin problemas, recién hecho.

Editar: también, vea mi respuesta a Cómo evitar las malas prácticas de trabajo por parte de los empleados , ya que también es relevante para su situación. Debe actuar como el guardián, y para hacerlo, debe poner en práctica algunas puertas.

Segunda edición: algunas personas en los comentarios han expresado su preocupación de que esta no es una solución inmediata; desafortunadamente, a menos que el desarrollador en cuestión tenga una epifanía de la noche a la mañana, nada menos que la partida del desarrollador será una solución inmediata.

TeamCity y Octopus Deploy (no es necesario que los use, hay otros por ahí) son bastante fáciles de poner en marcha: deberían tardar un día más o menos en instalarse y configurarse, más una hora más o menos por proyecto. configuración.

Sin embargo, incluso el simple hecho de iniciar el proceso de automatización del proceso de implementación debería desencadenar algo en el desarrollador del problema: debería mostrarles de inmediato hacia dónde sopla el viento, y eso puede ser suficiente para que tomen una decisión de una forma u otra. ¿Deberían quedarse y alinearse con el liderazgo del equipo, o deberían continuar siendo insulares y arriesgarse a tener que irse...

Otra cosa a tener en cuenta es que lo que está haciendo este desarrollador es mostrar a otros miembros del equipo que pueden salirse con la suya con una mala práctica. Apuesto a que hay otros miembros del equipo que corrigen silenciosamente en producción, ocultan errores, etc. tipo de cosas que rápidamente lo llevarán a no poder reconstruir un sistema de producción idéntico si surgiera esa necesidad. Y créeme, surgirá.

Y si el desarrollador inconformista decide renunciar por perder el acceso a la producción, probablemente usted esté mejor.
@ jpmc26 Estoy de acuerdo con todo eso. Voté esta respuesta por contribuir con información real, útil e incluso técnica al problema. En general, las buenas empresas son mejores para no tener problemas que para tratar con empleados que los tienen. Nuevamente, esta no es la respuesta al problema, pero es información muy buena y relevante.
@djechlin La única forma de "no tener problemas" es teniendo un equipo que sepa prevenirlos. Este desarrollador no contribuirá a eso, a menos que cambie su enfoque drásticamente. Una empresa es solo gente; sus políticas se componen de las decisiones de esas personas.
@ jpmc26 idk, en mi empresa el personal de limpieza solo lava los platos. así que de alguna manera nunca tendremos que lidiar con imbéciles que no lavan los platos. pero mi residencia universitaria tenía ese problema y era un gran problema. parece que alguien no le enseñó a este tipo qué es un buen proceso de construcción cuando se unió y ahora cree que puede ejecutar cosas. se cometió un error en la contratación o capacitación. La respuesta de Moo evitará parte del problema para la próxima contratación.
Este es un buen sistema futuro al que apuntar, pero no resuelve el problema inmediato, ya que primero debe implementarse, presumiblemente por parte de los desarrolladores actuales.
@Peter bueno, voté para reabrir fwiw.
Esta respuesta sugiere un gran cambio en los procesos y la tecnología, sin abordar realmente el problema real, que es que el empleado se niega flagrantemente a seguir instrucciones simples y claras de su supervisor. Continuamente. En el largo plazo. Sacadlo.
@djechlin Gracias. respuesta agregada y comentario eliminado
Si se trata de un equipo pequeño (dos o tres desarrolladores, cada uno de los cuales tiene muchas funciones), a veces no tiene más remedio que darles todo el acceso a la producción. Pero con un equipo tan pequeño, cada miembro debe confiar entre sí al 100 % y debe haber procesos que eviten que ocurra este comportamiento. Parece que este desarrollador 'senior' no es de confianza. Ese es el mayor problema ahora.
@LightnessRacesinOrbit, por el contrario, siento que resolver el problema con una persona no resuelve el problema a largo plazo. eventualmente se repetirá incluso sin un "actor semi-malicioso" como en este caso, pero debido a accidentes o acciones bien intencionadas con prisa y necesita arreglar su proceso de implementación y versiones para solucionar eso.
@LightnessRacesinOrbit tratar de resolver problemas personales y culturales con procesos y procedimientos debería ser el primer paso. No solo abordará este caso concreto sino que evitará que se repita en el futuro.
@angarg12: Dentro de lo razonable, claro. Sin embargo, alterar el flujo de trabajo de toda su empresa porque alguien se niega a seguir instrucciones simples es al revés. Primero, ponga a su gente en fila.
Estoy en una posición similar con un problema similar. No haría esto principalmente porque 1) simplemente no tenemos suficientes desarrolladores con los que alienarme para empezar y 2) el problema la mayoría de las veces no son los desarrolladores sino la gerencia de proyectos que quiere todo para ayer, pero nos estamos moviendo hacia este tipo de sistema principalmente por razones muy similares.
Los desarrolladores deberían poder acceder a los sistemas de producción pero no cambiar nada. Puede haber información muy valiosa a la que no se puede acceder fácilmente de otra manera.
@ThorbjørnRavnAndersen no, no de forma regular; eso sería una violación del RGPD por un lado, y una falla en las configuraciones de su entorno de desarrollo, prueba y preparación por otro. La producción no debe ser un entorno de unicornio único, debe ser idéntico a los otros entornos en los que trabajan sus desarrolladores, de lo contrario, está introduciendo problemas.
@moo gpdr es un problema aparte. La producción rara vez es 100% idéntica a los otros sistemas y puede tener características que solo puede identificar con el acceso.
@ThorbjørnRavnAndersen no, GDPR no es un problema aparte: si tiene acceso a producción, entonces tiene acceso a PII real en la mayoría de los casos. Eso es un problema de GDPR. Y realmente debería esforzarse por reducir las diferencias entre sus entornos de desarrollo y sus entornos de producción porque eso elimina el punto que está tratando de usar para apuntalar su posición. Si su entorno de producción tiene características que solo se manifiestan en la producción, entonces su configuración es malaaaaaaa y debería arreglarse, y cualquiera que le diga lo contrario debería ser despedido.

Hágale saber que está involucrado en una insubordinación y que habrá consecuencias por su insubordinación. Dígale que parte de su trabajo es proteger la integridad del proceso de creación de la ingeniería de software y que él lo está aprovechando.

Si continúa, corte su acceso al servidor maestro y de producción. Luego dígale que está en un PIP donde su primera tarea será explicarle cómo pretende en el futuro cargar su código en el Maestro y la unidad de Producción (*).

Como líder de equipo, necesita un desarrollador senior. No necesitas dolor de cabeza. En particular, un dolor de cabeza que juega a prima donna y actúa como si las reglas se aplicaran a todos menos a él.

(*) Tiene que decírtelo, porque ya se lo dijiste explícitamente, y no tomó lo que le dijiste lo suficientemente en serio como para entenderlo. Cuando la razón no funciona, pruebe la religión, por ejemplo, la cosa del "relámpago en el camino a Damasco". Soy extremadamente flexible en mis métodos y enfoque de gestión :)

Los comentarios no son para una discusión extensa; esta conversación se ha movido a chat .

Y cuando se le pide que organice todo, responde y dice que tenía prioridades más altas, como implementar cosas nuevas en Producción.

De todo en la pregunta, este me parece el mejor ángulo para actuar. ¿Quién establece sus prioridades? Si sus equipos están organizados como los nuestros, es responsabilidad del líder del equipo establecer sus prioridades. Por lo tanto, hágale saber que reconoce que no le está comunicando sus prioridades lo suficiente y que hará un esfuerzo adicional para asegurarse de que se comuniquen correctamente.

Lo más probable es que una persona como esta tenga una respuesta preparada, porque no será la primera vez que alguien le diga esto. No puedo decir cuál será esa respuesta, pero estará mucho más cerca de cuál es el problema real. Estará a la vista para que puedas manejarlo mejor.

Tal vez estoy siendo demasiado sutil. Por si acaso, seré más directo. Cualquiera que ocupe un puesto de "desarrollador sénior" debe saber lo mal que lo está haciendo cuando el liderazgo se ofrece a "ayudarlo" "haciendo un esfuerzo adicional para asegurarse de que las prioridades sean claras". Deben darse cuenta rápidamente de que lo que eso realmente significa es que están a punto de perder toda libertad de elección en su enfoque hasta que se pongan en forma.

@VietnhiPhuvan Lo expreso de esta manera intencionalmente. Es muy posible que haya un problema de comunicación que le permita al desarrollador principal tener la extraña idea de que establece sus propias prioridades. Por otro lado, si esa comunicación realmente funciona bien y el desarrollador es solo una persona desagradable, entonces seguramente entienden lo que significa cuando un cliente potencial les dice "Haré un esfuerzo adicional para asegurarme de que las prioridades se comuniquen correctamente". Cualquiera que haya existido el tiempo suficiente para ser un desarrollador "senior" debe saber qué significa cuando el liderazgo ofrece "ayuda".
Palabras amables con un toque de acero: me gusta eso :) Hace tiempo que no uso ese estilo de comunicación. De hecho, no he sido sutil con las cosas durante mucho tiempo :) La posibilidad que has planteado es la razón por la que ya no soy sutil con casi nada. +1 por aclarar tu posición.

Deja claro que esto es absolutamente esencial.

¿Ya lo has hecho? Como gerente, sé que puede ser difícil confrontar a los empleados directamente cuando están haciendo algo inaceptable. Usted menciona que hubo una conversación algo como esto:

Usted: ¿Puede organizar su código y utilizar correctamente el flujo de trabajo de desarrollo que discutimos?

Desarrollador sénior: Todavía no he llegado a eso porque necesito sacar estas características urgentes.

Lo que me pregunto es, ¿cuál fue tu respuesta a esto? ¿Dejó en claro que no está de acuerdo con esta priorización y, de ahora en adelante, no debe ocurrir ningún nuevo desarrollo hasta que implemente el proceso correcto? Si no, entonces el desarrollador senior realmente no ha recibido un mensaje claro. Podría quedarse pensando que su elección fue la correcta dadas las circunstancias.

El primer paso es indicar claramente lo que espera que suceda.

Veo muchas respuestas que sugieren que le haga saber que su trabajo está en juego, etc. Pero no lo haga hasta que se haya dado este paso básico. Necesita saber que este proceso de desarrollo es obligatorio y que configurarlo tiene prioridad sobre todo lo demás.

El segundo paso es brindarle apoyo para que aprenda el proceso.

Le ofrecería que otro desarrollador le mostrara cómo se configura. Dices que su falta de conocimiento de Git es el problema (a pesar de que dice saberlo). A menos que esté 100% seguro de eso, no hay necesidad de abordarlo directamente. Simplemente indíquele que sería más fácil y rápido para él ver cómo alguien más ya lo tiene configurado, y garantizaría que todos estén haciendo las cosas de la misma manera.

A la larga, si hay un patrón constante de ocultar el hecho de que él no sabe algo con soluciones alternativas, entonces este es un problema que debe abordarse de alguna manera (ya que será bastante perjudicial).

El paso tres es escalar, solo si lo anterior no funciona.

Otras respuestas han dado indicaciones sobre cómo hacerlo.

Hacer que su ruta de confirmación preferida sea obligatoria es una buena práctica por sus propios méritos, pero no la use para resolver este problema.

El problema básico es que el desarrollador senior debe respetar su papel como líder del equipo y aceptar las prácticas que implemente. (Además, por el contrario, debe comunicar claramente sus expectativas si esto no sucede). No hacer esto y, en cambio, ocultar el problema con la tecnología sería un error.

No obstante, una vez realizada la comunicación anterior, también sería una buena idea hacer obligatorio el proceso.

Estoy de acuerdo en que no es necesaria una solución técnicamente forzada. La mayoría de los entornos de desarrollo en los que he trabajado permiten el acceso de los desarrolladores a la rama maestra, y los desarrolladores a menudo tienen un rol secundario como operaciones y/o soporte con suficiente acceso a los servidores de producción de parches. En estos entornos, el proceso de desarrollo se sigue de cerca y funciona bien gracias a que los miembros del equipo comprenden y respetan el proceso, y tienen suficiente autodisciplina. Las soluciones técnicas con derechos restringidos tal vez sean más adecuadas para equipos más grandes (con múltiples instalaciones para proteger y un equipo completo de sysops para administrarlas)
@NeilSlater, la solución técnica puede ser útil como una forma de ayudar al equipo a ser disciplinado con las buenas prácticas y evitar errores tontos. Pero no debe utilizarse como sustituto de la gestión.

Necesita un control y una revisión adecuados del código. Si entiende el proceso y lo viola sin una razón excepcionalmente buena, no lo necesita en el equipo. Díselo.

Prioridades: es su responsabilidad dejar claras las prioridades. Si se va en una dirección diferente después de que lo hayas hecho y lo haya reconocido, no lo necesitas en el equipo. Díselo.

Recuérdele, si es necesario, que la evaluación de su trabajo por parte del líder del equipo afecta su revisión de fin de año.

Déle una oportunidad justa de explicar por qué este caso fue especial... pero si no tiene una defensa adecuada (a su juicio, no a él) y no está dispuesto a prometer que no volverá a suceder, es tiempo para tener una charla con su gerente.

¿Tendrían ejemplos de personas que perdieron su trabajo por cometer errores como este?
Si no sigue la política de la empresa/departamento, puede ser despedido con causa, especialmente cuando pone en peligro el proyecto al hacerlo. Los ejemplos no son útiles, violarían las reglas de privacidad y son francamente irrelevantes.
Esta respuesta es inútil porque no aborda la educación adecuada del empleado más allá de "despedirlo si no lo educa".
¿De qué hablas con su manager? ¿Quizás hacer eso primero y luego hablar con el empleado?
@gusdor: O al menos mudarse a un trabajo que pueden y están dispuestos a hacer.
@keshlam ¡De acuerdo! En este caso, definitivamente destruiría el contrato del tipo desde la órbita para contener la infección.
Esta respuesta, si bien es relevante, posiblemente sea innecesariamente agresiva. También parece suponer que no sirve de nada mantener al desarrollador sénior en el equipo, incluso si no puede seguir las reglas (tal vez tenga una buena cantidad de seguridad laboral). Si amenazar con despedir a esta persona fuera la única opción, creo que OP lo habría considerado.
No dije que disparar fuera la única opción. Dije que primero les recuerden sus obligaciones y que las reconozcan. Si eso falla, puede ser necesario amenazarlos con echarlos de su rol o proyecto actual. Si eso falla, de hecho puede ser necesario disparar. Aquí hay instrucciones explícitas sobre qué pasos seguir, en qué orden. No, no es innecesariamente agresivo; simplemente asertivo, que es lo que un líder de equipo a veces simplemente debe ser.

Hay 2 líneas de ataque necesarias aquí:

  1. Necesita un proceso que facilite hacer lo correcto y dificulte hacer lo incorrecto.
  2. Necesitas que el equipo esté de acuerdo/acepte qué es lo correcto.

La respuesta de moo ya cubre 1), así que me centraré en 2).

Su equipo debe saber que necesitan una rama estable, una rama compartida algo estable y una estrategia de combinación común que asegure que las personas sepan qué cambio hay en qué rama, lo que significa que todos fusionan las cosas a través de las ramas en el mismo orden. Si no lo saben, envíelos a un entrenamiento obligatorio que lleve a cabo un tercero . Sí, es caro, pero tener un equipo que no entiende de bifurcaciones es más caro a largo plazo.

Por lo general, puede dejar otras decisiones, como abrir una subrama temporal para alguna función, en manos del equipo, siempre y cuando deba asegurarse de que las decisiones que afectan al equipo sean tomadas por el equipo, no por un solo desarrollador.

Puede facilitar el trabajo en equipo con retrospectivas, reuniones en las que, después de cada característica/hito/sprint, el equipo se reúne y analiza cómo podrían haberlo hecho mejor, como equipo; la frecuencia de estas debe ser de una vez cada 1 a 4 semanas y puede encuentre toneladas de material sobre retrospectivas en línea. Si el equipo sabe acerca de la bifurcación, durante las retrospectivas, su único desarrollador debería recibir críticas de todo el equipo, no de usted. Luego puede guiar al equipo para que implemente procesos automatizados que hagan que sea más fácil hacer las cosas bien y muy difícil hacerlas mal. Estos son los procesos descritos por la respuesta de moo.

En términos generales, como supervisor directo, no puede simplemente implementar y hacer cumplir un gran proceso con el que su equipo no está de acuerdo, sin un riesgo muy alto de consecuencias. Si no conocen la bifurcación adecuada, debe capacitarlos en "la forma correcta", luego puede implementar y hacer cumplir procesos menores para obligarlos a trabajar en equipo: una forma común en su caso es exigir un código revisión sobre una fusión para Desarrollar y Dominar; la próxima vez que una combinación se haya hecho mal, ahora puede preguntar a 2 personas qué salió mal, el codificador y el revisor.

Lo primero que supuse fue que el desarrollador no confiaba en la bifurcación de Git.

Para ello, establezca políticas físicas estrictas que requieran que los cambios se verifiquen en un repositorio específico o no se implementarán, lo que significa que el trabajo no se realiza, lo que significa que él no hace su trabajo y eso es motivo para terminación. Si la estructura de su equipo es "relajada" y los desarrolladores tienen claves para la producción y pueden implementar por su cuenta, o tienen credenciales de base de datos para implementar cambios de esquema de base de datos y no siguen los PROTOCOLOS ESTABLECIDOS POR LA ADMINISTRACIÓN , la conclusión es simple: no te estás manejando bien. Administrar, en un entorno de desarrollo de software, es principalmente diseñar las reglas y protocolos del equipo que los miembros del equipo DEBEN cumplir, no cuidar a los desarrolladores a diario.

No suplicas a tus subordinados que hagan las cosas de cierta manera. Tienes todas las herramientas necesarias a tu disposición para obligarlos a seguir los protocolos adecuados. Esto no es un problema con su empleado, sino un problema con su organización y la falta de estructura y reglas que hagan la vida más simple, más fácil y más eficiente.

Esto se lee como si la gestión fuera el trabajo de hacer que las personas odien sus trabajos poniendo el protocolo en su camino. ¡Estoy tan contenta de no trabajar para ti!
Seguir protocolos simples es fundamental para la colaboración, no lo contrataría si no pudiera hacerlo
Estoy de acuerdo en que los protocolos son importantes. Pero, ¿cómo llegar a un buen uso de buenos protocolos? Me parece disfuncional que los no expertos diseñen protocolos para que los sigan los expertos.
¿Quién dijo "protocolos de diseño para no expertos"?

Existe una posibilidad en la que nadie ha pensado: que este desarrollador senior simplemente no comprenda cómo debería funcionar el flujo de trabajo y qué debe hacer para mantenerse dentro de ese flujo de trabajo. Que nunca aprendió a usar git correctamente en primer lugar.

Si usa git directamente, entonces todas las cosas que necesita hacer son bastante complicadas, así que espero que tengas alguna herramienta además de eso. Sourcetree funciona bastante bien; Estoy seguro de que hay otros. Una vez configurado correctamente (lo que puede ser un dolor de cabeza), hace la vida mucho más fácil.

Tome a uno de los desarrolladores que hace todo bien y verifique con él cómo está configurada la máquina de este tipo. ¿Tiene las herramientas que todos los demás tienen? Si no, configúrelos. ¿Puede crear una rama? (En mi máquina, está seleccionando la sucursal desde la que desea ramificarse, seleccionando un elemento del menú y escribiendo el nombre de la nueva sucursal). Sin las herramientas adecuadas, es un dolor. Tal vez él realmente no sabe cómo hacer eso.

Vaya con él a través de todas las cosas que necesita hacer. Pídale que escriba todos los pasos que necesita hacer. Eso es lo que hice la primera vez que usé git: escribí todo. La segunda y tercera vez refiné lo que escribí porque no funcionaba del todo y había situaciones que no anticipé. La cuarta a la décima vez usé mis notas para hacer cosas, y luego ya no las necesité. Pude ver a alguien que no sabía qué herramientas usar y cómo usarlas, siendo demasiado orgulloso u obstinado para pedir ayuda a alguien, y creando un lío profano en el camino.

Nadie debería llegar nunca a "Desarrollador sénior" sin conocer y utilizar buenas prácticas de control de código fuente. La ignorancia realmente no es una excusa aquí.

Guau. Simplemente guau. Esto es tan profundamente poco profesional, es increíble. Pero hable primero con Recursos Humanos para asegurarse de que estén de acuerdo y de que no haga nada que pueda ser un problema legal para su empresa. Luego hablas con él, teniendo en cuenta cualquier consejo de Recursos Humanos, y le dices que si vuelve a repetir esto, tomarás medidas para sacarlo del equipo. Lo que probablemente significa de la empresa.

Asegúrese de que Recursos Humanos entienda qué daño puede causar este comportamiento irresponsable.

Cómo convencerlo de que se detenga: al menos dos respuestas aquí terminan con él sin tener el empleo donde está ahora si no cambia. Eso debería ser convincente. Además, las personas que dicen esto son profundamente poco profesionales y peligrosas.

Cuáles son los riesgos: un servidor de producción roto es el riesgo menor. Un servidor de producción que comete errores costosos es el gran riesgo. Imagine un servidor de comercio electrónico que cobra el IVA en lugar de agregar el IVA al precio. Tendrás muchos, muchos clientes muy felices.

¿Es esto un bloqueador?: No realmente. Cuando hago una rama, espero que la rama de desarrollo cambie cuando quiero fusionarme, por lo que no hay diferencia. Si va más allá de la rama de desarrollo a la rama maestra, eso es un asunto diferente. Quien sea responsable de la rama maestra se llevará una gran sorpresa. Por otro lado, si yo fuera el responsable de la rama maestra, todo lo que no estuviera autorizado sería eliminado y quienquiera que lo haya hecho estaría en problemas.

La rama de desarrolladores está detrás de Master, lo que en nuestro flujo de trabajo es un problema. Lo vería como un bloqueador. Y tiene un código en su máquina que no está en ninguna parte, pero está compilado y ejecutándose en Producción. En otras palabras, si le roban su máquina, no tenemos el código fuente de lo que se está ejecutando.
Si bien llamaría a algunas cosas inaceptables, el código de producción que solo está en una máquina de desarrolladores es más que inaceptable. "Si le roban su máquina", ¿ni siquiera está respaldada? Los discos duros y las unidades SSD mueren. Entonces, el código desaparecerá no si su unidad muere, sino cuando muere.
No es realmente una buena gestión no tener idea de qué decirle a su empleado además de "Si vuelve a equivocarse, lo despediré".
Demasiada escalada demasiado pronto. Ni siquiera está claro que el OP haya dicho directamente "tienes que hacer esto".
+1 - No puedo agregar más, lo siento :-). Es sorprendente la cantidad de personas que se pierden el punto clave aquí, que es que se ha presentado la perspectiva de una catástrofe inminente a partir de un solo evento, y las personas están hablando sobre los procedimientos de PV y los medios adecuados de escalada mientras el OP se encuentra al borde de un abismo Bastante sorprendente.
@Vampire eso solo es probablemente más serio que cualquier otra cosa mencionada. No verificar el código de producción que potencialmente consideraría una negligencia grave.

Resumen:

  • Además de los problemas técnicos y sociales planteados por otros, usted tiene una gran necesidad inmediata: las acciones de esta sola persona pueden estar produciendo la posibilidad de una falla catastrófica en un solo punto.

    • Es decir, mientras que la mayoría de los 'desastres' ocurren porque varios eventos aparentemente no relacionados y estadísticamente improbables ocurrieron simultáneamente. En este caso, un solo evento puede ser suficiente.
  • Si bien es de esperar que su diligencia esté dirigida a optimizar los resultados para su empleador, también es prudente pensar en su propia posición.

    • es decir, el desarrollador, y por lo tanto usted como su gerente, puede estar (y probablemente esté) poniendo el proyecto en riesgo de una pérdida importante (medida en términos de tiempo, recursos, necesidad de replicar el trabajo, integridad del sistema, confianza del cliente y más, y en última instancia, en $ Si tal evento ocurrió y fue grave, incluso si no es el "peor de los casos", no hay razón para esperar que no pierda su trabajo.
  • La pérdida anterior, de magnitud aún desconocida, podría ocurrir en cualquier momento: la próxima semana, hoy o nunca.

  • Los sistemas normalmente se organizan de modo que se pueda conocer el alcance/rango/magnitud de las consecuencias de cualquier evento razonablemente previsible. En esta situación, este no es el caso, y esto necesita remediarse de inmediato.

    • Si bien sabe que las acciones del empleado lo han puesto en riesgo, hasta ahora desconoce las posibles consecuencias de los eventos probables, posibles y peores que ocurran. Establecer lo que no sabe es el primer paso para arreglar las cosas.

    • Usted está en condiciones de tomar medidas inmediatas para determinar qué es lo que desconoce acerca de toda la situación. hazlo Ahora. Luego establezca qué pasos son urgentes y cuáles pueden retrasarse un poco y luego comience a remediarlo.

__________________________________________________

Nueva pregunta para tu lista:

P0: "¿Cuáles son mis prioridades más urgentes?"

R0: ASEGÚRESE de que lo que tiene sea estable frente a pérdidas catastróficas.

No suena como si lo fuera.
Si no, hazlo así.
¡Ahora!

_________________________

Los posibles peligros y consecuencias a corto plazo y el mejor camino a seguir:

Lo siguiente no pretende ser grosero, pero pretende ser 'robusto'. Por supuesto diga si no está de acuerdo. Si estás de acuerdo. haz algo apropiado AHORA.

Usted (u otros) mencionan "robo de máquina, incertidumbre sobre "copias de seguridad", etc.
Si no SABE si está cubierto contra catástrofes de un solo punto, entonces es SU 'culpa' si sucede algo que elimina una proporción desconocida de su sistema instantáneamente
Si eso sucediera de una manera significativa, debería ser despedido y probablemente lo sería, después de haber implementado todas las actividades correctivas posibles.

Sin más información, mire su segunda (ahora 3ra) pregunta, decida qué riesgos PUEDEN existir que usted no conoce porque el sistema no está controlado y tome medidas inmediatas para eliminar esos riesgos. Esto puede implicar congelar toda la actividad y/o archivos y/o ??? por el desarrollador. Entonces, involúcrelos en el proceso.

______________

Sugerencias de puntos para formar parte de una entrevista (urgente) con el desarrollador:

Entiendo que xxx es el caso. ¿Es esto sí/no?
Si entiendo mal, por favor aclarar.

Bien, si sucede yyy, ¿cuál será el resultado?
(Si la respuesta es incorrecta, diga por qué e itere hasta llegar a un acuerdo.
(Si el ciclo iterativo no se cierra después de un período excesivo, use '45 Clear ' o un equivalente local aceptable :-( :-))

Una vez que se llega a una conclusión en cuanto a las consecuencias. Esto es inaceptable para mí. Esto me pone a mí, a la empresa o al sistema en una situación inaceptablemente peligrosa. Esto DEBE ser abordado ayer. Estoy a punto de implementar xxx. ¿Estás de acuerdo? / ¿Puede sugerir alternativas? Nuevamente, puede resultar un bucle iterativo. De nuevo, puede ser necesario el uso de "GOTO" ( o no :-} ).

Si no hace esto o equivalente será despedido como consecuencia. Algún tiempo.

Honestamente, no tengo idea de lo que estás proponiendo aquí.
Esta respuesta tiene un formato confuso. Creo que la evaluación de riesgos es la única parte fácilmente recuperable, es posible que desee dividirla en una nueva respuesta.
@ dan1111 Propuesta: "ASEGÚRESE de que lo que tiene sea estable frente a pérdidas catastróficas". Motivo: como dijo Gnasher: " Si bien llamaría a algunas cosas inaceptables, el código de producción que solo está en una máquina de desarrolladores es más que inaceptable. "Si le roban su máquina", ¿ni siquiera hay una copia de seguridad? Los discos duros y las unidades SSD mueren. Entonces, el código desaparecerá no si su unidad muere, sino cuando muere". || Actualmente está invitando a una catástrofe absoluta.
Esta respuesta es tan general que se puede copiar y pegar en casi todas las preguntas sobre el lugar de trabajo. Sin embargo, no tiene sentido si leo tanto como el formato me lo permite.
@phresnel Puede o no estar familiarizado con lo que puede suceder en un proyecto de programación importante. La mayoría de las actividades en el lugar de trabajo no implican que los miembros del equipo tomen una estructura bien establecida donde las cosas funcionan bien y la conviertan a través de las acciones de una persona en un sistema donde las fallas de un solo punto pueden causar fallas catastróficas masivas con consecuencias desconocidas. Un entorno de programación puede ser así. Si eso ha sucedido aquí es desconocido para nosotros y probablemente para el OP. Eso debe ser rectificado o su trabajo, su cliente y quizás su empresa no dure un mes.
Ese no era mi punto en absoluto. Lo que mi experiencia laboral tiene que ver con esto se me escapa por completo.
@phresnel Comprender que, si bien muchas situaciones de trabajo no tienen la posibilidad de que un empleado que aparentemente funciona razonablemente lleve la tarea/equipo/empresa a una ruina posiblemente irreparable debido a una falla de un solo punto, algunas sí lo hacen. Si bien es (con suerte) poco probable, el peor de los casos aquí es que la falla de un disco duro en la computadora de los empleados deshonestos podría destruir la empresa. Por ejemplo, similar pero totalmente diferente: aquí las acciones de un empleado y el momento del terremoto japonés de Kobe se combinaron para destruir el banco comercial más antiguo del Reino Unido .
Puede o no estar familiarizado con lo que puede suceder en un sitio web internacional al publicar grandes cantidades de textos que casi nadie puede leer; de todas las alternativas posibles, la que tiene como resultado lectores confundidos que no entienden de lo que estás hablando después de todo es la más probable y apropiada. De hecho, su escritura se parece mucho a un texto generado automáticamente que es el resultado de un chatbot que simplemente interactúa con los lectores en un nivel algorítmico y basado en eventos. El hecho de que ignore todas las preocupaciones con su estilo de escritura solo refuerza esa idea.
En otras palabras: tu estilo de escritura es confuso y agotador.
@phresnel (1) Es asombroso lo que los bots de chat podemos lograr en estos días :-) . (2) Recibo algunas respuestas similares de la gente; nunca estoy seguro de quiénes son trolls y quiénes no, así que me reservaré el juicio. La gran mayoría parece muy feliz. (3) Re "... versado en sitios internacionales..." -> Esto es quizás algún tipo de indicación de mi conocimiento , tal vez no.
Asombroso por cierto ;)