kanjiUn kanban (en kanji 看板 donde kan (看) significa "visual", y ban (板) significa "tarjeta" o "tablero") es un concepto de producción justo-a-tiempo.

El kanban es una tarjeta física que se utiliza en el Sistema de Producción de Toyota (TPS - Toyota Production System) para soportar un control productivo descentralizado por demanda. Actualmente en el desarrollo ágil de software se visualizan los proyectos mediante la publicación de tarjetas con tareas en una pared, lo cual se conoce como "software kanban" o "tareas kanban".

Pero exactamente, ¿qué es kanban? ¿Cómo se puede utilizar en el contexto del desarrollo de software?.

¿Qué es Kanban?

Un kanban es un dispositivo de señalización inventando y desarrollado por Toyota, que instruye la creación o movimiento de partes en un sistema de producción por demanda, generalmente mediante el uso de una tarjeta física. Antes de entrar en el uso de Kanban para el desarrollo de software vamos a ver el uso original de Kanban en TPS (Toyota Production System).

El objetivo de Kanban es minimizar el TEP (Trabajo En Progreso), o stock, entre los procesos. Para lograr esto Kanban se asegura que el proceso superior produzca partes sólo si el proceso inferior las necesita. "Por demada" significa que los trabajadores del proceso inferior consumen las partes que necesitan de los procesos superiores.

proceso de kanban

La figura muestra un modelo abstracto de un sistema Kanban. Se ven dos procesos, uno superior y otro inferior, donde el proceso superior provee de partes (items) al inferior. Para entregar productos al consumidor final, el proceso necesita producir partes y hacerlas circular hacia los procesos inferiores, pero no demasiadas, ya que la sobreproducción se considera el peor de los gastos. Por lo tanto, para prevenir la sobreproducción, el proceso superior no "empuja" partes terminadas al inferior, sino que es el proceso inferior el cual activamente demanda (busca) partes del proceso superior. El lugar donde se guardan las partes se conoce como "almacen" (o "supermercado", de donde originalmente se tomó la idea, al ver que son los mismos clientes quienes toman los productos que necesitan, y no el administrador del local). El almacen está en el proceso superior y funciona como un "buffer" o "cola" para el TEP. Cuando un trabajador del proceso inferior, llamado "manejador de materiales", va al almacen y recoge nuevas partes terminadas, también retorna una señal a producción - por ejemplo, el proceso inferior retira cosas del superior y al mismo tiempo empuja información al proceso superior via tarjetas Kanban. Esto es necesario ya que el proceso superior nunca produce partes sin recibir instrucciones del proceso inferior.

Por lo tanto, en la figura hay dos tipos de Kanban trabajando juntos:

  • Kanban de Retiro: es un item en la lista de compras que el empleado lleva al almacen.
  • Kanban de Producción: instruye al proceso superior a producir partes para los procesos inferiores.

Como se ve en la figura, los Kanban de Retiro circulan entre los procesos, mientras que los Kanbans de Producción circulan dentro del proceso, y se intercambian en el almacen. Detallemos entonces un poco más la mecánica de este procedimiento.

La siguiente figura muestra como funciona el "intercambio de Kanbans" en el almacen.

proceso de almacen kanban

  1. A un empleado del proceso inferior le llega una señal para retirar partes. Esta señal está definida por el proceso inferior y alguna de las siguientes eventos:
    a) señalizado por la cantidad de Kanbas de Retiro recolectadas.
    b) señalizado por un período de intervalos de tiempo.
    El empleado visita entonces el almacen del proceso superior con pallets vacios y su Kanban de Retiro como una lista de compras, la cual indica qué se necesita del proceso superior, y en qué cantidad.
  2. Las partes terminadas por el proceso superior se empacan en pallets y se ubican en el almacen con los Kanban de producción adjuntados (esto ocurre independientemente del paso 1).
  3. El empleado recoge las partes indicadas en su Kanban de Retiro (la lista de compras), comprueba si concuerda con el Kanban de Producción que está adjuntado con las partes, e intercambia los dos Kanban.
  4. Ubica el Kanban de Producción en el "Tablero de Producción", el cual más tarde disparará la producción de partes en el proceso superior cuando los Kanban acumulados alcancen cierto límite.
  5. El empleado se lleva las partes, con el Kanban de Retiro adjuntado, del almacen al proceso inferior.

El almacen es una cola entre los dos procesos, trabajando en en forma independiente, intercambiando cosas e información a través de los Kanban. En la superficie de las tarjetas de Kanban se escribe información (como ser el número/nombre de la parte, cantidad, tipo de pallet, dirección del almacen, etc.), de forma que el manipulador de materiales que toma la tarjeta sepa qué hacer.

