El proyecto en el que estoy trabajando actualmente tiene un problema: los errores y las tareas a menudo se asignan a personas que son demasiado nuevas o inexpertas y su trabajo termina produciendo más errores en el futuro. El problema es que partes de nuestro software son mucho más "peligrosas" para trabajar que otras debido a problemas de calidad del código. He estado tratando de combatir este problema estimando el riesgo asociado con las tareas y prestando mucha atención a qué desarrolladores se asignan qué tareas.
Usamos JIRA, así que comencé a etiquetar los problemas para realizar un seguimiento de esta estimación. Me di cuenta de que terminé usando varias métricas para clasificar un error / tarea:
- Qué claro / sencillo es. Por ejemplo, si es algo que necesitará mucho trabajo de diseño o solo una simple corrección de errores de la interfaz de usuario.
- Cuán mantenible es el área afectada del código. ¿Es un área bien diseñada o una gran bola de barro?
- Cuánto del programa creo que se verá afectado por el cambio requerido.
Mis etiquetas son un poco desordenadas, ya que no tenía una idea clara cuando comencé cuáles serían las posibles categorías y todavía no las tengo. Estoy pensando en solicitar que se agregue un nuevo campo (algo así como "Riesgo") para que podamos requerir una estimación antes de asignar el trabajo a alguien.
¿Alguien ha tratado con este tipo de cosas antes?
Diría que a lo que te estás refiriendo aquí podría llamarse 'complejidad'. Por supuesto, cuanto más complejo es un cambio, mayor es el 'riesgo' de que un programador inexperto pueda introducir algún error nuevo. No es una mala idea introducir ese campo si es un problema real.
Sin embargo, a juzgar por lo que escribió, parece tener dos problemas:
Además de introducir algo como un campo de 'complejidad' (que ayudaría a administrar y priorizar su trabajo), le sugiero que se concentre en mitigar el riesgo de los dos problemas anteriores.
Para abordar el primer problema, crearía un proceso mediante el cual los nuevos programadores primero discutan todos los errores nuevos con un programador más experimentado antes de trabajar en el error. Además, definitivamente presentaré revisiones de código para reducir el riesgo de que se introduzcan nuevos errores y para usar como oportunidad de entrenamiento para que los nuevos programadores se pongan al día más rápidamente.
Con respecto a la calidad del código, haría dos cosas. En primer lugar, detenga el proceso de descomposición: acuerde las normas y prácticas de codificación que evitarían la introducción de un nuevo código inferior. Las revisiones de código sugeridas también ayudarían aquí. En segundo lugar, identificaría las peores partes de su código y comenzaría a refactorizarlas y limpiarlas.
fuente
Sí, es una buena idea no dar problemas a los desarrolladores inexpertos que son demasiado complejos. Pero la otra cara es que si solo les dejas hacer las cosas fáciles, entonces no aprenderán.
Sugiero que una estrategia alternativa es instituir un régimen de revisiones de código. Deje que los novatos trabajen en el trabajo en las cosas difíciles (dentro de lo razonable), pero revise a fondo su trabajo.
A corto plazo, esto es más trabajo para todos. A largo plazo, terminará con un equipo completo de desarrolladores que pueden manejar las cosas complejas, Y están "en la misma página" en lo que respecta a la calidad del código.
fuente