¿Cómo desarmas a un codificador de vaqueros? [cerrado]

37

Encontré una pregunta (código cowboy en el equipo), pero estaba más relacionada con "Ninja Coder" que con el problema que tengo.

Tengo un miembro del equipo que es un ejemplo vivo puro de " Cowboy Coder ". Entiendo que uno no puede cambiar a las personas, pero ¿es una forma de hacer que deje de comportarse como un "Codificador Cowboy"?

Se niega a escuchar al equipo, y recientemente detuvo las revisiones de códigos, las pruebas unitarias, compartió los detalles de implementación, etc.

Sí, él "codifica" rápidamente, pero su código es solo un generador de errores. Otros miembros del equipo y yo estamos en una "fase de corrección de errores" y el 80% de los errores proviene de su código. No quiero arreglar sus errores. Y la gerencia es ciega, o no quiere ver esto, o tal vez les gusta su "velocidad".

¿Hay alguna manera de que yo (como su colega más joven por edad, no su jefe) pueda hacer algo al respecto?

¿Cómo puedo desarmar a este codificador de vaqueros?

Siento que soy el último a quien realmente le importa el proyecto.

Adronio
fuente
17
Este chico necesita arreglar sus propios errores. ¿Por qué no se requiere que todos los desarrolladores revisen el código?
programador
8
¿Bajo la autoridad de quién dejó de revisar los códigos?
Otávio Décio
14
Entonces ... no tienes a nadie manejando esto. Ese es tu problema, no el codificador de vaqueros.
Otávio Décio
3
Si ese es el caso, entonces Scrum es un proceso bueno para nada. Cuando todos están a cargo, nadie está a cargo y el producto sufre el efecto de espectador.
Otávio Décio
77
Pero, ¿cómo
Rig

Respuestas:

22

Veo algunas opciones:

  • Acércate al codificador con tus preocupaciones. Debe hacerse como una crítica constructiva con puntos específicos. Antes de tomar medidas más importantes, es apropiado plantear inquietudes directamente y en privado para darle a la persona la oportunidad de cambiar.
  • Reúna información y estadísticas y llévelas a la gerencia. Puede parecer que a la administración no le importa, pero a menudo es importante hacer el esfuerzo de todos modos en caso de que funcione. Las posibles consecuencias negativas incluyen enajenar a otros que no aprecian las quejas a la gerencia.
  • Encuentra un compañero del codificador de vaqueros y discútelo en privado. Él / ella podría tener una mejor oportunidad de lograr que la persona escuche.
  • Pide trabajar en otro equipo. No resolverá el problema, pero mantendrá la cordura. Por lo menos, siempre trabaja lo mejor que puedas y no dejes que te arrastre.
  • Abandone la organización si nadie escuchará. Suena como un mal ambiente.
Matt S
fuente
6

Se niega a escuchar al equipo, y recientemente detuvo las revisiones de códigos, las pruebas unitarias, compartió los detalles de implementación ...

Las revisiones de código no necesariamente requieren que el codificador envíe el trabajo para su revisión.

Una manera fácil de realizar un seguimiento de lo que hace es vigilar el historial de VCS, buscando sus registros. Si le preocupa su código, esta es una manera fácil de encontrarlo. Obtenga un historial de diferencias, mire lo que él puso y vea si alguna bandera roja salta hacia usted. Capture sus registros lo suficientemente rápido y si encuentra un problema, puede revertir la confirmación y enviarle un correo electrónico a tal efecto. Se le permite llamar a sus compañeros de equipo, incluso como un codificador junior, cuando ve algo obviamente mal.

Sí, él "codifica" rápidamente, pero su código es solo un generador de errores. Otros miembros del equipo y yo estamos en una "fase de corrección de errores" y el 80% de los errores proviene de su código. No quiero arreglar sus errores. Y la gerencia es ciega, o no quiere ver esto, o tal vez les gusta su "velocidad".

El código proviene de los requisitos. Los requisitos dan como resultado pruebas ejecutables que verifican que se hayan cumplido los requisitos. Esas pruebas pueden desglosarse aún más, y pueden escribirse antes de que se realicen cambios para verificar que los cambios cumplan con los requisitos (refactor rojo-verde; la esencia de TDD).

Agregue una métrica de "cobertura de código" al servidor de compilación de su equipo (esperemos que tenga uno; si no, ese es su primer problema). Simplemente verificando que las pruebas unitarias pasadas no detectarán los problemas con su nuevo código no TDD, hecho en áreas que no tienen pruebas unitarias. Después de ejecutar todas las pruebas unitarias, el servidor de compilación idealmente debería haber ejecutado cada línea de código, pero realmente hay algunas cosas que simplemente no puede probar unitariamente. Siendo realistas, aún debería poder esperar una cobertura del 95% o mejor (o excluir ciertas bibliotecas o tipos de archivos de la cobertura). Tarde o temprano, su vaquero registrará algo que rompe la construcción porque ha bajado el nivel de cobertura por debajo del umbral, y usted lo llama.

