En algunos artículos anteriores he comentado que la calidad debería ser un ciudadano de primera en el desarrollo del software (Calidad Vs Velocidad, No hay agile sin bugs).
Suelo terminar escribiendo cosas por conversaciones que tengo con amigos y me acordé de la historia de TOYOTA y el “Andon Cord”.
La historia se basa en una empresa NUMMI (New United Motor Manufacturing, Inc.) en California que era considerada la peor planta de fabricación de automóviles de Estados Unidos. Un año después de su cierre una alianza entre General Motors y TOYOTA logró reabrir la fábrica con la condición de la re-contratación de todos sus empleados y aplicar los principios Toyota Production System (TPS).
Poco después de la reapertura el presidente de NUMMI, Tetsuro Toyoda caminaba por la fábrica cuando vio a uno de los empleados que trabajaba en la línea de producción, Joe, luchar por instalar una luz trasera en un automóvil que había sido producido con un ángulo algo diferente. Toyoda se aproximó y le dijo:
“Joe, por favor tire del cordón.”
“Señor, puedo solucionar esto.” respondió Joe.
Toyoda repitió: “Joe, por favor tire del cordón.”
Nadie en la fábrica nunca habían tirado del cordón porque tirar del cordón paraba la línea de producción y el coste de hacerlo era muy grande.
Como Toyoda vio que Joe no tiraba del cordón le cogió de la mano y ambos tiraron del cordón.
Aquello redujo la presión sobre Joe, pocos segundos después pudo instalar correctamente la luz en el vehículo.
Toyoda se acercó nuevamente a Joe, realizó una venia y dijo:
“Joe, perdóneme por favor. Realicé un trabajo deplorable instruyendo a sus superiores en la importancia de ayudarlo a tirar del cordón cuando existe un problema. Usted y sus colegas son las partes más importantes de esta planta. Solamente ustedes pueden hacer que cada automóvil sea magnífico. Le prometo que haré lo que esté en mi poder para no fallarle nuevamente.”
Para 1986, dos años después, la productividad de la fábrica NUMMI era más alta que cualquier otra de las fábricas de GM y más del doble que su previo record antes de la re-apertura. De hecho, la productividad era tan alta como en las plantas en Japón. La peor fábrica de automóviles del planeta se convirtió en una de las plantas más productivas en existencia, con la participación de los mismos empleados que habían fracasado años atrás.
Para mejorar, tire del cordon
Managers
Vosotros sois Toyoda, aquí es dónde entran los procesos que tratan la calidad como un ciudadano de primera. Lo que hizo Toyoda para convencer a su empleado es aceptar la responsabilidad de parar la línea de producción con él. No hubo criticas porque Joe no podía meter faro en el coche. Es más, se disculpó por no haber conseguido que entendiera lo importante que era la calidad para Toyota y lo necesario que era parar para terminar.
Las consecuencias de no parar producción podrían ser estas:
Desarrolladores
Nosotros somos Joe, los encargados de dar calidad al trabajo que hacemos. La calidad no es algo que podamos añadir en la línea de producción como un paso más, es algo intrínseco al trabajo que hacemos. El Andon Cord nos enseña que añadir calidad al producto después de haberlo terminado es más costoso e ineficaz que hacerlo mientras se desarrolla.
A esto en algunos sitios lo llaman eliminar la red de seguridad e implica confiar en tus desarrolladores. En ese punto las cosas cambiarán cómo ocurrió en la fábrica de NUMMI porque los desarrolladores perderán el miedo a parar producción y realizar correctamente su trabajo. Tal vez el problema es que no sabemos si estamos haciendo un buen trabajo o no, echad un ojo a este artículo si os interesa este tema.
Procesos
Y cómo puedo traducir todo esto a lo que hacemos cada día:
- Sustituir los equipos de QA por gente en los equipos de desarrollo que fomenten practicas como TDD.
- Introducir Pair Programming para poder responder antes a las preguntas que nos hagan tirar del cordón.
- Crear un solo entorno de integración (testing, qa, preproducción), no múltiples por equipo para parar la línea de producción si un defecto se identifica y hay que arreglarlo. Hay gente incluso que sostiene que los entornos de staging son un antipatrón.
- Tener alarmas en nuestro camino a producción que paren la línea de producción si introducimos un bug.
- No aumentar el work in progress mientras no hayamos terminado nuestra tarea (One developer, one task)
Guiémonos por principios cuando tengamos que tomar decisiones, el Andon Cord se basa en la idea de fallar rápido. Así que dejemos de intentar ocultar nuestros fallos hagámoslos muy evidentes y atrevámonos a parar producción.