Existe una disciplina estricta para llevar adelante Kanban, llamada "las seis reglas de Kanban":

  1. Los procesos Cliente (inferiores) retiran elementos en la cantidad exacta que indica el Kanban.
  2. Los procesos proveedores (superiores) producen items en la secuencia y cantidad exacta que indica el Kanban.
  3. No se mueven o crean items sin un Kanban.
  4. Un Kanban tiene que acompañar a cada item, siempre.
  5. Los defectos y cantidades incorrectas nunca se envian al siguiente proceso inferior.
  6. La cantidad de Kanbans se reduce cuidadosamente para disminuir el stock y revelar problemas.

Como hemos visto, el almacen trabaja como una cola de items, los pallets funcionan como transportadores de partes, y las tarjetas Kanban hacen las veces de "lista de compras". Se convierte en un sistema por demanda, creando un balance entre sostener un "flujo continuo" (eliminando las esperas) y minimizando el TEP (eliminando los desperdicios por sobreproducción). Este mencanismo de gestionar la cantidad "exacta" de TEP en el flujo entre el retiro y reposición de items es exactamente lo que ocurre en un supermercado, y hacerlo de forma correcta es clave para mantener las ganancias del almacen.

Hasta aquí vimos como Kanban funciona en un proceso productivo de manufacturación. Hay que tener en cuenta que lo contado hasta ahora es un modelo simplificado de Kanban. Por ejemplo, el Kanban muestra visualmente el flujo de información e items a todos los trabajadores, y estimula el Kaizen (mejora de los procesos) y el Gemba (lugar de trabajo). El Kaizen comienza al poder observar lo que ocurre en el Gemba. A través del Kanban. todos los trabajadores (y no sólo los directivos) pueden ver el flujo y pueden así detectar desperdicios, y sugerir mejoras al proceso en el cual participan.

Propiedades de Kanban

De todo lo expuesto, a continuación una lista de las propiedades y efectos del concepto de Kanban original en TPS:

  1. Físico: es una tarjeta física. Puede tenerse en la mano, moverse, y ubicarse en algún lugar.
  2. Limita el TEP: limita el TEP (Trabajo En Proceso); por ejemplo, previene la sobreproducción.
  3. Flujo continuo: notifica la necesidad de producción antes de que el almacen se quede sin stock.
  4. Auto-dirigido: contiene toda la información de qué hacer y hace que la producción sea autónoma de una manera descentralizada, y sin micro-administración.
  5. Visual: se apila o pega para mostrar el estado actual y progreso, visualmente.
  6. Señal: su estado visual señaliza las próximas acciones de Retiro o Producción.
  7. Kaizen: el flujo del proceso visual muestra y estimula el Kaizen.
  8. Adjunto: se adjunta y se mueve con las partes físicas provistas.

El objetivo es minimizar el TEP y a la vez mantener un flujo continuo y sustentable. Si el TEP del almacen es muy bajo, el proceso inferior tiene que esperar a los items a que esten terminados, pero al mismo tiempo el TEP tiene que ser minimizado para prevenir sobreproducción. Por lo cual, ambos objetivos entran en conflicto, y el Kanban se convierte en una estrategia para resolver el dilema.

Un Kanban está físicamente adjunto a las partes, se recolecta y reutiliza, por lo tanto la cantidad de Kanbans es fija. También señaliza visualmente al proceso inferior a buscar partes sólo cuando es necesario. Estos dos mecanismos limitan el TEP.

El primer mecanismo, "Kanban físicamente adjunto", trabaja como la ley de conservación de la energía. Una vez que queda definido la cantidad de Kanbans (basado en la cantidad de ventas del producto en el mercado, y la variación intrínseca del propio proceso), el TEP queda limitado en proporción al número de Kanbans, sin importar el flujo entrante o saliente de las partes. El número máximo de Kanbans (la "energía" del sistema) es fija y conserva físicamente el límite superior del TEP en cualquier momento.

El segundo mecanismo, "la demanda", también limita el TEP al hacer que la velocidad del proceso superior dependa de la velocidad de consumo del proceso inferior. El primer mecanismo sólo se refiere a la cantidad de TEP, mientras que este segundo mecanismo se refiere al flujo, su dirección y velocidad.

  • Dirección: el motivador de la producción sólo es dado por el proceso inferior.
  • Velocidad: el Kanban comunica el momento y la cantidad de la próxima producción.
  • Demanda: la demanda limita el TEP al hacer que la producción del proceso superior sea dependiente de los consumos del proceso inferior. Esta dependencia se logra cuando se intercambian los kanban en el almacen, empujando la información de control de producción desde el proceso inferior al superior.

