SCRUM: Ingeniería de Software y pensamiento Lean

Claro. Si buscamos el significado de SCRUM, seguro vamos a encontrar que es un marco de trabajo de la ingeniería de software, pero en la práctica parece más bien una buena excusa para no documentar o armar los manuales de usuario y para salterarse pasos para poner programas en producción sin probar, que otra cosa.

Pero seamos sinceros. En el mundo real, sin importar cuál sea el tamaño de la empresa o el área de tecnología, hemos puesto programas en producción sin pasar por todas las etapas que dicta el procedimiento establecido por Tecnología… Las excusas son variadas: solucionar un Bug urgente, salir en producción en fecha, compromisos adquiridos por Marketing, que no lo vea la Gerencia a primera hora de la mañana, etc., etc.

En ese sentido, el framework de SCRUM me parece que lleva la realidad más cerca de la teoría que cualquier otra metodología. Pero eso le agrega o le saca mérito a toda la «burocracia» que tenemos desde que se recibe un requerimiento hasta que se pone en producción? No. no creo.

Lean y Agile

La teoría de la metodología LEAN viene de la industria de producción y como un enfoque radical opuesto a la producción en serie. En realidad a la producción en grandes cantidades (conocidas como «batch production», les suena a algo?).

Brevemente, desde que Henry Ford empezó con la producción de sus modelos «T» (por mencionar el más conocido), la industria manufacturera creció en el concepto de que era mejor producir en grandes lotes de un mismo tipo de producto, que en pequeñas cantidades. La idea de esto es que se podía dividir el trabajo en actividades más pequeñas, cada una de las cuales no requeriría grandes capacidades cada una.

El problema es que esta manera de pensar, luego se extrapoló a las otras áreas. La especialización hizo que las áreas de diseño, compras y administración se manejaran también con procesamiento por lotes. Dicho de otra manera:

  • Cuando estamos concentrados en procesar facturas, no tomamos pedidos. Sacamos todas estas facturas y después nos dedicamos a tomar pedidos. Si llegan pedidos mientras estamos procesando facturas, entonces que esperen a que terminemos.
  • Si estamos diseñando el motor, y hay un área que espera el diseño del motor para diseñar el sistema de tracción de un tractor, éste último va a tener que esperar.
  • Si empezamos el turnos hoy envasando sal gruesa, van a tener que esperar hasta mañana para que procesemos sal fina con la misma máquina.

Obviamente esto tiene un impacto en el resto de la cadena de abastecimiento, producción y logística y distribución. Los insumos se envían en grandes cantidades para abaratar costos de transporte y los productos terminados se almacenan en volúmenes suficientes como para no tener problemas de distribución en los canales de venta.

Lean cambia todo esto. Trata de achicar la cadena y todos los elementos involucrados para reducir tiempos, distancias y recursos involucrados para satisfacer de una manera más rápida y eficiente los requerimientos de los clientes.

En Lean no existe una receta única para todos los casos, pero si objetivos claros. El objetivo es eliminar lo que en Lean se conoce como «muda» osea los desperdicios que no agregan valor al proceso.

Tiempos muertos, esperas para poder empezar el siguiente paso de una cadena. Reprocesos por errores en las especificicaciones o la utilización de una máquina o procedimiento apropiado. La compra de insumos en volúmenes mayores a lo necesarios (sólo por las dudas), son algunas de las cosas que se trata de mejorar cuando se encara un proceso aplicación de Lean.

En resumen, el pensamiento Lean se puede resumir en las siguientes ideas:

  1. Definir el valor desde el punto de vista del cliente: La mayoría de los clientes quieren comprar una solución, no un producto o servicio.
  2. Identificar el flujo de valor: Eliminar desperdicios encontrando pasos que no agregan valor, algunos son inevitables y otros son eliminados inmediatamente.
  3. Crear flujo: Hacer que todo el proceso fluya suave y directamente de un paso que agregue valor a otro, desde la materia prima hasta el consumidor final.
  4. Responder a la «tracción» del cliente: Una vez creado el flujo, se es capaz de producir por los pedidos de los clientes en vez de producir basado en pronósticos de ventas a largo plazo.
  5. Perseguir la perfección: Una vez que una empresa consigue los primeros cuatro pasos, se vuelve claro para aquellos que están involucrados que añadir eficiencia siempre es posible.

Cuando hablamos de procesos productivos en una Empresa Industrial, estos principios llevan a aplicar diferentes técnicas para llegar al objetivo de responder a estos principios.

  1. Definir el valor del Cliente lleva a eliminar todo aquello que no agrega valor ni al proceso ni al producto. Tareas burocráticas, excesivo stock, tiempos de reposición para Lean son «Muda» o se desperdicio a tratar de eliminar
  2. Identificar el flujo de valor implica repensar todo el circuito productivo desde que este se diseña hasta que se entrega al Cliente y ver que es lo que se puede cambiar.
  3. Crear el flujo de valor: Lleva a cambiar disposición de equipos y recursos humanos. Una de las grandes ideas de Lean son las céldas de fabricación flexible, dónde los equipos de fabricación debe poder intercambiar roles a los efectos de ser más productivos y estar más involucrados en el proceso o sea ser polifuncionales.
  4. Responder a la «tracción» del Cliente: Esto es muy importante, ya se cambia el paradigma de producir lo que pide el Cliente al «ritmo» que el Cliente lo solicita. Esto lleva a que pidan sólo los insumos necesarios para producir lo que el Cliente pide. O sea, esto lleva al concepto de Just-in-Time.
  5. Perseguir la perfección: En fin. Es una expresión de deseo pero a la vez un mensaje para no aflojar y volver hacia atrás. Formalmente apunta a la Mejora Contínua.

Aplicación en la Industria del Software: AGILE

En el siguiente artículo vamos a ver como pienso que esto se relaciona con las metodologías ágiles, pero ya les puedo anticipar, que esto se parece bastante a la manera en que pasamos desde el manejo típico de proyectos de desarrollo de software (Ciclo de Cascada o SDLC) para eliminar las tareas que no agregan valor a las metodologías ágiles y SCRUM.

Mientras los dejo pensando en estos 5 conceptos básicos y cómo se aplicarían a la industria de software.

Cualquier duda, consulta o discusión los espero en ajsueldo@gmail.com

Continuará…