Me he hecho cargo de un grupo de 3 desarrolladores con una pésima calidad de código en su proyecto. Para aumentar la calidad de su código, se han realizado muchas reuniones y se ha agregado un control de calidad de código (sonarqube) a CI para monitorear el código y fallar la canalización si no pasa los requisitos.
Uno de los desarrolladores encontró una forma de solucionar los límites de complejidad de la función y comete un código incorrecto (ejemplo a continuación). Mi pregunta es ¿cómo debo abordar esto para evitar que él y otros desarrolladores usen soluciones alternativas en lugar de pensar y corregir sus códigos?
switch (true) {
case (first & second & otherthing):
dosomething();
break;
case (unrelated_if || complex):
do_totally_unrelated_thing_to_previous_one();
break;
...
}
Personalmente, encuentro que la mayoría de esas herramientas de código automatizado son inútiles. Hay momentos en los que falla el código por cosas que son simplemente preferencias y cosas que son malas en algunas circunstancias pero buenas o incluso necesarias en otras. Y, a menudo, dejan al desarrollador sin saber cuál debería ser la solución real. Si sabe que algo falla pero no entiende por qué falla o qué debería hacer en su lugar, la herramienta en sí ha fallado.
Lo que ayuda es la revisión del código al 100%. Ningún código se compromete con la rama de producción sin ser aceptado a través de la revisión del código y ningún desarrollador tiene los derechos para comprometer con la rama de producción solo el equipo de compilación o el líder.
Aquí es donde devuelve el código incorrecto, preferiblemente con una explicación de por qué es incorrecto. La clave es hacer que sea doloroso no arreglar el código. Sí, habrá algunas ocasiones en las que se perderá la fecha límite porque el código falló en la revisión del código. Y tendrán que explicar eso como una razón. Esto hace que las personas sean menos propensas a cometer el mismo error repetidamente para poder cumplir con sus plazos. Si no hay dolor en escribir código incorrecto, no hay razón para arreglarlo, siendo la naturaleza humana lo que es.
Dicho esto, usted y su equipo deben llegar a un acuerdo sobre qué es un buen código y qué es un código aceptable. Si sus estándares y los de ellos no coinciden actualmente, esto debe resolverse mediante discusiones y aprobar un estándar aceptable. Si tienen aportes al estándar (y sí, eso significa que debe comprometerse y aceptar sus estándares al menos en parte, tener la discusión es irrelevante, incluso contraproducente, si aún va a dictar los resultados finales), eso tendrá más comprar en realmente usarlo.
Introdujiste una herramienta que aparentemente solo se interpone en el camino. El código horrible que publicaste se creó porque el desarrollador creó un código inicialmente que no fue aceptado por tu herramienta y descubrió cómo, al empeorar el código, sería aceptado. Ese es completamente tu problema. Si crea situaciones en las que las personas son recompensadas por hacer algo incorrecto, lo estarán haciendo mal.
Lo que no sabemos, al escuchar solo un lado de la historia, es si tienen una calidad de código horrible o si tienen un código que no te gusta, lo que puede ser algo completamente diferente. ¿Eres un desarrollador experimentado? Luego dígales cómo mejorar el código, envíelos a cursos de capacitación y realice revisiones de código. ¿O eres un jefe de pelo puntiagudo? En ese caso, que se pongan manos a la obra.
Hay dos problemas aquí:
la calidad de su código es mala
están trabajando en torno a su ejecutor de calidad de código
Revise cada solicitud de extracción que hagan. Si cometen código de mala calidad, explique por qué es de mala calidad. Explique por qué los estándares de calidad son importantes. Explique que ciertas decisiones de diseño pueden ser más rápidas a corto plazo, pero conllevan una deuda técnica significativa. Explique que es inaceptable escribir deliberadamente soluciones alternativas a su encargado de la calidad de la codificación. La clave aquí es enseñarles por qué es importante , no solo decirles qué hacer. No acepte las solicitudes de incorporación de cambios hasta que hayan realizado todos los cambios necesarios.
Si después de algunas rondas de esto siguen escribiendo un código deficiente y utilizando soluciones alternativas, puede ser una señal de incompetencia o insubordinación, que debe abordar adecuadamente. Con toda probabilidad, no están acostumbrados a escribir código en un nuevo estilo y necesitan algo de tiempo para adaptarse. Es su trabajo como supervisor ayudarlos a aprender y adaptarse, pero como dice el refrán, puede llevar a un caballo al agua, pero no puede obligarlo a beber.
Si se niegan a seguir las reglas que se les dan, es fácil. Déles una advertencia, en esa advertencia, indique que si reciben 2 advertencias, habrá consecuencias. El hecho de que estés a cargo de ellos, significa que si continúan haciéndolo, las consecuencias irán hacia ti.
Vaya a lo seguro, haga reglas escritas (por correo electrónico) sobre lo que TIENEN que hacer. Si no siguen estas reglas, repórtelo a su superior.
Además, asegúrate de hablar con él, puede haber algo mal. Escribir un código incorrecto podría deberse a que hay un problema en su espacio de trabajo/privado. Así que asegúrese de que eso no sea lo que hace que cometa un código incorrecto.
Florian Schaetz
Idris Dopico Peña
erik
Reza Salkhordeh
rath
gnasher729
Walfrat
switch(true)
? O puede escribir su propia regla para agregarla. Si han hecho algo que no entienden cómo escribir correctamente, debe explicárselo, si están interesados en la calidad del código...Seth R.
gordito
gazzz0x2z
CABRANUEVE
Thorbjorn Ravn Andersen
IlusorioBrian
if(x){} if(y){}
porque el analizador estático marcó lasif
declaraciones para el control de calidad, pero no marca elswitch
. Si está bien o no sin ese contexto, no es realmente importante.antipatrón