El Kanban también es auto-dirigido y promueve el Kaizen. Al ver las tarjetas de Kanban publicadas en los tableros, todos pueden comprender lo que está ocurriendo y que tan bien funciona el proceso. El Kaizen comienza al poder observar el flujo de trabajo en el Gemba. Y las tarjetas físicas de Kanban en los tableros hacen que el trabajo se haga auto-dirigido sin un control centralizado. Este proceso autónomo provee datos de su performance para soportar el Kaizen, y cambia el centro de atención para la gestión: se deja de asignar y seguir tareas detalladas y se centraliza en actividades de Kaizen.

El objetivo final del Kanban puede ser resumido en "limitar el TEP", "flujo continuo" y "Kaizen". Un sistema Kanban limita el TEP y a la vez mantiene un flujo continuo y sustentable. Amortigua el impacto de la variaciones por causas comunes, y expone las variaciones especiales, que son candidatos para el Kaizen.

Kanban en el desarrollo de software

Veamos un poco nuestra propia área de trabajo: el desarrollo de software. En los desarrollos ágiles, es una práctica ccomun el visualizar y compartir el estado de un proyecto mediante tarjetas pegadas en la pared o en un tablero. En particular, estas tarjetas de tareas pegadas en la pared que muetran el estado actual se las llama "Tarea Kanban" o "Software Kanban".

tablero de scrum kanban agil

En el tablero, las tareas técnicas se representan con tarjetas (notas adhesivas, tipo Post-It), y el estado de cada tarea se muestra al pegar la misma en distintas áreas del tablero: "Pendiente", "En trabajo" y "Terminada". Pero aquí no se visualiza ningún "proceso" (superior o inferior), y en cambio aparece el concepto nuevo de "iteración". Por cada iteración, se identifican nuevas tareas al descomponer historias de usuario, y estas tareas se pegan en el área de "Pendiente".

¿Es esto un sistema por demanda? En un proceso productivo, las partes se movilizan desde un proceso superior hacia los procesos inferiores. En el desarrollo ágil no se visualiza este "movimiento" o movilización de elemetos. Una tarjeta Kanban es la contrapartida de una tarea, las cuales tienen escritas información como la identificación de la tarea, su nombre, tiempo estimado, quién está asignado a la tarea, etc. La tarea tiene un estado ("Pendiente", "En trabajo", "Terminada"), y es compartida por todo el equipo. El enfoque del desarrollo ágil promueve el trabajo en equipo, y tiende a reducir la burocracia dentro del equipo. A esto se lo llama Kanban Ágil.

Por otro lado, se puede utilizar un sistema de Kanban en un desarrollo en cascada tradicional pero con un flujo. El proyecto puede separar y serializar varios procesos, como "diseño", "desarrollo", "validación", etc, y las tarjetas Kanban se mueven entre estos procesos. Cada tarjeta representa un requerimiento para el sistema, y se va moviendo hacia los procesos inferiores. Nótese que esto no es una cascada clásica, donde todos los requerimientos se "diseñan" a la vez, se "desarrollan", se "validan", etc, moviendo todas las tarjetas a la vez en un único grupo. En cambio, las tarjetas van avanzando una a una. Lo que ocurre es una fase estable y sustentable en el ciclo de vida del producto, gestionado con un modelo de transición estilo cascada, con flujo. Aquí se puede ver claramente el "flujo de trabajo", diferente al concepto de "iteración" en ágil, que se parece mucho más a una fábrica con Kanban que el Kanban Ágil. Además, se puede convertir en un sistema por demanda al crear una regla que sólo le permita a los procesos inferiores el mover tarjetas. Esto se llama Kanban Sustentable.

Kanban en el proceso completo de desarrollo

Otro ejemplo seria el uso de Kanban durante el proceso completo de creación de software, como se muestra a continuación.

kanban en desarrollo

Supongamos que existe un equipo de clientes, un dueño del producto, un equipo de desarrollo y un equipo de QA, en todo un flujo para el desarrollo de un producto, y que trabajan juntos pasándose entregables utilizando colas, de manera que cada equipo puede trabajar asincrónicamente, manteniendo la velocidad de trabajo dependiente de los demás. Cada espacio de "Terminado" es, de hecho, la cola de trabajo similar al "almacen" en un proceso productivo en las fábricas, y es muy parecido al sistema de Kanban de TPS. Además, se parece mucho a utilizar Kanban Ágil sincrónicamente dentro de cada proceso, y usar Kanban Sustentable asincrónicamente a través de todo el proceso. El sistema de kanban puede escalar para cubrir todo el flujo de trabajo, de forma de poder visualizar todo el valor del proceso.