Y en lo que respecta a la "velocidad", la velocidad es la rapidez con la que se "hacen" las cosas, y no se "hacen" hasta que se hacen correctamente. Puede ponérselo a sus gerentes de esta manera; considere a un mecánico de automóviles que, cuando el gerente toma su BMW para obtener un cambio de aceite, se olvida de volver a enchufar el cárter de aceite y, como resultado, todo el aceite nuevo se derrama antes de que incluso salga del garaje. Claro, el cambio de aceite solo tomó cinco minutos, pero el gerente no se preocupará por eso cuando el motor de su automóvil se detenga en el camino a casa. Le importará que el mecánico haya fallado un paso, eso le va a costar mucho tiempo y dinero adicionales para arreglarlo. En este momento, le está pagando a un vaquero para que haga el trabajo muy rápido, y luego ' s pagarle al resto del equipo una suma mucho mayor para entrar y volver a hacer el trabajo correctamente. ¿Cuál es realmente la ventaja de seguir dejando que el vaquero haga lo suyo?

¿Hay alguna manera de que yo (como su colega más joven por edad, no su jefe) pueda hacer algo al respecto?

Llámalo. Cuando encuentre algo que él arruinó, muéstrele cómo está fallando su código, cómo pudo haber evitado el problema en primer lugar (incluido el diseño adecuado, TDD, revisiones de código) y lo que fue o deberá hacer como resultado para arreglar su código roto.

Siento que soy el último a quien realmente le importa el proyecto.

klaxons a todo volumen, luces intermitentes, sirenas sonando : si realmente sientes que eres la única persona a la que le importa la calidad del código producido por el equipo, entonces hay un problema GRAVE. Si sientes que estás tratando de arrastrar a todo el equipo pateando y gritando a la era de la buena codificación, y es demasiado peso para transportar, entonces déjalo caer. Si hay otro equipo en la compañía que lo está haciendo bien, solicite una transferencia, de lo contrario salga de allí.

KeithS
fuente
5

Vaya a la administración con sus estadísticas sobre cuántos errores / problemas provienen de este desarrollador. Explíqueles que corregir sus errores afecta la productividad de su equipo. Si, de hecho, el 80% de los problemas provienen de una persona, eso definitivamente debe abordarse. Siempre y cuando se lo explique a la gerencia en términos con los que puedan estar de acuerdo (es decir, "el tiempo perdido es dinero perdido"), intervendrán.

Además, este desarrollador debe solucionar sus propios errores / problemas, por lo que puede ser útil asignarles estos problemas. Su equipo no debería estar cubriendo a esta persona.

Bernardo
fuente
4

¿Hay alguna manera de que yo (como su colega más joven por edad, no su jefe) pueda hacer algo al respecto?

La presión de grupo y liderar con el ejemplo son las únicas buenas maneras. Las mejores formas son hechas por su jefe / líder. Si no eres su jefe / líder, habla con los que sí lo son. Pero al final es su trabajo cuidarlo, no el tuyo. Asegúrese de que está haciendo un buen trabajo y que las cosas tienden a resolverse por sí mismas.

Telastyn
fuente
1
El codificador de vaquero podría ser inmune a la presión, si la gerencia no comprende su verdadero impacto, podría verse cegado por su impacto percibido.
mhoran_psprep
Puede defender sus errores muy bien antes de la administración, de modo que los errores o problemas grandes parezcan pequeños para la administración, pero al final, el código sigue arruinado. Y eso es algo que a la gerencia no le importa.
Adronius
2
@mhoran_psprep - Oh, ciertamente. No espero que tenga éxito , pero también creo que tratar de arreglar las cosas de otra manera es más arriesgado con respecto a tener consecuencias negativas. Hacer un escándalo gigante al respecto es una forma rápida y fácil de aislarse del ostracismo, especialmente si las percepciones del OP del vaquero son inexactas.
Telastyn
0

Se niega a escuchar al equipo, y recientemente detuvo las revisiones de códigos, las pruebas unitarias, compartió los detalles de implementación ...

¿No tiene una ruta documentada para el código a través de la revisión, prueba e implementación? Si no, tienes un problema más amplio. Si lo hace, entonces esto es algo que necesita ser escalado.

temptar
fuente
Claro, tenemos toneladas de procesos y documentos. Pero se trata de las personas cómo las usan .
Adronius
Pero nada debería entrar en producción sin adquirir la aprobación correspondiente. ¿Me estás diciendo que elude el control de cambio normal?
temptar
No exactamente, pero más o menos. Hace cambios en el código, luego realiza los pasos "formales" para hacer la revisión del código = usa alguna herramienta solo, por lo que el código ha "revisado" la bandera o le pide a su compañero (que no le importa el código) "revisar" su código. Luego "explica" el código en un minuto y está listo. Huray, y él va a presentar los cambios.
Adronius