El porcentaje de equilibrio de la capacidad total asignada a la reparación de defectos es igual a la tasa de inyección de defectos .
Muchos factores pueden afectar esta tasa, entre ellos, por supuesto: qué tipo de producto está desarrollando el equipo, qué tecnologías y prácticas técnicas utilizan, el nivel de habilidad del equipo, la cultura de la empresa, etc.
Considerando el Equipo B, si crean en promedio 8 unidades de retrabajo por cada 10 unidades de trabajo que completan, entonces trabajar esas 8 unidades creará nuevas 6.4 unidades de retrabajo. Podemos estimar el esfuerzo total que eventualmente tendrán que gastar como la suma de una progresión geométrica:
10 + 8 + 6.4 + 5.12 + ...
El número de errores disminuirá exponencialmente con el tiempo, pero el Equipo B tiene un coeficiente tal en su exponente que irá a cero muy lentamente. En realidad, la suma de los primeros tres términos en la serie anterior es solo 24.4; de los primeros cinco, 33.6; de los primeros 10, 45; de toda la serie, 50. Entonces, resumen del Equipo B: tasa de inyección de defectos, 0.8; desarrollo de características, 10/50 = 20%; fijación de defectos, 80%. 20/80 es su asignación de capacidad sostenible.
Por el contrario, el equipo A está en mucho mejor forma. Su progresión se ve así:
40 + 10 + 2.5 + 0.625 + ...
La suma de esta serie es 53 1/3, por lo que la asignación de desarrollo de características del Equipo A es 40 / (53 1/3) = 75% y la asignación de reparación de defectos es 25%, lo que coincide con su tasa de inyección de defectos de 10/40 = 0.25 .
En realidad, todos los términos en la serie del Equipo A después de los primeros tres son insignificantemente pequeños. Lo que esto significa en términos prácticos es que el Equipo A probablemente pueda eliminar todos sus errores con un par de versiones de mantenimiento, siendo la segunda versión bastante pequeña. Esto también crea una ilusión de que cualquier equipo puede hacer eso. Pero no el equipo B.
Pensé en esta equivalencia mientras leía el nuevo libro de David Anderson, "Kanban" . (El libro trata un tema diferente, pero también aborda las inquietudes sobre la calidad.) Al hablar sobre la calidad del software, Anderson cita este libro, de Capers Jones, "Evaluaciones de software, puntos de referencia y mejores prácticas" :
"... en 2000 ... midió la calidad del software para los equipos de América del Norte ... varió de 6 defectos por punto de función a menos de 3 por 100 puntos de función, un rango de 200 a 1. El punto medio es aproximadamente 1 defecto por 0.6 a 1.0 puntos de función. Esto implica que es común que los equipos gasten más del 90 por ciento de su esfuerzo reparando defectos " . Cita un ejemplo proporcionado por uno de sus colegas de una compañía que pasa el 90% del tiempo arreglando sus errores .
La fluidez con la que Anderson pasa de la tasa de inyección de defectos a la asignación de capacidad de fijación de texto ( demanda de falla es el término para ello) sugiere que la equivalencia de las dos cosas es bien conocida por los investigadores de calidad de software y probablemente se haya sabido por algún tiempo .
Las palabras clave en la línea de razonamiento que estoy tratando de presentar aquí son "equlibrium" y "sostenible". Si eliminamos la sostenibilidad, entonces hay una manera obvia de engañar a estos números: realiza la codificación inicial, luego pasa al código en otro lugar y deja el mantenimiento a otros. O acumula la deuda técnica y la descarga en un nuevo propietario.
Obviamente, ninguna asignación particular se adaptará a todos los equipos. Si decretamos que se debe gastar el 20% en errores, entonces, si un equipo tiene una tasa de inyección de defectos ultra baja, simplemente no tendrán suficientes errores para llenar el tiempo, y si un equipo tuvo una tasa muy alta, sus errores continuará acumulándose.
Las matemáticas que utilicé aquí están simplificadas. Descuidé cosas como los costos de transacción (reuniones de planificación y estimación, autopsias, etc.), lo que afectaría un poco los porcentajes. También omití ecuaciones que simulan sostener un producto y desarrollar otro simultáneamente. Pero la conclusión sigue en pie. Haga lo que pueda, en términos de prácticas técnicas, como pruebas unitarias, integración continua, revisiones de código, etc., para reducir la tasa de inyección de defectos y, en consecuencia, la demanda de fallas. Si puede crear un solo error por cada 10 funciones, tendrá mucho tiempo libre para desarrollar nuevas funciones y satisfacer a sus clientes.