En este ejemplo, el TEP puede limitarse al definir el tamaño de cada área o cola. Para hacer que sea un sistema por demanda, se necesita un mecanismo que permita al proceso inferior señalizar al superior para que comience a trabajar. Así, una opción es crear una regla que sólo le permita al proceso inferior mover tarjetas de "Terminado". También se pueden tener "reuniones de iteración" de forma periódica, que sincronicen a los equipos y a la comunicación de información entre ellos. Estas dos opciones de comunicaciones pueden corresponderse a las dos señales de Retiro de partes discutidas anteriormente: un Kanban de señalización de la cantidad de retiros, y un intervalo periódico de tiempo. Aquí, un grupo de historias de usuario para una iteración se corresponde con las partes retiradas de los pallets para la iteración, y la cantidad de partes (Kanban) se corresponde a la velocidad del proyecto.

Entonces, hay varias formas de aplicar los conceptos de Kanban al desarrollo de software. El Kanban Ágil funciona dentro del equipo para compartir información y hacer que el trabajo sea auto-dirigido, pero no soporta flujos. Kanban Sustentable es otro tipo que permite a porciones pequeñas de trabajo circular entre distintos estados. La combinación es Kanban Sustentable + Ágil, la cual utiliza Kanban Sustentable a través de todos los procesos, y Kanban Ágil dentro de cada sub-proceso.

Es importante destacar que el Kanban Ágil, que hoy en día se ve en los proyectos ágiles, sólo se focaliza en un equipo dentro de todo el proceso. Como se ve, podemos expandir el concepto de Kanban Ágil para abarcar a todos los equipos y procesos involucrados en la creación de un producto de software.

Hacer fluir el valor

Cuando se comienza a utilizar Kanban, ¿qué debería representar cada una de las tarjetas de Kanban?

En un sistema de Kanban Ágil, una tarjeta es una "tarea" que surgió de una "historia de usuario". En un equipo de desarrollo, el Kanban funciona como una unidad de trabajo porque todos en el equipo comprenden lo que significa. Pero en sistemas de Kanban que funcionan a través de múltiples procesos (o equipos), lo que fluye debería ser algo con valor reconocible para el cliente. En este caso, un Kanban se corresponde no al "trabajo", sino a una "característica", de forma que todos los involucrados en el proceso, incluso el cliente, pueden comprender el significado y el valor de lo que fluye.

Las "Historias de Usuario", "Items del backlog" o "Casos de Uso" se los llama de forma abstracta como CMV (Características Mínimas Vendibles), de forma que muestran explíticamente que el flujo contiene valor para el cliente. El desarrollo ágil puede explicarse como "hacer que las CMV fluyan lo más rápido posible a través de todo el proceso".

En el ejemplo de Kanban Ágil se descompone el trabajo, y funciona bien dentro del equipo. En el ejemplo de Kanban Sustentable se descomponen las características, y cada tarjeta representa un CMV. Y en el ejemplo de Kanban Sustentable + Ágil se ve una combinación de descomposición de características en los niveles superiores, y una descomposición de trabajo en los niveles inferiores.

Una vez que el flujo queda establecido, los cinco conceptos del "Pensamiento Ágil" pueden aplicarse directamente a todo el proceso. La gestión del proceso sigue los siguientes principios:

  • Especificar el valor desde la perspectiva del cliente - Especificar y ordenar las CMV.
  • Indetificar el flujo de valor y eliminar los desperdicios - Encontrar los bloqueos (tareas bloqueantes).
  • Hacer que fluya el valor por la demanda del cliente - Hacer una "regla de demanda" de Kanban.
  • Involucrar y participar a los empleados - Participar al equipo en el Gemba.
  • Mejorar continuamente en búsqueda de la perfección - Reflexión y Kaizen.

Conclusión

Se utilizan los sistemas Kanban para lograr dos objetivos:

  1. mejor control del proceso - mantienen un flujo continuo y limitan el TEP.
  2. mejor proceso de mejoras - el flujo es visible y se estimula el Kaizen.

El Kanban Ágil se focaliza en el #2, mientras que el Kanban Sustentable se focaliza en el #1. Se pueden combinar ambos enfoques, extendiendo el Kanban Ágil e integrándolo a un Kanban Sustentable.

Por último, los dos pilares de todo el proceso son el Kaizen y las Personas. Toyota produce casi 10 millones de automóviles por año y, al mismo tiempo, mejorar su proceso con cerca de 1 millón de propuestas en el Gemba (el lugar de trabajo). El poder visualizar el trabajo del equipo es siempre el punto inicial para el Kaizen.

Leer más

 

Inspiración.

"Si tú tienes una manzana y yo tengo una manzana e intercambiamos las manzanas, entonces tanto tú como yo seguiremos teniendo una manzana cada uno. Pero si tú tienes una idea y yo tengo una idea, e intercambiamos las ideas, entonces ambos tendremos dos ideas"

Bernard Shaw