Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
GESTIÓN DE
PROYECTOS
ÁGILES
INDICE
1. GESTIÓN DE PROYECTOS ....................................................................................................... 3
1.1. Metodologías y herramientas de gestión de proyectos. .............................................. 3
1.2. Herramientas para gestión de proyectos .................................................................... 29
1.3. Diferentes metodologías de gestión ágil de proyectos. (Comparativa) ...................... 39
1.4. Agile thinking. Introducción a la filosofía e idiosincrasia del pensamiento ágil.......... 56
1.5. Ideación ágil. Creatividad e innovación aplicada al agilismo ...................................... 82
2. Gestión de Proyectos Ágiles con Scrum ............................................................................ 105
2.1. Introducción a la gestión de proyectos Scrum .......................................................... 105
2.2. Roles y artefactos en Scrum ...................................................................................... 122
2.3. Aplicación práctica de un ciclo de scrum .................................................................. 140
2.4. Buenas prácticas de la gestión con Scrum ................................................................ 160
3. Gestión de Proyectos Ágiles con Kanban y XP .................................................................. 179
3.1. Kanban I. WIP, processos pull y flujo ........................................................................ 179
3.2. Kanban II. Equipos y proyectos. Gestión evolutiva del cambio ................................ 202
3.3. Kanban III. Mastering Kanban ................................................................................... 229
3.4. Programación externa (XP) ....................................................................................... 265
1. GESTIÓN DE PROYECTOS
1.1. Metodologías y herramientas de gestión de
proyectos.
Otros ejemplos, a lo largo de la historia, pueden ser también obras más o menos
reconocidas, como el Coliseo Romano, la implantación de la red ferroviaria en USA o el viaje a
la luna. Son proyectos en los que, si recapacitamos un poco, podemos darnos cuenta de su
enorme magnitud y de las implicaciones que requerirán en cuanto a planificación, recursos,
imprevistos, resultados esperados, etc.
Una de las primeras constancias que tenemos proviene del ejército estadounidense.
Esta organización, con el objetivo de alcanzar el éxito en los proyectos que iniciaba, comenzó a
desarrollar metodologías que les ayudasen a controlar los proyectos, su evolución y los
resultados obtenidos (coste, plazo, resultados).
Así mismo las incertidumbres a las que se enfrentan los proyectos son cada vez más
inesperadas (cambios en las demandas del cliente/usuario, riesgos macroeconómicos, cambios
regulatorios, etc.)
Todo ello tiene implicaciones directas a la hora de afrontar cualquier tipo de proyecto
en el seno de una corporación y/o de una startup.
Dentro de este capítulo, os explicaré que diferencia hay entre desarrollo en cascada y
desarrollo ágil para, a continuación, ver como aplican las empresas y startups las metodologías
ágiles.
Posteriormente, trataremos las herramientas más habituales para gestionar proyectos y, por
último, veremos algunas recomendaciones y errores habituales a la hora de gestionar
proyectos empresariales.
He intentado por todos los medios que está clase sea bastante práctica, a pesar de que el
contenido es bastante teórico. Espero que te resulte interesante.
Profesionales con un alto conocimiento técnico (digamos, por ejemplo, programación) pero
con unas capacidades deficientes para gestionar proyectos, tendrán mil veces más problemas
para desarrollar un proyecto correctamente frente a un profesional, con quizás menos
conocimiento técnico (programación) pero con una buena capacidad para gestionar el
proyecto y las dificultades que surgirán por el camino.
Esto lo leí hace muchos años en el libro “Como hacer amigos e influir sobre las personas” de
Dale Carnegie (os lo recomiendo 100%) y cada vez estoy más de acuerdo con aquella
afirmación. La experiencia me ha demostrado que es una afirmación 100% real.
Espero que te resulte interesante y puedas conocer las metodologías existentes y que puedas
aplicarlo con criterio a tus proyectos actuales y futuros en el ámbito empresarial.
Hay varios aspectos que considero de vital importancia para gestionar un proyecto con
éxito. Obviamente, la elección de la metodología de gestión del proyecto es un factor
fundamental.
Me gustaría hacer un inciso en este tema. A lo largo de los años he conocido multitud
de proyectos empresariales en diversos sectores en general pero especialmente los
relacionados con Internet.
Tras esta reflexión, como decíamos antes, un PM debe ser el líder que gestione el
proyecto empresarial en cuestión. Para ello, debe tener algunas competencias y aptitudes
básicas que le permitan gestionar todas las variables con garantías.
Para entrar en materia, vamos a ver las competencias básicas que debe poseer un PM:
¿Eres la persona idónea para gestionar con éxito el proyecto que te han encargado en
la empresa? ¿Eres la persona ideal para comandar tu startup?
En Google, como muchos quizás podáis saber, Sergei y Larry fueron los creadores de la
empresa, pero rápidamente contrataron a un directivo para dirigir (gestionar) los inicios de la
empresa.
Es sin duda, uno de muchos de los movimientos más inteligentes que puede hacer un
impulsor de un negocio. En aquella época, Sergei y Larry eran muy jóvenes, técnicamente muy
cualificados pero con ningún conocimiento (ni experiencia) en cuanto a gestión de una
Tanto Sergei como Larry tenían la visión para llevar a Google a ser uno de los mejores
buscadores de la época pero también supieron ver su desconocimiento en gestión y se dejaron
guiar por un profesional
Nota: Es cierto que a veces estas decisiones vienen impuestas por los inversores.
El objetivo de este repaso sobre los inicios de Google era para despertar, en el
emprendedor o impulsor de una startup, la cuestión sobre si es la persona idónea o no para su
proyecto empresarial.
Tal y como veíamos antes, los PM deben poseer determinadas cualidades. Bien estés
trabajando en una corporación o gran empresa y debas escoger un PM para un proyecto
determinado, o bien seas el CEO de una startup y quieras evaluar a un posible candidato para
gestionar un proyecto de tu empresa, te recomiendo la siguiente herramienta.
Rueda de Competencias Clave: es una herramienta muy sencilla y que resulta muy útil
para, de un vistazo rápido, evaluar las cualidades de una persona.
¿Cómo funciona? Muy sencillo, a la hora de evaluar a una persona (o a nosotros mismos),
seguimos los siguientes pasos:
Nota: Este procedimiento, podemos hacerlo nosotros mismos para auto-evaluarnos y conocer
nuestras capacidades de cara a gestionar un proyecto empresarial (nuestra startup, por
ejemplo).
Aviso! Recalcar que NO quiero menospreciar técnicas mucho más elaboradas para evaluar la
valía de una persona para un puesto determinado. El estudio de las personas por parte de los
departamentos de recursos humanos han evolucionado mucho y cada vez los recruiters tienen
más herramientas y técnicas de gran utilidad para conocer en profundidad a los candidatos.
Descargar vídeo
Para que podáis entender mejor los ítems del triángulo, analizamos con más detalle qué se
considera en cada una de ellas:
A continuación, podéis encontrar las reglas que debéis tener en cuenta para “utilizar el
triángulo:
Círculos
Relacionado con el triángulo anterior, os incluyo una infografía que circula por las
redes sociales que representa muy bien el concepto del triángulo. Esta infografía está pensada
desde el punto de vista de una relación entre empresa-cliente con un proyecto entre manos.
Como podéis observar, solo se pueden obtener proyectos en función de dos características
principales, la unión de los tres círculos (y el cuarto) dan como resultado utopías.
Descargar vídeo
Por lo tanto, para una correcta Gestión de un Proyecto, las personas involucradas
(Gestor Proyecto) deben poseer una experiencia y conocimientos (habilidades, aptitudes y
actitudes) acordes al proyecto a desarrollar (tanto conocimientos técnicos y de gestión, tal y
como comentamos en el capítulo anterior.)
He visto multitud de proyectos (sobre todo aquellos con un componente TIC, web y/o
soft) que se dilatan en el tiempo, aumentan los costes o bien no se alcanzan los requisitos
deseados porque no se ha gestionado correctamente.
Una correcta Gestión del Proyecto en cuestión puede suponer la diferencia entre un
proyecto fracasado y/o una empresa de éxito.
empresas aplican este tipo de metodologías sino que startups y freelances aplican distintas
metodologías en función de las necesidades del proyecto para alcanzar los objetivos
necesarios.
Pues bien, las metodologías de gestión de proyectos son iguales. Hay multitud de ellas
y cada una está pensada para un cometido determinado. Por ejemplo, Scrum esta ideado para
desarrollos informáticos (sistemas, apps, webs) al igual que Agile, que además también
permite desarrollos físicos (productos).
Descargar vídeo
Prince2
Además, bajo una metodología Prince2 se elabora un manual de gestión del proyecto
en cuestión para que todos los involucrados hablen el mismo idioma.
Este método fue, en sus inicios, desarrollado únicamente para proyectos TIC aunque la
última versión, Prince2, es compatible con la gestión de todo tipo de proyectos y, en general,
es una metodología muy aplicada por Administraciones Públicas. Dichas entidades sienten la
necesidad de estandarizar la gestión de sus proyectos desde la particular posición de una
administración y de su especial relación con una empresa privada externa, que actúan en
representación de la administración como “dirección integrada de proyecto”.
Bajo estas dos premisas anteriores, el fundador de Toyota, su hijo y el director Taiichi
Ohno (Toyota), generaron un sistema de producción que les permitiese solventar dichas
dificultades.
Inicialmente, conocido como JIT (just in time) ha evolucionado al más conocido hoy en
día como Lean Manufacturing. Posteriormente, en un ambiente industrial se le añadió la
predicción de errores.
Debido a la búsqueda continua por parte de las empresas del beneficio (aumento
ingresos, reducción costes), Lean Six Sigma se ha popularizado tanto en la industria como en el
desarrollo de servicios e incluso gobiernos.
Scrum
Flexibilidad.
Como espero que compartas conmigo, creo que no me equivoco si digo que vivimos en
una sociedad donde los cambios suceden cada vez con más rapidez. Estos cambios en la
sociedad moderna, viene impulsados, entre otros, por la implantación de la tecnología.
Estos cambios, como es lógico, también afectan a las empresas. Por lo tanto, las
empresas necesitan un enfoque más flexible que les permita adaptarse más rápidamente a las
necesidades cambiantes de la sociedad (sus clientes).
Introducción
La revolución industrial, entre muchas otras cosas, supuso la división del trabajo por
tareas, todas ellas, perfectamente diseñadas para encajar con la tarea siguiente en la cadena
de montaje.
Esta división del trabajo se basa principalmente sobre una premisa: ESTABILIDAD y
PREDICCIÓN
A todos se nos viene a la cabeza una cadena de montaje moderna, donde un operario
realiza una tarea más o menos repetitiva sobre unos ítems que recibe siempre en un estado
definido.
Como veíamos antes, la división del trabajo por fases y tareas definidas es un sistema
muy robusto cuando todos los condicionantes permanecen dentro de una estabilidad
determinada.
Como bien sabes, un fallo en una fase y/o tarea determinada en un punto concreto de
la cadena de producción tiene una influencia directa en todos los puestos siguientes de la
cadena de montaje.
Con el objetivo de facilitar una metodología de gestión diferente para solventar los
principales problemas de la gestión tradicional de proyectos, un nuevo grupo de metodologías
ha surgido y se han estructurado en los últimos años.
Descargar vídeo
Tal y como veíamos antes, los proyectos se basan en determinados ítems (información,
entorno, recursos, tiempo, presupuesto, etc.) que se preveían estables.
Estamos ante un cliente que no se comporta igual que hace 2 años y mucho menos
igual que hace 5 años. El cambio en los hábitos del consumidor evoluciona y se prevé que cada
vez suceda con más rapidez, gracias principalmente a la incursión de la tecnología.
Por supuesto, los modelos de negocios de las empresas y startups también han
evolucionado.
Reflexión: Quien le iba a decir a Marriott Internacional hace unos años que una página
web sin habitaciones en propiedad seria su competencia y que además, le superaría en
valoración. Seguramente nadie pensaría que eso era posible. Todo reside en el modelo de
negocio de Airbnb y el cambio en las reglas de juego.
Ejemplo Kodak
Por lo tanto, si damos por valido que el cliente cambia muy rápido y el entorno
también, las empresas (y startups) deben adaptar nuevas metodologías que les permitan
lanzar nuevos proyectos adaptados a las necesidades de los clientes. Es aquí donde surgen las
metodologías Agile y Lean (Lean Startup)
Ejemplo DollarShaveClub
Por lo tanto, han pasado de un modelo de negocio bajo demanda (el usuario acudía a
un punto de venta para comprar los recambios de la maquinilla) a un modelo de suscripción,
donde el usuario, mediante un pago recurrente, recibe cómodamente en su domicilio lo
necesario para su afeitado. Ese sustancial cambio, permite a la startup disponer de un modelo
de ingresos recurrente y predecible (conocen datos del cliente y su carencia para comprar
maquinillas). También permite un ahorro en publicidad y un ahorro en distribución e
intermediarios.
Esta startup, ha sido adquirida recientemente por Unilever, para explotar su base de
datos y para plantarle cara a su competidor: Gillete
Descargar vídeo
Material de Apoyo: Wikispeed. Construir un coche aplicando Agile, Lean & Scrum
Una vez hemos conocido las distintas metodologías disponibles para la gestión de
proyectos empresariales, vamos a entrar ahora en la parte más práctica. En función de la
metodología que escojamos para gestionar nuestro proyecto empresarial, debemos conocer
las distintas herramientas existentes y escoger la más adecuada para nuestro proyecto.
Uno de los objetivos de cualquier clase (y profesor) es que el alumno aprenda sobre un
tema concreto pero también que aprenda a desenvolverse en el futuro por su cuenta. A lo
largo de estos años, me he encontrado con multitud de profesionales, que dentro del área de
gestión de proyectos, no sabían diferenciar correctamente entre técnicas, herramientas y
metodologías.
Diagrama de Gantt
Diagrama de Pert
Esta herramienta se utiliza junto con la estructura de desglose de trabajo y sirve para
definir el departamento y la persona responsable de alcanzar unos resultados determinados
en función de la información contenida en la matriz.
Kanban - Tarjetas
Se trata de una técnica visual que se utiliza para conocer el estado de avance de
diversas tareas. Esta técnica se creó en Toyota, y se utiliza para controlar el avance del trabajo,
como puedes imaginar, más orientado a una cadena de producción.
Tras ver anteriormente distintas herramientas que podemos usar para gestionar
nuestros proyectos empresariales, veremos a continuación algunos ejemplos de aplicaciones y
suites (herramientas digitales) que podemos usar para gestionar nuestro proyecto
empresarial.
Objetivos y Focus
Antes de ver las herramientas disponibles, me gustaría aportar 2 detalles que considero
fundamentales a la hora de gestionar nuestros proyectos empresariales con una herramienta
de gestión:
Utilidad: la suite escogida debe ser cómoda y practica para los integrantes del
proyecto. De nada sirve que la suite tenga mil funcionalidades y que eso implique
más dificultad para el usuario y que por ello, dificulte todavía más su tarea.
Colaboración
Es por ello, que una característica de vital importancia hoy en día es la colaboración
(en línea y en directo) de las distintas personas que tienen influencia en el devenir del
proyecto.
Ejemplo: Bitrix
Aplicaciones nativas
Una aplicación que encaja con esta categoría es Microsoft Enterprise Project
Management. Esta herramienta, dispone de un software que debe ser instalado en el propio
ordenador del usuario para así poder usarla. Se trata de una herramienta muy potente, que
tras una implantación (generalmente con un coste elevado y realizada por expertos) permite
gestionar todos los aspectos relevantes de un proyecto y/o empresa.
Suites
SAP: SAP es una multinacional alemana que ofrece multitud de soluciones en cuanto a
software de gestión y de gestión de proyectos. Es una empresa referente en su sector,
siendo su nombre (SAP) asociado a sistemas de gestión empresarial que a su vez
generan especialización en distintos profesionales.
Hay multitud de herramientas, y cada una de ellas tiene sus peculiaridades en función
de las necesidades del proyecto a gestionar.
Si además dispone de sistema offline para poder trabajar sin conexión a Internet (no
hay nada más molesto que tener que trabajar y no poder hacerlo por no disponer de conexión
a Internet) pues entonces ya es la solución perfecta.
Una cuarta cualidad de la aplicación, quizás una de las más importantes, es que resulte
sencilla de implantar, sencilla de usar y que la curva de aprendizaje para adaptarse a la
aplicación sea muy rápida. No hay nada peor como escoger una aplicación determinada y que
resulte una complicación añadida para tu equipo. Eso conllevara frustración y dejadez a la hora
de gestionar sus tareas en la herramienta en cuestión.
No hay nada peor como creer que una herramienta está actualidad con la última
información sobre el desarrollo del proyecto en cuestión y encontrarte con que realmente no
es así. O peor aún, tomar decisiones pensando que si lo está.
Alguna de ellas:
LeanKit
KanbanFlow
Agile Zen
Trello
Puedes hacer una búsqueda específica para tu propia empresa y/o startup, según tus
necesidades aquí.
También hay algunos errores, que al igual que las recomendaciones, se van aprendiendo a
base de cometerlos.
Espero poder trasladarte con estas recomendaciones algunos tips útiles para que puedas
aplicar en tus proyectos.
No definir claramente los objetivos finales del proyecto, los objetivos intermedios y
los objetivos para cada miembro del equipo.
Definir erróneamente las fases, tareas y recursos necesarios para la ejecución del
proyecto.
No permitir cambios a lo largo de la vida del proyecto.
Solo analizar resultados al final del proyecto.
Pensar en el equipo casi como un ítem más del proyecto y no como una parte
fundamental del proyecto.
No disponer de un canal de comunicación fluido y eficaz entre los miembros del
equipo así como con externos (proveedores...).
1.3.1. INTRODUCCIÓN
Las metodologías de gestión de proyectos comenzaron a gestarse como tal en los años
50, en el ejército estadounidense, con el objetivo de intentar reducir el volumen de proyectos
que se descontrolaban y ayudar a solventar problemas comunes que se habían identificado en
relación a:
Actualmente, nos encontramos en una era 3.0 en la que la organización del trabajo por
proyectos se está convirtiendo en una realidad cada día mas presente en las empresas. Este
tipo de organización requiere de formas de gestión y colaboración nuevas para poder
favorecer las nuevas formas de implementar. Por ejemplo, un responsable de proyecto no
tiene un estatus jerárquico específico pero constantemente se ve obligado a negociar sin
poder emplear una autoridad ligada al estatus. Consecuentemente es uno de los primeros
responsables de la empresa que debe desarrollar sus competencias de gestión transversal.
Como veremos a lo largo del capítulo, la gestión de proyectos puede ser predictiva o
ágil y, como ocurre en cualquier disciplina, existen defensores de una y de otra. La decisión
final de cuál elegir dependerá de varios factores pero uno de los más importantes es la
prioridad final para el proyecto ya que como veréis a continuación, mientras que la
metodología predictiva le otorga más importancia a los procesos, los métodos ágiles
consideran que el valor o utilidad final del resultado que se quiere obtener es lo más
importante.
Su principio general se basa en que “la forma más eficiente de desarrollar un trabajo es
hacerlo bien a la primera”, pero la realidad nos dice que esto solo es posible si se puede
conocer al detalle el resultado que se quiere obtener y se trabaja en un entorno estable.
PMP
Iniciación: Define y autoriza el proyecto o una fase del mismo. Está formado por dos
procesos.
Planificación: Define y refina los objetivos y planifica el curso de acción requerido
para lograr los objetivos y el alcance pretendido del proyecto. Está formado por
veinte procesos.
Ejecución: Compuesto por aquellos procesos realizados para completar el trabajo
definido en el plan a fin de cumplir con las especificaciones del mismo. Implica
coordinar personas y recursos, así como integrar y realizar actividades del proyecto
en conformidad con el plan para la dirección del proyecto. Está formado por ocho
procesos.
Seguimiento y Control: Mide, supervisa y regula el progreso y desempeño del
proyecto para identificar áreas en las que el plan requiera cambios. Está formado
ITIL
Aunque se desarrolló durante los años 80, ITIL no fue ampliamente adoptada hasta
mediados de los años 90. Esta mayor adopción y conocimiento ha llevado a varios estándares,
incluyendo ISO/IEC 20000, que es una norma internacional cubriendo los elementos de gestión
de servicios de IT de ITIL. Los estándares de calificación ITIL son gestionados por la ITIL
Certification Management Board (ICMB) que agrupa a la OGC, a itSMF International y a los dos
Institutos Examinadores existentes: EXIN (con sede en los Países Bajos) e ISEB (con sede en el
Reino Unido).
PRINCE Y PRINCE 2
Este método fue inicialmente desarrollado solo para proyectos TIC aunque la última
versión, PRINCE2, es compatible con la gestión de todo tipo de proyectos. En general, se trata
de una metodología muy aplicada para aquellas administraciones públicas que sienten la
necesidad de estandarizar la gestión de sus proyectos desde su posición. Además, pueden
complementar su trabajo con una empresa privada externa de “dirección integrada de
proyecto” que actúe en nombre y representación de la administración.
Analizar los errores más habituales que impiden que los proyectos lleguen a buen
término y que no se ajusten a lo esperado en términos de resultado, plazo o rentabilidad nos
ayudará a elegir correctamente la metodología a aplicar.
No definir claramente los objetivos del proyecto: Una de las principales causas del
fracaso de los proyectos es la falta de objetivos claros, medibles y alcanzables. Es
necesario saber qué se quiere conseguir para poder dirigir convenientemente los
esfuerzos de todas las partes implicadas. Además, es fundamental en este proceso
la gestión de las expectativas del cliente, ya sea interno o experto, para asegurarse
de que los objetivos fijados están alineados con lo que realmente espera obtener y
garantizar así su satisfacción con el resultado del proyecto.
Planificar de forma errónea las fases, tareas y recursos necesarios para la ejecución
del proyecto: En esta planificación es imprescindible ser realista y, para ello, la
experiencia acumulada juega un papel fundamental para evitar subestimar las
necesidades de recursos o los plazos necesarios para la ejecución de cada una de las
tareas. Además, deben definirse hitos que sirvan como referencia de la evolución
del proyecto y faciliten su posterior seguimiento. Todo ello sin perder la visión
global del proyecto. Una planificación adecuada permite a los miembros del equipo
conocer con anticipación los próximos pasos a seguir para evitar retrasos y tiempos
muertos.
No utilizar la metodología adecuada: Cada tipo de proyecto (en función del sector,
tamaño, tipo de cliente, etc.) requiere una organización diferente que viene ligada a
una metodología de gestión de proyectos concreta que determinará la forma de
trabajar, los roles y responsabilidades en la organización, el sistema de seguimiento,
etc. No elegir una metodología y esperar que la organización aparezca de forma
espontánea es un error.
Analizar los resultados al final del proyecto: Hay que analizar periódicamente el
grado de avance, los resultados parciales, los hitos alcanzados y el cumplimiento de
la planificación prevista con herramientas de análisis adecuadas que nos den la
información necesaria en tiempo real para la valoración del proyecto y la toma de
las decisiones necesarias. Así, podremos identificar y corregir posibles errores.
Pensar en el equipo como un actor secundario del proyecto: En ocasiones, se tiende
a considerar que el proyecto en sí mismo, la metodología utilizada y la planificación
son elementos suficientes para asegurar el éxito de un proyecto,
independientemente de las personas que lo ejecuten. Si los miembros del equipo
no tienen la cualificación necesaria para las tareas encomendadas, no se sienten
parte fundamental del proyecto y no están alineados ni comprometidos con un
mismo objetivo o no se gestionan adecuadamente los posibles conflictos que
puedan surgir en las relaciones personales, el fracaso del proyecto está garantizado.
Entender el proyecto como algo estático y aislado: Si el proyecto no se maneja
durante su ejecución como un elemento dinámico que debe asumir y gestionar los
cambios internos o externos que aparezcan, será imposible reaccionar a tiempo y
alcanzar los objetivos previstos.
Escritorio:
Basado en la web:
Personal:
De colaboración:
Multi-Usuarios o corporativos:
NOTA: cotillea algunas de las últimas versiones para hacer Gantt usando el cloud o para hacer
gantts y compartirlos con un equipo. Te dejo unos links:
Appvita
Gantto
Para mucha gente, el encanto de estas metodologías ágiles es su reacción flexible ante
la burocracia de las metodologías tradicionales ya que estos nuevos métodos buscan un justo
equilibrio entre la no-existencia de procesos y el exceso de los mismos. El resultado de todo
esto es que, en general y como filosofía de base, los métodos ágiles cambian
significativamente muchos de los parámetros que definen la gestión tradicional de proyectos
como por ejemplo:
detalle para un plazo largo de tiempo y esto funciona bien hasta que las cosas
cambian, así que su naturaleza es resistirse al cambio. Para los métodos ágiles, no
obstante, el cambio es bienvenido. Intentan ser procesos que se adaptan y crecen
en el cambio, incluso al punto de cambiarse ellos mismos.
Los métodos ágiles están orientados a las personas en lugar de al proceso. La meta
de los métodos tradicionales es definir un proceso que funcionará bien con
cualquiera que lo use. Sin embargo, los métodos ágiles afirman que ningún proceso
podrá maquillar las habilidades del equipo de modo que el papel del proceso es
apoyar al equipo en su trabajo. Explícitamente puntualizan el trabajar a favor de la
naturaleza humana en lugar de en su contra y enfatizan que el trabajo debe ser una
actividad agradable.
No voy a entrar en demasiado detalle en este momento ya que a lo largo del postgrado
ahondareis más en estas diferencias para que podáis discernir con claridad lo que es un
proceso adaptable y centrado en las personas, sus beneficios, desventajas, etc.
Para la gestión ágil de proyectos siempre es más que aconsejable trabajar con
herramientas visuales localizadas y físicas para el equipo, sobre todo al empezar a trabajar con
este tipo de metodologías para así generar una rutina y compromiso con el equipo. Pero si
bien esto es cierto, en ocasiones veréis que es necesario aplicar herramientas online ya que
contamos con equipos deslocalizados, etc.
VersionOne
Scrumblr mirad aquí la demo: http://scrumblr.ca/demo
Banana Scrum
Scrum Desk
VirtualKanban
Trello
Existen diferentes factores que nos marcan el contexto de un proyecto. Para esta
unidad, como modo introductorio a las posteriores, veremos en un contexto genérico qué
debemos tener en cuenta y cómo se enfrentan cada uno de los marcos de trabajo propuestos
a las situaciones normales de cualquier proyecto para que pueda serviros como referencia
base.
La estimación es difícil por esta y otras muchas razones. En parte porque el desarrollo
es una actividad de diseño, difícil de planear y costear, en parte porque los materiales básicos
cambian rápidamente, en parte por lo mucho que depende de los individuos involucrados, ya
que los individuos son difíciles de predecir y cuantificar.
Por todo ello es importante comprender que ante un mismo o similar contexto, cada
metodología se enfrenta de forma diferente a la situación. En el cuadro anexo podéis ver
algunas notas como referencia:
Una de las partes más difíciles en un proyecto es saber con precisión dónde nos
encontramos y, teniendo en cuenta a donde queremos ir, queé cosas podemos encontrarnos
en el camino. Necesitamos un mecanismo de retroalimentación que pueda decirnos con
precisión cuál es la situación del proyecto a intervalos frecuentes.
A modo de resumen, puedes ver en este cuadro cómo reaccionan ante el cambio las
metodologías agiles y las tradicionales:
Una parte clave de la noción taylorista es que es necesario establecer ciertos procesos
estandarizados de tal forma que el producto funcione independientemente del equipo que
ejecute el proyecto. A lo largo de la historia reciente, nos hemos dado cuenta de que cada vez
es más importante retener y comprometer equipos de valor dentro de la compañía ya que
esto será en gran parte lo que nos haga competitivos en el mercado.
Una vez consideramos esto como principio, entendemos que cuando contratamos a
alguien en nuestro equipo es porque entendemos que esa persona es la mejor y más
cualificada para ejecutar el trabajo y, por tanto, también para, en muchos casos, decidir cómo
dirigir su trabajo técnico. La noción Taylorista de un departamento de planificación separado
que decide de forma independiente cómo hacer las cosas solo funciona si los planificadores
entienden mejor cómo hacer bien el trabajo que aquellos que lo hacen.
A menudo, los procesos se imponen desde la gerencia y esto suele provocar rechazo
por parte del equipo, particularmente cuando la gerencia ha estado fuera del desarrollo activo
desde hace tiempo y parte de sus planteamientos están obsoletos en la práctica. Una razón
importante para esto es el ritmo del cambio de tecnología en nuestra industria. Después de
unos años, el conocimiento técnico se vuelve obsoleto. Esta vida media de habilidades técnicas
no tiene parangón en cualquier otra industria. Incluso los técnicos tienen que reconocer que
entrar a la gerencia significa que sus habilidades técnicas se marchitarán rápidamente. Los ex
desarrolladores necesitan reconocer que sus habilidades técnicas desaparecerán rápidamente
y necesitan confiar en los desarrolladores actuales y, en cierto modo, depende de ellos.
Aceptar este proceso requiere compromiso con el resultado final del proyecto y, como tal, se
requiere de la participación activa de todo el equipo.
Los miembros del equipo deben poder tomar todas las decisiones técnicas. Vais a ver
que en XP se llega al corazón de esta teoría cuando en su proceso de planeación establece que
solo los desarrolladores pueden estimar cuánto tiempo llevará hacer un trabajo. Tal liderazgo
técnico es un gran cambio para muchas personas en posiciones gerenciales ya que implica
compartir una responsabilidad donde ejecutores y gerencia tienen un mismo lugar en la
dirección del proyecto.
Conclusión
Gran parte de la ventaja de los métodos ágiles es su peso ligero y el hecho de que son
flexibles ante entornos con requisitos volátiles y cambiantes. Pero también debemos ser
conscientes de algunas limitaciones y restos como por ejemplo, poder aplicar este tipo de
metodologías en entornos mas grandes (hasta ahora, siempre han venido a ser usados en
equipos pequeños o pilotos dentro de una organización) y de cómo incorporar a clientes,
directivos y proveedores en el proceso.
El modelado es esencial.
Roles específicos y muy jerárquicos.
La relación se ciñe a lo establecido en el contrato.
El cliente solo da feedback, no interactúa habitualmente con todo el equipo.
El equipo: orientados al plan.
Confianza: conocimiento explicito documentado.
Son más efectivas en proyectos grandes con equipos complejos.
La arquitectura sirve al inicio del proyecto para definirlo.
El énfasis está en la definición del proceso (roles, actividades, entregables y
artefactos).
Lo ideal es que no ocurran grandes cambios.
1.4.1. CONTEXTO
Niels Bohr,1922
Si atendemos al Informe de CHAOS 2009 podemos ver como solo el 32% de los
proyectos son exitosos, mientras que un 24% son fallidos y un 44% son modificados. Como
conclusiones aparecen:
Por un lado, la necesidad de asumir la cultura del fallo o error, sabiendo que por
mas que nos preparemos podemos no tener éxito. Es decir, asumir que será
necesario comenzar de nuevo; “Europeans must accept that success in the tech
startup world comes through trial and error. Europeans prefer great plans that
don't fail. But that is not how Google, Facebook, Amazon, Apple were born.” –
fragmento entrevista Martin Varsavsky FORTUNE.
Por otro lado, vemos cómo nos debemos sentir cómodos y poner medios para ser
capaces de cambiar y alterar los proyectos, ya que de una u otra puede suceder, y
para mejorar este hecho, busquemos una construcción de líneas de tiempo y
- Las estructuras jerárquicas y estancas: las jerarquías, tal y como hoy las entendemos,
surgieron para resolver dos problemas clave de la Era Industrial: la eficiencia y la
escalabilidad. La producción masiva -ya fuera en la industria pesada a inicios de siglo o
a finales de los años 90 en la denominada “industria del software”- exigía un ejército
ordenado que cumpliese fielmente las órdenes de sus superiores.
Sin embargo, como hemos visto, las circunstancias que nos rodean han cambiado por
completo. La eficiencia y la escalabilidad han dejado de ser centrales y han sido sustituidos por
nuevos valores como la colaboración, el compromiso, la transparencia, la creatividad y la
innovación, con objeto de adaptarse a los nuevos tiempos y los nuevos usuarios. Por ello,
podemos decir que nos estamos adentrando en la Era de la Colaboración, rodeados por un
océano de información que nadie es capaz de manejar, creando interrelaciones tan complejas
que difícilmente podemos gestionar, e intentando seguir el ritmo de una realidad que cada día
1.4.2. INTRODUCCIÓN
Realizando una pequeña parada se debe puntualizar que tanto el agilismo como otras
filosofías y metodologías dentro y fuera del mundo del software (diseño, innovación,
negocios..) no han aparecido porque sí, si no que suelen ser la evolución y puesta en relevancia
de praxis ya realizadas en pequeños ámbitos que han resultado más óptimas y válidas que las
tradicionales en el tiempo actual. A su vez, asumir este hecho, no es renegar por completo de
la modelización de gestión de proyectos de antaño, sino que en cada caso se deberá evaluar la
idiosincrasia del mismo para ver que se adecua mas, así como pueden ser complementarias.
Por tanto vemos cómo, a semejanza de otras disciplinas y áreas, muchas de las
premisas hoy validadas y utilizadas provienen del mundo del automóvil y su traslación a otros
sectores. Partiendo de esos orígenes podemos encontrar que ya a partir de 1990 con
anterioridad al Manifesto Ágil comienza a madurarse el concepto de desarrollos ágiles dentro
de la industria del software y ya para su firma en 2001 existen publicaciones relevantes:
Así mismo desde 2001 comienza un auge en el movimiento, impulsado por nuevas
publicaciones:
Todo ello conforma el denominado término “ágil” una corriente de conocimientos que
está marcando un cambio en la manera de gestionar los proyectos, comenzando a salir incluso
más allá de la industria del software.
Los integrantes de la reunión resumieron los principios sobre los que se basan los
métodos alternativos en cuatro postulados, lo que ha quedado denominado como Manifiesto
Ágil.
Hasta 2005 han sido frecuentes las posturas radicales entre los defensores de los
modelos de procesos y los defensores de modelos ágiles, quizá más ocupados en descalificar al
otro que en estudiar sus métodos y conocerlos para mejorar los propios.
En el Manifiesto Ágil, firmado por Kent Beck, Mike Beedle, Arie van Bennekum, Alistair
Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt,
Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff
Sutherland y Dave Thomas, se expone que:
Aunque hay valor en los elementos de la derecha, valoramos más los de la izquierda.”
1.Valorar más a los individuos y su interacción que a los procesos y las herramientas:
se trata del principio más importante del Manifesto. Conscientes de la necesidad de los
procesos como guía operación y de las herramientas como mejora de la eficiencia, no se puede
entender un desarrollo sin las personas y sin su conocimiento técnico y actitud adecuada. Sin
ellos no se producen resultados.
Con teorías de recursos humanos en las que las empresas predican que sus empleados
son lo más importante, la realidad es que a finales del siglo XX e inicios del XXI la maximización
del uso de la reingeniería de procesos ha dotado a estos de una relevancia principal en
búsqueda de la optimización y eficacia, poniendo en un segundo plano a las personas. Sin
embargo, gran parte de su valor se debe al conocimiento y al talento de las personas implícitas
en los procesos, ya que sin ellos carecen de propio sentido.
Por ello, entendiendo los procesos como una ayuda y un soporte para guiar el trabajo,
estos deben adaptarse a la organización, a los equipos y a las personas; y nunca al revés. La
defensa a ultranza de los procesos lleva a postular que con ellos se pueden conseguir
resultados extraordinarios con personas mediocres, y lo cierto es que este principio es
peligroso cuando los trabajos necesitan creatividad e innovación.
con los prototipos. Por eso, siempre que sea posible debe preferirse y reducir al mínimo
indispensable el uso de documentación, que genera trabajo que no aporta un valor directo al
producto.
Por contrapartida, en según que sectores o casos, se aprecia que cada proyecto tiene
una idiosincrasia individual, difícilmente comprensible en sus inicios.
Las prácticas ágiles están especialmente indicadas para proyectos difíciles de definir
con detalle en el principio, o que si se definieran así tendrían al final menos valor que si se van
enriqueciendo con retro-información continua durante el desarrollo. También para los casos
en los que los requisitos van a ser muy inestables por la velocidad del entorno de negocio, una
constante dentro de la incertidumbre de algunos sectores en los que se opera en la actualidad.
En el desarrollo ágil el cliente es un miembro más del equipo, que se integra y colabora
en el grupo de trabajo. Los modelos de contrato por obra no encajan, sino que debemos
buscar nuevos modelos que encajen con las premisas de flexibilidad y responsabilidad
compartida
Tras los cuatro valores descritos, los firmantes redactaron los siguientes, como los 12
principios que de ellos se derivan:
Como se deriva del Manifiesto Ágil, las metodologías ágiles son una nueva filosofía de
gestión de proyectos e iniciativas, que favorece la entrega de valor desde el inicio del proyecto.
Se basan en una serie de principios y valores que cambian la forma de relacionarse entre los
integrantes del equipo, así como con el cliente y que están dando excelentes resultados en
centenares de empresas de todo el mundo.
Las interacciones entre las personas y la flexibilidad para incorporar cambios, son
esenciales. El foco es ser capaz de entregar un resultado al cliente lo antes posible, sobre el
que seguir construyendo y refinando mediante iteraciones cortas. Siempre confiando en el
equipo, autoorganizándose y colaborando.
De la jerarquía a la redarquía
Del trabajo individual a la participación en un equipo
De la planificación lineal a la iteración
Del pensamiento analítico a la actitud reflexiva
Del cliente pasivo al cliente activo
De la documentación escrita y laboriosa al Visual Thinking
desarrollo del trabajo surgió en base a la búsqueda de la eficiencia, si bien el mayor problema
es su propia idiosincrasia basada en la gestación de las órdenes principales y estrategia en la
parte alta de la jerarquía descendiendo a lo largo de la cadena, permitiendo mínimas
adaptaciones. Además, a semejanza de su analogía con el ejército, se enorgullece de la
capacidad de los soldados de ejecutar las órdenes sin cuestionarlas ni pensar.
Patrón único de sesgo de las empresas en el siglo XX, la necesidad del mercado actual
basado en una incertidumbre desconocida hasta el momento, ha ocasionado la búsqueda de
nuevos modelos de definición de ciertas líneas estratégicas que permitan formas más flexibles
y ágiles de interpretar la estrategia en cada punto de la cadena de mando. Los nuevos espacios
de comunicación -los blogs, wikis y redes sociales- están teniendo un impacto real y tangible
en el seno de las organizaciones. Por último, el impulso de las nuevas generaciones,
acostumbradas a aprender, procesar la información, colaborar y, en definitiva, hacer las cosas
de forma diferente a las generaciones anteriores, está ocasionando una translación en el
sentido de entender el poder y las relaciones personales.
En definitiva, está emergiendo un nuevo orden para dar respuesta a los retos actuales:
la redarquía.
La jerarquía es un orden impuesto (de arriba abajo) que establece las relaciones de
autoridad y poder formal entre superiores y subordinados en el seno de las organizaciones
tradicionales. La redarquía, en cambio, es un orden emergente (de abajo arriba) que surge
como resultado de las relaciones de participación y los flujos de actividad generados en los
entornos colaborativos.
A su vez, es muy importante comprender que este nuevo orden no viene para acabar
definitivamente con las jerarquías, sino que se trata de complementarlas y mejorarlas,
dotándolas de transparencia y eficacia para aprovechar al máximo el potencial de los
individuos. Se trata de proporcionar y generar sistemas capaces de resolver los problemas
complejos. No se trata, por tanto, de dos modelos excluyentes, sino de dos estructuras
complementarias.
Un concepto muy interesante que refuta la fortaleza del equipo frente al individuo es
la ZDP (Zona de Desarrollo Próximo) introducido por Lev Vygotski en 1931: la distancia entre el
nivel de desarrollo efectivo del alumno (aquello que es capaz de hacer por sí solo) y el nivel de
desarrollo potencial (aquello que sería capaz de hacer con la ayuda de un adulto o un
compañero más capaz).
Un equipo multidisciplinar es aquel que reparte tareas y cada uno realiza las de su
especialidad sin entrar en detalle en las otras, asumiendo la responsabilidad de
aquello en lo que ha sido parte activa.
Un equipo interdisciplinar es aquel que no aboga por la realización de tareas, sino
por la consecución de un fin mayor (objetivo proyecto) y todos ponen su
experiencia y esfuerzo al servicio del equipo, compartiendo el riesgo y los éxitos de
todas las fases y tareas, sea cual sea su participación en las mismas.
Para entender las dinámicas de grupos y la participación como agentes activos de las
mismas, debemos ser conscientes de los principios básicos asociados a las mismas así como
sus barreras o problemáticas.
Lo importante no son las personas, sino las relaciones que se establecen entre
ellas: aun teniendo en cuenta la complejidad y número de individuos, el éxito del
mismo no se basa en dicha cifra, sino en la calidad y cantidad de conexiones entre
ellos.
Tendemos a pensar de forma individual antes que como grupo: solemos enfocar
los problemas como individuo, sin contar con el grupo (ni lo que representa ni sus
particularidades). Debemos de dejar de pensar como individuos y pensar de una
forma más holística sintiéndonos parte de algo más grande que nosotros mismos,
queriendo apoyar para que funcione. Si no disponemos de ese alineamiento, la
colaboración será complicada.
Debemos dejar a un lado la seriedad: aunque parezca trivial remarcar este punto,
debemos comprender que la colaboración surge en ambientes positivos y
distendidos. El pasarlo bien nos predispone a una actitud mental más abierta y
participativa. Ello debe plasmarse tanto en dinámicas como en espacios (oficinas
Google).
Hace más de dos décadas, ya Boris Beizer había anotado un fenómeno interesante en
su libro 'Software System Testing and Quality Assurance': “El costo de corregir un defecto es
directamente relacionado a su grado de exposición pública”. Cada defecto tiene un costo
asociado a su corrección. Este costo es menor mientras más temprano se detecte en el
proceso de desarrollo del proyecto. Este costo incluye factores de arquitectura, equipo
técnico, equipo de desarrollo y calendarización y rastreo. Pero el costo más grande de un
defecto se refleja en la pérdida de credibilidad con el cliente. El defecto más costoso de todos
será aquel encontrado por el cliente. Es decir, que el factor de éxito de las metodologías ágiles
no solamente ha sido la capacidad de manejar requerimientos cambiantes, sino también el
dramático incremento de calidad del producto entregado mediante una retroalimentación
mejorada.
Sin embargo, un valor intrínseco del agilismo es la apertura del proceso y la repartición
de responsabilidades más allá del equipo, involucrando en el proceso de desarrollo del
proyecto al usuario/cliente de manera activa y efectiva. Debemos ser conscientes de la
importancia de su rol en nuestro éxito y hacerlos participes del mismo, ya que nuestra
interactuación activa con estos agentes es fundamental más allá de fases concretas, sino a lo a
largo de la línea de tiempo.
Sin embargo, las personas no pensamos o asimilamos por palabras, sino que
traducimos todo en imágenes de manera natural. Así cuando me cuentan una historia yo la
recreo en mi mente con objeto de entender su complejidad y asimilarla.
En los últimos años, este hecho ha desembocado en una involución hacia el uso de
imágenes, esquemas, artefactos… es decir, herramientas que nos permitan recrear y
comprender la realidad que nos rodea. Herramientas de síntesis de la información, utilizadas
para converger el pensamiento y construir un marco en el que poder realizar una comprensión
y asimilación efectiva, permitiendo generar conversaciones.
Ello da como resultado una nueva disciplina denominada Visual Thinking (Wikipedia:
visual thinking is the common phenomenon of thinking through visual processing using the
part of the brain that is emotional and creative to organize information in an intuitive and
simultaneous way).
1.4.5. RESUMIENDO
Cada día se demuestra con nuevos casos como una empresa pequeña y ágil es capaz
de reformular un sector, poniendo en jaque todo un mercado y las empresas largamente
establecidas en él. Empresas líquidas, con capacidad de adaptación a los cambios basadas en
organigramas flexibles, capacitadas para generar la mejor organización con las mejores
personas en cada momento. Cada situación requiere de una jerarquía distinta con personas
que lideren estructuras diferentes según las necesidades de la misma.
Respecto a una empresa tradicional, opaca en ocasiones para su público objetivo, una
empresa ágil sirve a las necesidades de sus clientes de la mejor forma posible, integrándolos
en profundidad, abriéndoles sus puertas y estableciendo valores de transparencia. De la misma
manera, su relación con colaboradores traspasa la propia de definición de proveedor (relación
de subordinación), integrándolos como compañeros de viaje (relación de riesgo compartido).
En última instancia, es capaz de entender nuevos conceptos como la coopetición, siendo capaz
de colaborar e interactuar con su propia competencia de manera efectiva y provechosa.
profunda reflexión en la manera en que creamos y desarrollamos las empresas, así como la
resolución de problemas desde un prisma más amplio.
Design Thinking
Business Design
Lean Startup
Customer Development
Design Thinking
El Design Thinking (DT) o Pensamiento de Diseño es una disciplina que pretende aplicar el
proceso de diseño como enfoque holístico para la resolución de problemas. En un gran auge
en las escuelas de negocio de todo el mundo en los últimos años, su vínculo con ciertas áreas
concretas ha desarrollado disciplinas con entidad propia como el Service Design o el Business
Design.
Business Design
Como hemos visto, es la aplicación directa de los principios de diseño al mundo de los
negocios. Se basa en la generación de hipótesis, la definición de modelos de negocio, su
prototipado e iteración en detrimento de la planificación y el Plan de Empresa.
Lean startup
Customer Development
1.5.1. CONTEXTO
Esto, unido al desarrollo de las vías de comunicación y distribución, hace que hablemos
de un mercado global y que el pensamiento de las empresas comience a ser GLOCAL (acción
local, alcance mundial).
Por norma general, se considera que una idea fallida es consecuencia de un mal
desarrollo o finalización. Sin embargo, en un alto porcentaje, las causas se deben, en su etapa
inicial, a un incorrecto planteamiento del problema o a caminos iniciales mal seleccionados. La
causa principal se debe a una baja exploración inicial del contexto y un trabajo más enfocado
en la ejecución final y puesta en funcionamiento que en la construcción y maduración de la
idea.
Por otro lado encontramos que la mayoría de las empresas o emprendedores fallan
por falta de clientes más que por un fallo en el desarrollo de producto / servicio
Por contrapartida, hoy en día debemos explorar nuevas posibilidades orientadas hacia
una investigación más cercana al usuario que nos permita conocerlo en profundidad e
identificar sus necesidades, como punto de partida necesario. El objeto es ponernos en la piel
de la persona que usará el producto o servicio y plantearlo como si fuera aquella persona
quien lo estuviera desarrollando. Se trata de desarrollar la capacidad de tener empatía con la
persona objetiva y, a ser posible, integrarla en el propio proceso de desarrollo.
Una meta gigante, inalcanzable quizás, nos da posibilidades mayores de crear nuevas
formas de actuar antes las incipientes necesidades aun no descubiertas. Y es ahí donde
debemos actuar.
El problema es ¿cómo capto estas ideas? ¿Es realmente una buena idea lo que creo
que lo es? Todas estas cuestiones paralizan a muchos, porque muchas veces nuestras idea se
desinflan rápidamente, no son solidas. Por ello debemos asumir dos capacidades, el
pensamiento disruptivo y la capacidad de hibridación. Ambas nos ayudaran a modelar y
entender la idea. También debemos abrazar la cultura del prototipado rápido, que nos
conferirá la idoneidad o no del producto. El mejor consejo: just do it (solo hazlo).
Por norma general, entendemos la innovación como algo novedoso, que desafía al
status quo y lo no visto hasta el momento. Sin lugar a dudas, en muchas ocasiones suele ser un
valor implícito como tal dentro del concepto, aunque bien mirado bajo ese prisma se trate de
una delimitación escasa y banal.
Innovar es la capacidad de crear valor para la persona, conseguir entregar esa nueva
propuesta de manera clara, directa y sencilla, y que alguien esté dispuesto a pagar por ello
(monetizar). La innovación debe partir de la persona y, para cerrar el círculo, esta debe ser su
fin último. Todo ha de girar en torno a ella. Para lograr este objetivo, la única manera es
entender su mundo, su contexto y sus realidades, disponer de habilidad para contar su historia
actual y alcanzar un conocimiento tácito tal que nos permita hacer intervenciones en ella,
desarrollando nuevas historias que solucionen un problema identificado o que realicen un
incremento de aportación de valor.
Ahí es donde entra en marcha la creatividad como capacidad innata de la persona, que
a la vez que está más o menos predispuesta en unos individuos más dotados, se puede
entrenar (semejanza de la memoria o nuestra capacidad física por ejemplo). Banalizada por
norma general como la capacidad de pensar diferente, de generar ideas o de ser imaginativos,
no debemos quedarnos solo en esas posibles características inherentes o definiciones parciales
sino entender realmente su naturaleza: capacidad de generar nuevas asociaciones entre ideas
y conceptos conocidos, que habitualmente producen soluciones originales (entendido original
como inédito).
Sin las premisas anteriores, hablando del mundo de la empresa, nos quedamos en los
primeros pasos del camino y hablamos de I+D. Sin embargo, recordemos que innovación es la
segunda vocal de la secuencia I+D+i+d. Alcanzar esa "i" minúscula es complejo, y va más allá de
la investigación básica, algo que los americanos entienden a la perfección pues es su foco
principal. Al otro lado del Atlántico piensan desde el inicio en monetizar, mientras que a veces
en España cometemos el pecado de anclarnos en el primer paso del camino, creyendo que por
investigar y desarrollar todo vendrá de seguido. Esto provoca que en ocasiones los astros no se
alineen, lo que sumado al cortoplacismo imperante hace necesario que revisemos nuestra
mentalidad empresarial.
Sin embargo, ya en el año 2006, en una de las charlas TEDx de mayor referencia, Sir
Ken Robinson evidenciaba y ponía en el estrado un tema candente: las escuelas matan la
creatividad. Nacidas como consecuencia de la Revolución Industrial y en pos del desarrollo de
un pensamiento maquinista acorde con la industria, desde pequeños, las escuelas nos forman
en un pensamiento deductivo maduro, actuando en base a unas respuestas plausibles ya
predispuestas. El objeto, fomentar la mejora continua y evitar provocar fallos imprevistos y no
controlados.
Ciertamente pocas cosas han cambiado desde entonces. Sir Robinson lanzo un
mensaje al cielo que quedó en nada en nuestras escuelas, solamente en pequeños esfuerzos
aislados que no han tenido un golpe de efecto evidente.
disruptivo, va.
Bien intentas generar cosas aportando cierto valor, es decir, innovación evolutiva.
O por el contrario rompes con el camino establecido y generas nuevos senderos,
innovación disruptiva.
"En la mente del principiante hay muchas posibilidades, en la del experto, pocas" S.
Suzuki
¿Qué fue antes, el huevo o gallina? Para llegar a esa idea realmente radical debemos
formular la pregunta, aquella hipótesis que realmente nos hará generar un idea totalmente
disruptiva, porque sin la pregunta anterior es difícil generar realmente innovación disruptiva
(propuestas que generen valor) que no es lo mismo que generar ideas disruptivas. De este tipo
de ideas hay muchas, pero pocas llegan a la realidad.
Encontrar early adopters del mercado o sector en el que trabajo, es decir, aquellos
que buscan la novedad como estilo de vida o hobby, porque de ellos nos
serviremos para mejorar la idea (suelen ser usuarios avanzados).
Encontrar un nuevo nicho no solo en la idea sino en los clientes (de nuevo filosofía
Océano Azul).
genera prototipos para testar y redefinir la idea hasta una sola solución. Sal a
buscar a ese cliente y mejora la solución hasta el punto de ver su posibilidad de
implantación.
1.5.4. HIBRIDACIÓN - 2 + 2 = 5
“Puede que esté todo inventado, pero aun faltan muchas cosas por conectar”
¿Cuántas veces te han arremetido con esta frase, la de que todo esta inventado”?
Muchísimas, seguro. Pero el problema de raíz no es ese. Para crear se necesita ver lo que
existe (las famosas cosas ya inventadas), entenderlo y asimilarlo. No se puede crear de la nada,
necesitas llenar la cocina para cocinar, ya que si no tienes ingredientes, por muchas recetas
que conozcas no harás nada.
primero los ingredientes a mezclar, conocer su esencia, siendo estas más fáciles de unir que
partir de entes más abstractos. Es decir, si cojo una Coca-Cola y una Fanta de naranja y las
mezclo, el resultado será algo que no tiene mucho sentido. En cambio, si conozco los
ingredientes a mezclar (hibridar), cojo un poco de E-25 y pongo cítrico más un poco del azúcar
de la Coca-Cola y puede que salga algo con más sentido y que sea novedoso.
Por agregación. Se trata de juntar piezas que conserven su disciplina, como por
ejemplo un sonajero pesa o papel higiénico con Sudokus impresos. Aun uniendo
estos dos elementos, ambos no han perdido su funcionalidad.
Por Síntesis. Se trata de mezclar conceptos buscando atributos en conflicto, como
por ejemplo buscar una sopa fría o una bebida solida. Esta técnica era muy
utilizada en el Restaurante El Bulli.
Por traslación. Inspirarnos en soluciones de un campo para llevarlas a otras, como
por ejemplo, en vez de máquina expendedora de bebidas frías, máquina
expendedora de pan caliente. La idea aquí es la de tratar de cambiar el registro del
problema, descontextualizar la solución e integrarla en un nuevo contexto.
La barrera asociativa
Siendo la hibridación una herramienta muy poderosa tenemos que tener en cuenta a
su archienemigo, la barrera asociativa. Como comentábamos antes, la hibridación debería
hacerse entre elementos muy dispares, así llegaríamos a verdaderos elementos novedosos,
pero algo frena esto y es la barrera asociativa.
Desde pequeños nos vemos inmersos en una educación que nos genera, a medida que
nos vamos haciendo mayor, un control más preciso sobre el lenguaje. El lenguaje consiste en
una asociación de conceptos preexistentes, de tal forma que cuanto mayor control tenemos
del mismo, mayor es nuestra relación con elementos de nuestra cultura, pero ¿qué conlleva
esto? A la hora de generar conexiones entre diferentes términos, estas suelen ser predecibles
y acordes con nuestra cultura, es decir, estamos muy contaminados por un solo tipo de
ingrediente.
“Dos y dos son cuatro, he aquí una idea bella, pero dos y dos hacen cinco es una idea
encantadora” Dostoievski
El Design Thinking (DT) o pensamiento de diseño es una disciplina que pretende aplicar
el proceso de diseño como enfoque holístico para la resolución de problemas.
Cabe resaltar la importancia de este último epígrafe, ya que define el Design Thinking
como un Human Centered Innovation Approach (enfoque de innovación centrado en la
persona) y constituye una de sus mayores señas identificativas. Se trata de trabajar siempre
desde la perspectiva de las personas como individuos, dejando en un segundo plano la
tecnología y el mercado. El objetivo es encontrar y resaltar necesidades no cubiertas o
incipientes puntos de conflicto, es decir, la base subyacente detrás del desafío de partida
inicial se entiende en relación a los propios sujetos implicados y debemos comprender su
contexto y realidad. Comprendida esta realidad, estaremos en disposición de desarrollar ideas
y soluciones coherentes y con fuerza.
Por norma general se considera que una idea fallida es consecuencia de un mal
desarrollo o finalización. Sin embargo, en un alto porcentaje las causas se originan en su etapa
inicial y se deben a un incorrecto planteamiento del problema o a caminos iniciales mal
seleccionados. La mayoría de las empresas, emprendedores o instituciones fallan por falta de
clientes, usuarios o adecuación más que por un fallo en el desarrollo del producto o servicio.
Como hemos visto, Design Thinking es un Creative Problem Solving englobado dentro
del denominado campo Human Focus Centered, colocando a la persona como eje principal
básico del proceso de innovación. Realizado en equipos multidisciplinares, es una verdadera
herramienta de cocreación, donde la voz de nuestro “stakeholder” es esencial, primando la
investigación cualitativa sobre los datos. Es un cambio radical de la perspectiva de diseñar para
personas a diseñar con personas.
Crear valor es lo que importa, tener una idea y no saber en qué va a mejorar la vida de
las personas no es una idea buena, pero si entra en la narración de una historia y conseguimos
lograr poner al usuario en ese escenario, estaremos en el camino correcto. ¿Por qué? Porque
la innovación ya no se centra solo en la tecnología más optima, ni el producto más barato, ni
en el modelo de negocio más disruptivo. Todo empieza en una historia y la parte que nos toca
es conocer a nuestro cliente. ¿Conoces a esa persona? ¿Podrías contarme como es su historia
diaria? ¿En esa historia ves algún punto en donde podríamos ayudarle o mejorar su historia?
Lo único que importa es saber empatizar con nuestro cliente o usuario. Debemos
conocer su historia y lo que es muy importante, los detalles. Si conoces esos detalles, por qué
hace esas cosas y qué siente al hacerlas, ahí es donde podemos ayudarle, desarrollando la
solución adecuada.
Con dicho objetivo, el Design Thinking puede utilizarse para resolver un amplio abanico
de problemas y ámbitos, tan distantes entre sí como son el desarrollo de productos o servicios,
el diseño de modelos de negocio o la definición de programas de ayuda social.
tales como Business Design o Service Design, diseño de negocios o diseño de servicios
respectivamente.
Quizás el punto más crítico en cuestión del Design Thinking es su puesta en práctica. Si
realizamos una búsqueda en Google podemos encontrar diversas modelizaciones y procesos,
desde el principal y más extendido desarrollado por Standford a los definidos por empresas
privadas. El problema es que básicamente definen unos marcos de trabajo unidos a unas
herramientas ampliamente extendidas, pero generalmente se entienden como la panacea
universal, dogmatizando sobre su utilización y puesta en marcha.
Descubrir
La primera etapa del modelo de doble diamante marca el inicio del proyecto.
Comienza con una idea burda inicial, algún descubrimiento espontáneo o un desafío/problema
definido a resolver. En esta fase se centra la investigación pura y dura centrada con
herramientas de investigación cualitativa y se comienzan a identificar las necesidades del
usuario.
Definir
Desarrollar
Ejecutar
Fuente: fjordnet
Por ello es necesario que cada persona, empresa o entidad interiorice el DT y proceda
a definir una adecuación del mismo para su contexto, a la par que dejar espacios abiertos para
su adecuación a la necesidad de cada proyecto en concreto.
“Las cosas no se dicen, se hacen, porque al hacerlas se dicen solas”. Woody Allen
En la mayoría de ocasiones se cree que una idea fallida es consecuencia de que fue mal
desarrollada o finalizada, sin embargo, en un alto porcentaje, las causas se generan en su
etapa inicial, ya que la mayoría de las empresas fallan por falta de clientes más que por un fallo
en el desarrollo de producto / servicio
Por ello debemos comenzar a entender que una idea sin ejecución no vale nada, es un
mero pensamiento que puede ser perfecto en nuestra cabeza, pero en el momento en que
comenzamos a materializarlo es cuando comienzan a aflorar los errores. Además, y como se ha
visto en las diversas prácticas e generación de ideas, es necesario comunicarnos cuanto antes
con las personas, con nuestros futuros clientes. Cuando “decimos” o “contamos” las ideas es
cuando podemos valorar si la gente también las ve bien o no, si las compraría o no, porque
muchas veces asumimos suposiciones basadas en el mercado y, por tanto, en las personas,
que en muchas ocasiones están equivocadas.
Utilizada una u otra herramienta de manera indistinta para generar una idea o
concepto, debemos convertirla en un prototipo, es decir, en una herramienta de
comunicación. Esa es su función y su mera naturaleza, comunicar y conversar entre individuos,
valorando pros y contras e identificando la verdadera oportunidad (o la ausencia de ella).
Storyboard
Esta herramienta está generada desde la perspectiva del usuario para mostrar cómo
sería su experiencia y para reflexionar sobre ella.
Esquemas
Shit prototype
En el argot, se trata de una primera visualización basta del objeto o producto en sí, con
objeto de entender sus premisas funcionales o formales básicas, pero a muy grandes rasgos.
En el mundo del software vendría a ser el wireframe en papel.
En pocas palabras, prototipar las ideas es tratar de hacerlas tangibles con objeto de
comunicar y poder generar una conversación. En caso de errores (problemas de copias y
confidencialidad), en la mayoría de casos nuestro usuario construirá con nosotros o nos dirá si
nuestra idea tiene sentido. La manera que presentemos la idea no es fundamental, sino
realmente lo que queremos contarle y conversar con él. El prototipado no se trata de que sea
bonito, sino de que sirva para algo.
“Fail early, fail often; succeed sooner“. Bill Moggridge – Cofounfer IDEO
Scrum es una metodología ágil, pero, ¿qué son las metodologías ágiles? Eso es lo que
aprenderemos en esta breve introducción.
Manifiesto ágil
En una reunión que tuvo lugar en Snowbird, Utah, en Febrero del año 2001, diecisiete
críticos expertos en metodologías de desarrollo de software acuñaron el término
“Metodología Ágil” para definir aquellas metodologías que surgían como alternativa a las
metodologías tradicionales.
Para especificar las características que debía reunir una metodología para poder
pertenecer a la categoría de “Ágil” se definieron una serie de postulados que conformaron un
manifiesto, el manifiesto Ágil:
Los individuos y su interacción deben estar por encima de los procesos y las
herramientas.
El software que funciona debe estar por encima de la documentación exhaustiva.
La colaboración con el cliente debe estar por encima de la negociación contractual.
La respuesta al cambio debe estar por encima del seguimiento estricto de un plan
establecido.
Dentro de cada postulado se distinguen dos “partes”. Mientras que las de la izquierda
son los “nuevos” valores a destacar en las metodologías ágiles, las de la derecha son valores
tradicionales de suma importancia en metodologías tradicionales y, de hecho, al firmar el
manifiesto se dejó constancia que era por el valor que se daba a la parte derecha de cada
postulado por lo que se valoraba aún más la parte de la izquierda.
Los cuatro postulados del manifiesto ágil son un resumen de los objetivos que se
deben buscar a la hora de utilizar una metodología ágil. Llevados a la práctica se podría decir
que los principios (y objetivos relacionados a ellos) de una metodología ágil son:
Conclusiones
Todos los conceptos vistos hasta el momento (priorizar al cliente, comunicación con el
mismo, trabajo en equipo, ritmo de trabajo constante, trabajo terminado como unidad de
medida, etc) no dejan de ser, por un lado, parecidos a los aplicados en casi cualquier
metodología de trabajo tradicional y, por otro lado, lógicos si pensamos en cómo llevar un
proyecto a buen puerto.
Por tanto, no se debe pensar en las metodologías ágiles como un invento de la época
actual, transgresor y atrevido, sino en un modo de trabajo lógico que busca la satisfacción del
cliente a través de equipos de gente motivada con su trabajo.
¿Qué es Scrum?
Aunque inicialmente Scrum fue creado únicamente como un marco de trabajo para
gestión de proyectos, actualmente es considerada una metodología en sí misma, ya que
cumple los principios de las metodologías ágiles y facilita los mecanismos de control mínimos
necesarios para la gestión de un proyecto.
El estudio comparaba dichos grupos de trabajo con las melés de los jugadores de rugby
(en inglés el termino utilizado en este deporte es Scrum) y de ahí el nombre de la metodología.
Podemos observar cómo la mayoría de estos principios hacen relación al ciclo de vida
del proyecto, una de las características fundamentales de Scrum que veremos en detalle en
una de las asignaturas de este post-grado.
1. El ciclo de vida debe estar compuesto por iteraciones: como ya hemos comentado
anteriormente, una de los rasgos más característicos de cualquier metodología ágil es estar
abierta a los cambios. En el caso de Scrum se considera que dividir el ciclo de vida del producto
en iteraciones brinda la posibilidad de utilizar el cambio de iteración como el momento
apropiado para introducir posibles cambios. Para poner un ejemplo práctico de los beneficios
que puede aportar este principio, imaginemos a un golfista a punto de empezar un hoyo de un
circuito de golf donde dispone de 4 golpes.
La previsión inicial podría ser perfectamente dar un golpe recto que deje la bola en la
calle, luego otro recto que lo meta en el Green (región donde se encuentra el hoyo), un tercero
para dejarlo cerca del agujero y por último un golpe que lo meta directo al hoyo. La
planificación es perfecta!!!!
Pero, ¿qué pasa si en el primer golpe la bola cae en uno de los bunker de arena
laterales? Solo para sacar la bola de ahí y dejarla en la calle central como debía haber estado
ya necesitaremos mínimo un golpe, con lo cual ya llevaremos un golpe de “retraso”.
Además de desde el punto de vista del producto, también debe verse desde el punto
de vista del equipo de trabajo.
Eso nos permitiría tener un equipo mejor en cada iteración, y detener malas prácticas
al poco tiempo de empezar a producirse no permitiendo que se conviertan en costumbres.
2. Hay que intentar reducir riesgos lo antes posible: De cara a planificar un proyecto,
lo más difícil de estimar son aquellas acciones que conllevan un riesgo y todas las que derivan
de ellas.
Se ha comentado antes que un proyecto “ágil” debe estar abierto a los cambios, pero
eso no implica que no se puedan prever en la medida de lo posible y afrontarlos en el
momento adecuado.
Aquellas tareas que no sabemos si pueden hacerse o que su realización (el proceso
mediante el cual se hacen) puedan derivar en tomas de decisiones o incluso cambios en el
proyecto deben hacerse tan pronto sea posible.
De esta manera en caso de tener que rehacer trabajo o incluso desecharlo, el impacto
será el mínimo, ya que la cantidad de trabajo realizado y relacionado con él será el justo y
necesario para detectar esa necesidad de cambiar.
Si volvemos al ejemplo anterior, en el caso ideal teníamos 4 golpes de los cuales los
dos primeros los íbamos a utilizar para conseguir llegar al Green. Esos dos golpes no cubren la
misma distancia, ya que en el primero generalmente se intentará cubrir el máximo número de
metros posibles y el segundo para afinar el primero y meter la bola en el Green.
Es decir, en el primer golpe hacemos lo que más riesgo conlleva (al dar un golpe con
más fuerza, es más posible que la bola se desvíe hacia los laterales saliéndose de la calle e
incluso cayendo a un bunker) y a continuación las que menos riesgo entrañan. De esta manera,
detecto las desviaciones a mi plan nada más comenzar y tengo tiempo suficiente para corregir
posibles errores antes de terminar el hoyo.
Si los objetivos marcados para una iteración no pueden ser alcanzados, no debe
ampliarse la duración de la iteración para “maquillar” el resultado.
En su lugar, deberá asumirse que el objetivo no era realista y analizar el por qué
(problemas en el entorno de trabajo, falta de formación del equipo, problemas técnicos,
simplemente una mala planificación) para lograr resolverlo.
Este ejercicio de autocrítica por parte del equipo de trabajo, lejos de desmotivarlos,
debe enriquecerlos. En el fondo se trata de uno de lo principios fundamentales de Scrum:
Aprendizaje continuo.
Una vez localizado el problema y puesto el remedio, el equipo será más sólido y
experimentado, lo cual favorecerá al proyecto en adelante.
En ambos casos una posible solución sería cambiar la duración de las iteraciones para
ajustarlas a lo que el proyecto requiere (pero siempre al término de una iteración y antes de
comenzar la siguiente, nunca durante ninguna de ellas, eso atentaría contra el punto anterior).
6. Durante una iteración el tiempo, el coste y la calidad son fijos: son las
funcionalidades o hitos a llevar a cabo los que deben variar.
Si para una iteración se estima que solo se pueden realizar un número determinado de
hitos, nunca este número debe aumentar a costa, por ejemplo, de reducir la calidad de lo
realizado, ni de aumentar la presión de trabajo sobre el equipo para que produzca más rápido.
Estas falsas soluciones lo único que conseguirían es reducir la calidad no solo de esos
hitos, sino del proyecto completo (así como rebajar las expectativas de calidad dentro del
propio equipo) y crear un ambiente y ritmo de trabajo no sostenible en el equipo que
únicamente falsearía la estadística de velocidad de trabajo del equipo, que a su vez podría
conllevar estimaciones no realistas en iteraciones futuras (es como una fila de fichas de
dominó: una vez cae una pieza, el resto se ven empujadas por la anterior).
Hay que recordar uno de los principios ágiles que se han comentado: “Todos los
miembros del proceso deben ser capaces de mantener un ritmo de trabajo constante de
manera indefinida.”
Además del valor que supone tener la opinión del cliente, también es un incentivo para
el equipo de trabajo. Muchas veces los trabajadores no se sienten parte de una empresa o un
proyecto porque no tienen ningún tipo de visibilidad del resultado de su trabajo.
Sin embargo, en Scrum, gracias a las demos, van a poder comprobar de primera mano
la reacción del cliente a su trabajo y lo normal es que tras una demo negativa no se quiera
volver a defraudar en la siguiente y tras una positiva se quiera continuar recibiendo un
reconocimiento al trabajo iteración a iteración.
La figura del manager o directivo vigilante no tiene cabida en Scrum y, por tanto, es
importante que la gente implicada en el proyecto sea consciente de la confianza depositada en
ellos y les sirva como motivación para realizar bien su trabajo.
Para ello es conveniente hacerles ver que si ellos no funcionan, el proyecto podría
derrumbarse, y de la misma manera, si el proyecto se derrumba, serán los primero
responsables de ellos.
En Scrum las decisiones se toman en su mayoría en el lugar donde se realizan los hitos
que las requieren. Es por ese motivo que los equipos suelen ser multidisciplinares para tener
siempre, en la medida de lo posible, una persona más experimentada en cada una de las áreas
implicadas en el proyecto que tome la decisión en cada problemática que pueda surgir.
El motivo del mismo es tratar de evitar situaciones de “teléfono estropeado” que tan
bien se expresa en la siguiente caricatura que hace referencia a los distintos pasos de un
mensaje a lo largo de la estructura jerárquica de una metodología tradicional.
De esta manera, cuando surge una duda en el equipo de trabajo, debe comunicárselo a
un tercero, que seguramente también tendrá gente entre medias de él y el interlocutor con el
cliente, de modo que cuando la pregunta llega a este último puede hacerlo de manera
deformada. Eso no queda ahí, ya que la respuesta suele seguir el mismo canal de
comunicación solo que en sentido contrario, desvirtuando también la respuesta.
No hay que decir que a este problema se suma que durante todo el proceso se ha
perdido un tiempo precioso solo en pasar la información de un eslabón a otro de la cadena de
mando.
Ya veremos más adelante que, para reducir este efecto tan nocivo para cualquier
proyecto, Scrum delimita qué roles deben existir en el proyecto y establece una comunicación
directa entre ellos, de modo que el equipo siempre debe poder comunicarse rápida y
directamente con el responsable de tratar con el cliente para tratar cualquier tema que
requiera de su intervención.
Por otro lado, la comunicación no solo se limita a las conversaciones entre miembros
del equipo, sino también al estado del proyecto, las iteraciones, los hitos en los que se está
trabajando e incluso el entorno de trabajo y el feedback del cliente.
Toda esta información debe ser lo más accesible posible para todo el mundo y la
comunicación para tratar cualquier tema fluida y frecuente.
Para ello, Scrum propone una serie de artefactos y reuniones cíclicas donde todos
estos aspectos se muestran y pueden ser discutidos. Los estudiaremos a fondo más adelante
en el curso.
10. Los equipos deben estar conformados en base a las necesidades del cliente: como
ya se ha comentado varias veces, el equipo debe ser multidisciplinar, pero no todos los
proyectos requieren de las mismas disciplinas y, por tanto, no necesariamente un equipo debe
ser el mismo independientemente de la naturaleza del proyecto en que trabaje.
Hasta hora todo lo hablado de Scrum es positivo y eso podría hacer pensar que se trata
de una metodología perfecta sin ningún tipo de inconveniente o dificultad.
Sin embargo, no es así y, como cualquier otra metodología, tiene sus inconvenientes y
riesgos, de los cuales los más importantes son:
1. Tendencia a no trabajar con fecha de fin: en muchos casos se piensa que por ser
una metodología ágil, todo vale, y uno de los mayores errores que se puede cometer es
comenzar un proyecto con un presupuesto fijo pero sin una fecha de fin.
La agilidad sí que pasa por poder variar los requisitos a desarrollar en función de los
progresos logrados y demostrados o de los riesgos surgidos. Sin embargo, hay veces que los
clientes utilizan ese concepto de ágil para pedir más y más funcionalidades que se les van
ocurriendo para el proyecto.
Esto no es negativo, pero puede serlo si no se les hace ver que el introducir nuevas
funcionalidades casi siempre supone descartar alguna de las ya propuestas.
Si tienes fijada una fecha de fin, esto puede parecer más evidente al cliente, ya que a
medida que se acerca dicha fecha él va viendo que está realizado y qué puede quedarse sin
realizar.
Y lo peor es que existiendo una sola persona en el equipo que presente este problema,
podría darse el caso de “la manzana podrida”, que dice que si tienes un miembro no
comprometido con la metodología, lo más normal es que su negatividad contagie al resto de
miembros del equipo y al final este se desmorone.
Los motivos para esto pasan por la capacidad de coordinación de grupos, que cuanto
más grandes son más se complican, y por la metodología en sí, que define una serie de
reuniones y mecanismos que veremos en próximas asignaturas y que se alargan en función del
número de componentes del equipo (uno de los objetivos de Scrum era reducir las reuniones
lo máximo posible).
Los equipos de Scrum deben ser multifuncionales y de tamaño limitado, lo cual deriva
en que los miembros que lo formen deben tener ya una experiencia.
Aunque quizás no sea necesario en todos los miembros del equipo, sí que se requiere que al
menos la mitad de ellos tengan la experiencia suficiente para ser capaces de estimar el trabajo
de manera correcta y aportar soluciones a las tareas a las que se tengan que ir enfrentando.
5. Scrum solo funciona si el Scrum Master confía en el equipo: el Scrum Master, como
veremos más adelante será el encargado de asegurarse que la metodología se cumple y que el
equipo es capaz de auto gestionarse.
Con esto se pierde una de las grandes virtudes de Scrum y se tiende a una organización más
jerárquica, propia de las metodologías tradicionales.
6. La rotación en el equipo: en Scrum es muy importante que el equipo trabaje como tal. Con
el paso de los Sprints, cada miembro va adoptando un rol dentro del equipo y se adquieren
mecanismos en la organización del trabajo que beneficia mucho la velocidad de desarrollo del
producto.
El cambio de un miembro del equipo distorsiona esa dinámica más que en otras metodologías
más tradicionales, ya que en ellas la persona que entra lo hace con un rol asignado, mientras
que en Scrum, tendrá que adaptarse al resto del equipo y encontrar su rol dentro de él.
Por tanto, la curva de aprendizaje es más elevada y la productividad podría verse mermada en
los primeros Sprints de un nuevo miembro.
En concreto, el cambio más significativo podría ser la forma de plantear los proyectos.
A continuación se muestra una tabla que ofrece de un simple vistazo las diferencias
más significativas entre una metodología tradicional y una ágil (en concreto Scrum) teniendo
en cuenta los proyectos a los que pueden ser aplicados:
Tal y como se puede intuir del gráfico anterior, cada columna muestra un tipo de
proyecto muy específico (el primero, por ejemplo, podría corresponderse con un producto
bien definido, de presupuesto muy acotado, y el segundo con un proyecto de investigación con
presupuesto variable) que se ajusta a una metodología tradicional en el caso de la primera y
ágil en el caso de la segunda y donde no tendría sentido utilizar la otra.
Otro de los cambios significativos entre las metodologías tradicionales y las ágiles (en
concreto Scrum) es el lugar que ocupa cada persona involucrada en un proyecto dentro del
mismo, o lo que es igual, los roles.
Cada empresa y proyecto puede presentar unas características que le impidan realizar
una u otra metodología. Como hemos visto a lo largo de la asignatura, una empresa muy
grande con mucha rotación y gente poco experimentada, quizás no esté preparada para hacer
Scrum, mientras que una muy pequeña con gente especializada, quizás no tiene suficiente
gente para todos los roles de una tradicional y, por el contrario, su estructura se acerca a lo
deseado para Scrum.
Por tanto, antes de utilizar Scrum u otra metodología ágil en un proyecto habrá que
estudiar si sus características se ajustan al mismo o es más conveniente recurrir a una
metodología tradicional.
Hasta aquí llega la introducción a Scrum. La semana que viene veremos con más
detalle los roles vistos en la imagen anterior.
2.2.1. INTRODUCCIÓN
Scrum es una metodología ágil que principalmente ha sido utilizada en el ámbito del
desarrollo de software, aunque no deja de consistir en una serie de herramientas (principios,
roles y artefactos) que facilita una metodología de trabajo flexible y dinámica.
A lo largo de esta asignatura haremos un repaso a los roles y artefactos que son
utilizados en Scrum para más adelante ver como interactúan todos ellos a lo largo del ciclo de
vida de un proyecto Scrum.
Uno de los principios más importantes todas las metodologías ágiles, tal y como dice
su postulado es “Los individuos y su interacción deben estar por encima de los procesos y las
herramientas” y en concreto en la clase anterior vimos que uno de los fundamentos de Scrum
es “Facilitar un entorno de comunicación apropiado”.
Entonces ya se dijo que uno de los mecanismos para asegurar dicha comunicación, a
parte del propio ciclo de vida de Scrum es restringir la cadena de mando del proyecto a una
serie de roles con responsabilidades bien definidas para evitar que los procesos burocráticos
habituales en las metodologías tradicionales dificulten que el equipo de trabajo tenga claro el
objetivo final del proyecto así como los pasos que deben darse para alcanzar dicho objetivo.
Para que tanto los cambios solicitados por el cliente sean reflejados en el proyecto lo
antes posible, como que las dudas que surjan en el equipo reciban una respuesta lo antes
posible, las líneas de comunicación entre ambos, cliente y equipo, deben ser lo más directas
posibles.
Sin embargo, en casi ningún proyecto es habitual que el equipo de trabajo pueda tener
línea directa con el cliente, ni tampoco sería recomendable, ya que es lógico que el cliente
tenga un interfaz único de comunicación con la empresa para que la información no se
disgregue y sea persistente en el proyecto.
Este rol Scrum lo denomina Product Owner, ya que más allá de su comunicación con el
cliente, su responsabilidad final dentro del proyecto será el producto entregado.
Por otro lado, ya comentamos que las metodologías ágiles, lejos de ser sencillas o
indisciplinadas, están regidas por una serie de principios que deben seguirse para que un
proyecto no se convierta en caótico. Dichos principios podrían interpretarse de manera que
beneficiase a algunas de las partes implicadas en el proceso, en este caso al Product Owner o
al equipo en caso de que surgiesen complicaciones.
Pese a que se ha utilizado la palabra “mediar” para definir una de las responsabilidades
del Scrum Master, no se debe pensar en él como un intermediario de la comunicación entre el
Product Owner y el equipo, sino como un facilitador de la comunicación entre ambos:
Como curiosidad (aunque bastante instructiva), incluyo la “fábula” de los cerdos y las
gallinas siempre vinculada a Scrum:
Lo que esta fábula quiere hacer ver es que, mientras que el cerdo se juega su propia
carne en el negocio, la gallina solo implica aquello que es suyo, los huevos que pone, sin llegar
a estar realmente comprometida.
Todos ellos forman parte del “negocio”, pero no están igualmente comprometidos con
el desarrollo del producto, sino con el fin.
Una vez introducidos los distintos roles, así como la comunicación existente entre
ellos, es conveniente ver cada uno de los roles en más profundidad para entender cuáles son
sus responsabilidades y cuáles serán las interacciones más habituales entre ellos.
El equipo
Los equipos deben estar constituidos por miembros con habilidades o conocimientos
complementarios (imagina un equipo de fútbol formado únicamente por delanteros, aunque
todos fuesen Messi difícilmente serían un equipo competitivo) que generen juntos una sinergia
mediante la cual cada miembro potencia lo mejor de sí mismo y minimiza sus debilidades.
En Scrum esto es precisamente lo que busca. Un equipo tendrá que realizar tareas de
alta complejidad (requisitos del producto) dividiéndolas en tareas independientes y trabajando
en ellas de forma que la resolución de todas dé lugar, finalmente, a un “todo” complejo de
nuevo.
Por otro lado, también se ha comentado que los equipos de Scrum deben ser auto-
organizativos (es uno de los principios básicos de Scrum) o, lo que es lo mismo, deben
gestionarse ellos mismos.
Lo que viene a decir esto es que la gente se ve mucho más motivada cuando es ella
misma la que asume los retos que aparecen a lo largo de un proyecto, en lugar de que les sea
impuesta por un mando superior.
Al primer grupo se le pagó una cantidad de dinero X por 5 minutos moviendo cajas.
Movieron 159 cajas.
Al segundo grupo se le pagó una décima parte de lo que al primero. Movieron 101.
Al tercer grupo no se le pagó. Únicamente se les planteó (no se les exigió) como un
reto entre los 3 grupos. Movieron 168 cajas.
Tener un objetivo común (mover más cajas que los otros dos) autoimpuesto les motivó
más que ningún tipo de recompensa económica.
Estimar esfuerzo necesario y dependencias de los distintos hitos del proyecto: al ser
el equipo el que está compuesto por expertos y los que tienen que realizar el
grueso del trabajo, habrán de ser capaces de analizar cada uno de los hitos para
saber si pueden hacerse y cuánto esfuerzo costará.
Crear en cada una de las iteraciones un plan de ejecución: como equipo
El Product Owner
Crear una visión del producto: el Product Owner va a ser el interfaz único con el
cliente (al menos en lo que a requisitos del producto se refiere) y, por tanto, es su
responsabilidad no solo extraer del cliente toda la información necesaria del
producto, así como el feedback de lo ya realizado, sino también saber transmitir al
equipo esa visión. Es el responsable de crear el objetivo por el que todos trabajan
y que este sea claro y homogéneo para todos.
Definir los criterios de aceptación de cada hito: de cara a asegurar una calidad
mínima de cada uno de los hitos del producto y de dotar al equipo de una base
sobre la que trabajar, el Product Owner deberá marcar una serie de criterios
mínimos para cada hito, que se deben cumplir para considerar dicho hito como
terminado.
Obtener feedback del producto por parte del cliente y/o el usuario final: aunque
ya se ha comentado anteriormente como parte del primer punto, el feedback del
trabajo ya realizado tiene la importancia suficiente como para considerarlo una
responsabilidad en sí misma.
El Scrum Master
Como hemos visto hasta ahora, metodología ágil y más en concreto Scrum, no es
sinónimo de metodología fácil. Aun siendo una metodología flexible, no deja de tener una
serie de normas o principios que aseguran que la metodología sea eficiente y no caótica. Y no
son pocas.
Para asegurarse que todas esas normas se cumplen, que cada rol asume sus
responsabilidades, que la metodología se aplica correctamente y que es adecuada para el
proyecto, existe el rol del Scrum Master.
Orientar al cliente sobre los beneficios que puede obtener de Scrum: nadie conoce
la metodología más a fondo que el Scrum Master. En caso de que sea necesario,
será su responsabilidad trasladar su conocimiento al cliente para que este sepa los
beneficios y dificultades derivados de utilizar esta metodología y colabore en su
correcta utilización.
Product Backlog
En el caso de Scrum, como metodología ágil que es, esa toma de requisitos inicial es
más un punto de partida, susceptible a ser modificado a lo largo del proyecto tanto en
volumen como en prioridad. Por tanto, tenerlo reflejado en un papel, sería engorroso, ya que
este tendría que ser reescrito en cada cambio solicitado.
En lugar de eso, se propone al Product Owner (responsable del producto e interfaz con
el cliente) mantener una pila de producto (Product Backlog), que no es más que un soporte, en
principio físico, aunque podría ser virtual, donde poder ordenar fichas que reflejen los distintos
hitos que componen o podrían componer potencialmente el producto.
Una vez todas las historias de usuario han sido trasladadas a tarjetas, se colocan sobre
el product backlog en orden de prioridad, de modo que la más prioritarias estén situadas lo
más arriba posible.
Este tipo de organización permite que en caso de que el Product Owner, ya sea por
decisión propia o por conversaciones mantenidas con el cliente, pueda reordenar los
elementos de este Backlog en caso de que las prioridades cambien e introducir nuevas
historias de usuario en el punto que les corresponde por su prioridad según vayan surgiendo.
En el caso de que el producto responda a una imagen, también es muy útil tener un
boceto de cómo se quiere que sea el resultado final o de las normas de estilo que deben
cumplir cada uno de sus componentes.
Para entender esto último lo mejor es poner un ejemplo: imaginemos que nuestro
proyecto consiste en diseñar una máquina expendedora de refrescos.Si analizamos el
funcionamiento de principio a fin de lo que queremos que haga nuestro producto, podremos
detectar distintos actores. Veámoslo:
“El usuario se acerca a la máquina expendedora, introduce una moneda por la ranura
destinada a tal efecto y pulsa el botón correspondiente al refresco deseado. La máquina
calcula la diferencia entre el precio del producto y la cantidad de dinero introducida. En caso
de que la cantidad sea insuficiente, se muestra en un display, mientras que si es suficiente,
calculará el cambio a devolver, lo devolverá y sacará por el conducto de entrega el refresco
solicitado”.
Pero si profundizamos un poco más en esta segunda, veremos que solo por el
enunciado descrito anteriormente podemos encontrar más actores, como serían las monedas
o las latas de refresco y descomponer la máquina en distintas entidades: ranura de inserción
de monedas, botones, display, “calculadora”, conducto de entrega.
Sprint Backlog
Sin embargo, la visión del equipo, aun debiendo tener siempre una visión global del
producto final, debe estar centrada en la iteración en curso para no tener distracciones del
objetivo parcial que se ha marcado a sí mismo.
Por tanto, para reflejar las historias pertenecientes a cada iteración (en Scrum
llamadas Sprints), el equipo debe disponer de un Sprint Backlog, que será un artefacto análogo
al Product Backlog donde el Product Owner trasladará únicamente aquellas historias de
usuario que el equipo se haya comprometido a finalizar a lo largo del Sprint.
Este Sprint Backlog suele estar integrado en el siguiente artefacto que vamos a
estudiar, la Scrum Board, siendo uno de los apartados de la misma.
Scrum Board
Pero para analizar cómo se refleja toda esta información, veamos primero un ejemplo
de Scrum Board sencillo:
Sprint Backlog: en ella se ponen una debajo de otra y en orden de menor a mayor
las distintas historias de usuario a realizar en el sprint.
Tareas pendientes: el equipo tiene que determinar en qué tareas se puede
descomponer cada historia y situarlas a la derecha de cada una de ellas.
Tareas en progreso: cada vez que alguien del equipo comienza una nueva tarea,
debe moverla de la columna anterior a esta para que todo el mundo sepa que está
trabajando en ella.
Historias por verificar: una vez todas las tareas de una historia han sido realizadas,
se supone que la historia debe estar terminada. Antes de decir que esto es así, se
mueven a esta columna para que el Product Owner compruebe que ciertamente la
historia cumple con todos los criterios de aceptación por él definidos.
Trabajo terminado: cada tarea que se finaliza se mueve a esta columna y, una vez
el Product Owner ha verificado que la historia está completa, las quita y sitúa en
esta columna la historia del Product Backlog.
Para que la Scrum Board sea realmente útil, debe ser visible y accesible al equipo en
todo momento, por tanto deberá tener un tamaño considerable y estar situada dentro del
entorno de trabajo del equipo en un lugar visible para todos. Esto permite que el equipo
siempre tenga una constancia del estado del sprint y les sirva no solo de guía, sino también de
motivación.
Como hemos dicho anteriormente, pueden existir Scrum Boards mucho más
complejas, ya que es habitual integrar otros artefactos dentro de ella, como veremos más
adelante, lo que permitirá que todos los factores que influyen dentro de un sprint estén
siempre a la vista de todo el mundo.
En la asignatura que explica el ciclo de vida de Scrum se volverá a incidir en cómo las
historias se mueven de unos artefactos a otros y dentro de ellos y, por tanto, veremos de
nuevo el uso de la Scrum Board.
Lista de bloqueos
Hay que tener cuidado con el uso de la palabra bloqueo y tener muy claro que es un
concepto aplicable a una historia de usuario, no a un miembro del equipo. Es decir, que el
hecho de que una historia de usuario presente un bloqueo no significa que un miembro o más
del equipo no puedan continuar trabajando (a no ser que no queden historias pendientes sin
bloquear), sino que esa historia está bloqueada, luego no se puede continuar trabajando en
ella.
Es, por tanto, responsabilidad de los miembros del equipo notificar la existencia de
esos bloqueos y reflejarlos en la lista de bloqueos y, sin embargo, será responsabilidad del
Scrum Master ir dándole solución a todos esos bloqueos para que el equipo continúe
trabajando (es su labor de facilitador del equipo).
Esta lista en ocasiones se añade como un apartado de la Scrum Board, ya que forma
parte del estado del Sprint y permite a equipo y Scrum Master ver de un vistazo los bloqueos
aparecidos y resueltos.
Burn-down Chart
Hasta ahora se han visto artefactos que ayudan al equipo, al Scrum Master y al Product
Owner a organizar el trabajo y tener una representación gráfica del sprint en cada momento,
pero queda aún un concepto por cubrir: una visión global de la marcha de cada sprint.
En Scrum, a la hora de trabajar con historias existe una regla de oro: se debe trabajar
funcionalidad a funcionalidad en la medida de lo posible. Ya lo veremos más a fondo cuando se
hable del ciclo de vida de Scrum, pero lo ideal es que todo el equipo trabaje en paralelo en una
misma historia de usuario hasta haberla terminado y, entonces, pasen a la siguiente (por ello
se subdividen en tareas paralelizables).
Al crear las distintas historias, ya habíamos visto que uno de los apartados de las
tarjetas que las contienen es la estimación. Dicha estimación se puede medir en puntos de
complejidad/duración o simplemente en horas y dicha medida será utilizada para medir la
velocidad de trabajo que un equipo tiene en cada sprint.
La Burndown Chart no es más que una gráfica que contiene en su eje X los días que
dura el Sprint y en el eje Y los puntos que el equipo se ha comprometido a realizar a lo largo
del Sprint.
Por ejemplo, una línea recta en el gráfico podría indicar que el equipo ha estado
bloqueado durante algún tiempo o que han estado trabajando con una historia muy grande
(algo poco recomendable en Scrum, como veremos más adelante).
Una línea que presenta un escalón o bajada muy pronunciada en un momento dado
podría significar que el equipo no ha estado trabajando en paralelo en una misma historia, sino
que se han realizado varias de golpe y terminado a la vez.
Del mismo modo se puede realizar un gráfico similar con el progreso del proyecto a lo
largo de los sprints:
Gracias a este gráfico se puede medir la velocidad del equipo, ya que refleja el número
de puntos entregados por Sprint.
Al contrario que en el Burndown chart, aquí será positivo que la tendencia de la gráfica
sea ascendente, aunque en proyectos muy largos lo normal es que con el paso de los sprints
tienda a estabilizarse.
Hemos podido observar que muchos de los principios de scrum, así como la mayoría
de sus artefactos, están íntimamente relacionados con el ciclo de vida de la propia
metodología.
En esta asignatura por fin estudiaremos dicho ciclo y analizaremos de qué partes se
compone cada una de las iteraciones de un proyecto scrum, adentrándonos en el día a día de
un grupo de trabajo.
Como siempre hemos visto, scrum es una metodología iterativa, con ciclos o sprints de
un tiempo determinado. Sin embargo, siempre debe existir un punto de partida y en scrum ese
punto es disponer de un product backlog inicial que contenga todos los requisitos con los que
comienza el cliente sobre el producto, dividido en hitos o funcionalidades, aquí llamadas
historias de usuario.
Es responsabilidad del product owner obtener del cliente toda esta información y
establecer una priorización de qué historias de usuario deben ser entregadas primero, a ser
posible por peso estratégico en el proyecto.
Una vez ha realizado este trabajo, el product owner dispondrá de su product backlog:
2.3.2. EL SPRINT
Para ello, introduce a lo largo del sprint una serie de reuniones que claramente
representan las distintas fases de las que consta. Existen otro tipo de reuniones más
específicas que se podrían introducir dependiendo de la envergadura y el modo de trabajo en
el proyecto, pero las más representativas y obligatorias en cualquier proyecto scrum son las
detalladas a continuación.
Nada más comenzar cada sprint, lo primero que se hace es la planificación. Para ello el
product owner selecciona de su sprint backlog cuáles son las historias de usuario que
considera que el producto debería contener de cara al próximo entregable, basándose para
eso en las prioridades establecidas junto al cliente.
A parte de la funcionalidad en sí, el product owner tiene que tener en cuenta dos
cosas:
Para que el equipo comience a trabajar, él tiene que ser capaz de transmitirles la
visión de lo que se espera de dichas historias de usuario.
Como ya se ha comentado, a lo largo de un sprint solo se debe trabajar en historias
de usuario que puedan finalizarse.
Por tanto, el product owner nunca deberá incluir aquellas historias que no estén lo
suficientemente detalladas y granuladas como para que el equipo pueda trabajar en ellas y
finalizarlas en un sprint. No debe caer en la tentación de desgranar las historias lo justo para
que encajen en un sprint, ya que eso llevaría a que el equipo solo se comprometiese a una
historia por cada uno de ellos y cualquier imprevisto implicase un sprint sin nada finalizado.
Lo ideal es que el product owner, una vez escrita una historia, analice y detecte si esa
única historia podría dividirse en dos o más historias que contengan una funcionalidad
concreta. Por ejemplo: un product owner está escribiendo historias de un proyecto que
consiste en una máquina de hacer zumos. La historia más obvia sería:
“Como usuario quiero que, una vez apriete la naranja contra la máquina, se obtenga un zumo”
En una primera fase de concreción, el product owner podría dividir dicha historia en
varias historias más pequeñas:
“Como usuario quiero que, una vez apriete la naranja contra la máquina, la pieza rotatoria
empiece a girar”
“Como usuario quiero que, una vez el jugo cae por la pieza rotatoria, caiga en un filtro”
“Como usuario quiero que, una vez el jugo pase por el filtro, sea conducido hacia el vaso”
Y así sucesivamente. Una vez terminado este paso, deberá repetirlo con cada una de
las historias resultantes. De esta manera, intentará crear historias lo más pequeñas y
detalladas posibles.
Una vez están seleccionadas y preparadas las historias que el product owner podrá
mostrar al equipo, se reúne con ellos en una sala y comienza el sprint planning propiamente
dicho.
El equipo vota la estimación del peso de la historia: ya habíamos visto que dicha
estimación se realiza en base a la complejidad y duración de la misma y se utiliza
Sin embargo, ¿cómo medimos la complejidad en una historia de usuario? Para hacerlo
tendremos que tener en cuenta dos factores: la concreción de los requisitos definidos y el
dominio del equipo en la tecnología que debe utilizarse para implementar una solución.
Cuanto menos concretos son los requisitos o menor el dominio del equipo, más difícil
es encontrar una solución a la historia y por tanto más compleja y arriesgada resultará.
Una historia con unos requisitos pobres y que requiere del uso de una tecnología
desconocida por el equipo puede sumirse en el caos, es decir, realizarse a base de prueba y
error hasta dar con un resultado aceptable.
Para realizar las estimaciones, una de las técnicas más sencillas es el planning poker.
Consiste en que, una vez descrita una historia por parte del product owner, cada miembro del
equipo alce la mano al mismo tiempo con su estimación de la historia, utilizando para ello unos
baremos (suelen utilizarse los números de la sucesión de Fibonacci) donde se habrá fijado de
antemano qué valor indica que la historia es demasiado grande para ser abordada en un solo
sprint.
Existen cartas que se pueden comprar y que contienen juegos de valores para puntuar
y cartas especiales para indicar que no es posible valorar la historia o que es demasiado larga
para un sprint (La necesidad del uso de estas cartas es tal para estos casos que existen diversas
aplicaciones móviles, tanto para Android como para iPhone).
En caso de que no exista unanimidad en el voto, cada miembro del equipo que haya
votado el valor mínimo o máximo de la votación podrá exponer el por qué de su puntuación.
Una vez expuesto, se repetirá la votación. En cuanto exista unanimidad, se tendrá el peso de la
historia.
Si tras 3 votaciones sigue sin haber unanimidad, pero los valores son muy cercanos, se
podrá elegir el más votado o un valor medio.
Si los valores son muy dispares o si por unanimidad se decide que esa historia no es
comprensible (y por tanto valorable) o es demasiado grande para el sprint, el product owner
tendrá que devolverla a su product backlog y detallarla o desgranarla en distintas historias
para futuros sprints.
Una vez el equipo ya estima tener suficiente trabajo para un sprint, se dejan de
mostrar historias y el equipo tiene su sprint backlog, con el que trabajarán durante la siguiente
iteración, y su objetivo será realizar todo el trabajo al que se han comprometido.
Como vemos, aunque es el product owner quien guía qué se debe hacer, es el propio
equipo el que se gestiona, estimando cuánto cuesta hacer cada cosa y comprometiéndose a
tener el máximo trabajo posible en el sprint.
Esto sirve como motivación al equipo, que si bien tiene un objetivo claro y una
cantidad de trabajo para el sprint, este no viene marcado por una tercera persona, sino que
viene determinada por ellos mismos y su afán de trabajo y superación (los burndown charts de
sprints anteriores pueden servir como baremo de los puntos que ya han logrado hacer y lograr
que “batir ese récord” sea un objetivo y motivación para el equipo es tarea del scrum master.
Antes de concluir la reunión del sprint planning, el equipo ya con las historias en la
mano deberá dividirlas en tareas independientes en las que los miembros del equipo puedan
trabajar de manera autónoma, teniendo siempre en mente que la idea es que todos o el
máximo número de miembros del equipo trabajen paralelamente en tareas de la misma
historia hasta finalizarla y que la duración máxima de cada tarea no debe excederse en la
medida de lo posible de un día natural.
Con el sprint backlog y las historias divididas en tareas, el scrum master ya puede
trasladar los artefactos a la scrum board y crear la burndown chart del sprint para comenzar a
trabajar.
Existe un mecanismo de control para el trabajo del equipo, solo que no implica control
por parte de terceros, sino por el propio equipo (el equipo se autogestiona). Dicho mecanismo
de control consiste en una reunión diaria donde se comparte el progreso de las actividades del
sprint.
El daily sprint es una reunión que debe realizarse cada día a la misma hora, lo más
pronto posible dentro de la jornada de trabajo del equipo. Los asistentes a dicha reunión serán
todos los miembros del equipo y el scrum master. Se puede invitar a más asistentes si el
equipo está conforme con ello, pero como simples oyentes.
Es importante que la reunión tenga lugar cada día a la misma hora sin posibilidad de
retraso. Si algún participante se retrasa no se le esperará (y en la mayoría de los casos se les
suele imponer un castigo menor previamente pactado, como pagar una multa a un bote que a
la larga se utilizará para pagar el desayuno al equipo un día).
La duración de la reunión nunca debe exceder los 15 minutos y debe realizarse con
todos los asistentes (participantes e invitados) en pie. De esta manera, todo el mundo
Durante la reunión, todos los asistentes deben responder a tres simples preguntas:
requiere de más formación o recursos o simplemente midió mal el tiempo necesario para la
tarea).
En el tercer caso, el miembro del equipo está bloqueado y será responsabilidad del
scrum master ayudarle a dar una solución (en este caso, comunicarse con los responsables de
la oficina para ver qué pasa con la línea o conseguirle temporalmente un teléfono móvil).
Como se puede observar, cualquiera de los 3 casos describen una exposición que no
requiere más de un minuto. Por tanto, sumando la exposición de todos los miembros del
equipo (a no ser que esté sobredimensionado) no se deberían exceder los 15 minutos máximos
de duración de la reunión.
Tras la reunión y con la información del trabajo recién actualizada por cada uno de los
miembros del equipo, el scrum master tiene una oportunidad inmejorable de acercarse a la
scrum board y comprobar que realmente esta refleja el estado descrito en la reunión.
Para reflejar en qué se está trabajando y qué está pendiente de realizarse, se hace uso
de la scrum board.
Al inicio del sprint, tanto las historias como sus tareas estarán en la columna de
“pendientes de realizar”.
Una vez se inicia el sprint, cada miembro del equipo coge la tarea en la que va a
trabajar, la mueve a la columna “en progreso” y marca que está trabajando en ella (por
ejemplo, con un post-it de un color asignado a él o con una chincheta).
Tras mover la tarea (e historia si corresponde), tendrá que coger una nueva. Para ello
volverá a la columna de “pendientes de realizar”, seleccionará una por orden de prioridad y la
moverá a “en progreso” marcando que él la realiza.
Mediante esta sencilla rutina de trabajo, la scrum board se convierte en uno de los
artefactos más útiles para todos los miembros implicados en el proyecto, ya que de un solo
vistazo permite ver el estado del sprint en tiempo real, saber en qué está trabajando cada
compañero y detectar posibles desviaciones de tiempo lo antes posible.
La scrum board además realiza una segunda labor para el scrum master, la de chivato.
En ocasiones sólo con ver cómo están los Post-it situados en la scrum board, el scrum
master puede detectar que la metodología no se está siguiendo correctamente.
Un ejemplo sería si el scrum master viese que las primeras historias situadas en la
scrum board no están en progreso y, sin embargo, alguna que está por detrás sí (eso significa
que el equipo no está trabajando en base a las prioridades marcadas por el product owner) o si
hay muchas historias en progreso pero ninguna terminada (eso significa que no se está
trabajando en equipo sino individualmente).
2.3.6. SPRINT-REVIEW
Una vez finaliza el tiempo estipulado de cada sprint, se realiza una demostración de las
funcionalidades del producto terminadas.
Para ello se convoca una reunión a la que asistirán el equipo, el scrum master, el
product owner y, en la medida de lo posible, el cliente o una representación del mismo.
También se puede invitar a toda aquella persona que se considere oportuna (por ejemplo, a un
usuario final para obtener su feedback o a algún alto mando de la empresa para que sea
partícipe del progreso del proyecto).
Por un lado, los distintos miembros del proyecto ven el progreso que se ha realizado
del mismo y obtienen una visión global del estado actual del producto a entregar.
Por otro lado, el cliente tiene la oportunidad de ver cómo va evolucionando su
producto y detectar posibles cambios, mejoras o diferencias de interpretación de
los requisitos iniciales.
El sprint review es una de las reuniones más importantes en scrum por este segundo
punto, ya que es el que marca la diferencia entre encontrar los fallos o cambios solicitados por
el cliente durante el proceso de producción del producto, donde las modificaciones no son tan
traumáticas y el proyecto está a tiempo de ser replanteado, o encontrarlos al finalizar el
proyecto, cuando ya nada se puede hacer o hacerlo implica la pérdida de mucho tiempo (y
dinero) invertido.
Es decir, marca en gran medida que scrum sea una metodología ágil.
En cuanto a las reglas a seguir en esta reunión, se recomienda que su duración no sea
demasiado extensa (máximo 2 horas) y que lo que se muestre en ella sea únicamente
funcionalidades completas (jamás trabajo que ha quedado a medias) y visualmente sencillas de
mostrar.
Si no hubiese nada visual que enseñar (por ejemplo, si todo el sprint se hubiese
dedicado a tareas de investigación), es preferible no realizarla o hacerlo de manera interna sin
cliente.
2.3.7. SPRINT-RETROSPECTIVE
Antes de dar por finalizado el sprint, se realiza una última reunión. Quizás es la que
más valor aporte al equipo, pero también la que más madurez exige por parte del mismo.
Se trata del sprint retrospective y consiste en un análisis por parte del equipo y el
scrum master de los puntos fuertes y débiles del equipo y la metodología de trabajo a lo largo
del sprint.
Cosas que han ido bien: se da la oportunidad a cada miembro del equipo de
exponer aquellas rutinas, actitudes o herramientas que se considera que han sido
positivas a lo largo del sprint.
Cosas que han ido mal: se exponen aquellas cosas que se piensan han perjudicado
al equipo o su rendimiento.
Cosas que se deben empezar a hacer: basándose en los dos puntos anteriores, se
deben trazar objetivos de mejora para el siguiente sprint. Será responsabilidad del
scrum master facilitar que esto se lleve a cabo.
Cosas que se deben dejar de hacer: igualmente que en el caso anterior, se deben
marcar objetivos concretos de cosas que no deben hacerse desde el siguiente
sprint.
Como base para comenzar el análisis y la discusión, es conveniente hacer uso de uno
de los artefactos que muestran un “histórico” del progreso del sprint, el burndown chart, que
dará una idea general del avance del trabajo a lo largo del sprint y podría mostrar al equipo
fallos a la hora de emplear la metodología.
Se percibe claramente un escalón grande más o menos en la mitad del sprint. Esto
podría denotar que durante un tiempo se ha trabajado en varias historias en paralelo o que
hubo un bloqueo que se alargó demasiado en el tiempo.
Cosas que han ido bien: “la comunicación entre equipo y product owner ha sido
fluida”, “la estimación de pesos de las historias estaba afinada”.
Cosas que han ido mal: “varias personas han requerido de una misma utilidad para
realizar sus tareas y, por falta de comunicación, la han buscado cada una por su
lado”, “la división en tareas de las historias se hizo únicamente por tiempos y hacía
que no se pudiese trabajar en paralelo en ellas”, “el uso de email para
comunicarse entre miembros del equipo creaba altos tiempos de espera.”.
Cosas que se deben empezar a hacer: “crear una wiki donde documentar las
utilidades encontradas durante las tareas”, “buscar una nueva forma de dividir las
historias en tareas”.
Cosas a dejar de hacer: “utilizar el email en lugar de la conversación directa para
plantear dudas a los compañeros del equipo”.
Como se puede observar, los dos últimos apartados no dejan de ser un reflejo de las
soluciones que se proponen a los problemas encontrados por el propio equipo.
Una vez finalizada esta reunión (que no debe exceder la hora, para evitar que la
exposición de puntos de vista se convierta en debates interminables), se puede dar el ciclo del
sprint por finalizado y se comenzaría uno nuevo con un nuevo sprint planning.
Esta reunión tiene que tratarse con especial delicadeza, ya que puede ser un foco de
conflictos dentro del equipo debido a la naturaleza crítica de la misma.
En muchos casos se aconseja que el scrum master dote a esta reunión de un punto de
originalidad en función del estado anímico del equipo. Por ejemplo, en un sprint muy duro y en
el que se han detectado tensiones entre los miembros del equipo, cambiar la ubicación de la
reunión y trasladarla a un lugar más amigable que una sala de reuniones, por ejemplo un
parque, podría relajar el ánimo de los asistentes y hacerla más productiva.
También es importante que la reunión no se convierta en un mero debate sin fin, sino
que de ella se obtengan conclusiones.
Aquellas relacionadas con el trabajo del equipo deberán ser realizadas por ellos y el
resto será responsabilidad del scrum master que la persona implicada la realice (puede ser, por
ejemplo, solicitar mayor claridad al product owner durante los planning o solicitar a la empresa
algún tipo de recurso o formación).
El gráfico que se puede ver a continuación resume bastante bien los distintos
componentes del ciclo de vida de Scrum:
2.4.1. INTRODUCCIÓN
Hasta ahora hemos visto la base teórica de la metodología scrum, pero en esta
asignatura quiero daros algunos consejos a seguir para implantarla en una empresa que,
históricamente, funciona bajo el paraguas de las metodologías tradicionales. Analizaremos
juntos algunos casos de empresas que ya la han utilizado, veremos por qué era conveniente o
no utilizarlo y profundizaremos en algunos aspectos que podréis encontraros a la hora de
tener que trasladar la teoría del uso de Scrum a un caso real.
Lo primero que hay que tener en cuenta a la hora de introducir una metodología ágil
en el proceso de trabajo de una empresa y especialmente tratándose de scrum es que NO es
fácil, y mucho menos si dicha empresa tiene años de experiencia en el uso de otro tipo de
metodologías de trabajo.
A continuación describo una serie de pasos a seguir para conseguir implantar scrum
con éxito en una empresa.
Identificar quién está a favor y en contra del cambio (los llamados early-adopters)
Aun así, es conveniente saber el porqué de esa petición de cambio. Al fin y al cabo, si
los trabajadores piden algo es porque tienen unas expectativas. Idealmente estas estarán
basadas en el ánimo de mejorar su metodología de trabajo, ya sea porque la que utilizan no
funciona o porque piensan que su productividad puede ser mayor con una metodología ágil, lo
cual les beneficiará laboralmente.
Al igual que pasaba en el caso anterior con los trabajadores, es importante concienciar
a la directiva de la empresa de los riesgos que conlleva un cambio de metodología y hacerles
ver que los resultados del cambio serán progresivos y no inmediatos, como podrían
plantearse.
También es importante saber qué les motivó a solicitar ese cambio. En ocasiones se
confunden los principios ágiles y se interpretan de manera incorrecta buscando el propio
beneficio.
En el caso de que sea una consultora externa quien propone el cambio, se duplicaría la
tarea de concienciación, ya que por un lado se tendrá que motivar a los trabajadores para que
se adapten a la nueva metodología y, por otro, se tendrá que convencer a los directivos para
que aprueben el cambio.
Apoyarse en profesionales
Es por eso que se recomienda contratar a una persona externa, al menos durante la
planificación del cambio y en los primeros meses de transición, ya que al ser ajeno a la
empresa no tendrá problemas con expresar las cosas tal y como son, sin miedo a futuras
represalias.
Por otro lado estará el equipo, que tendrá que abordar los primeros meses con
bastantes dudas surgidas entre sus miembros, debates sobre cómo deben hacerse las cosas e
incluso los Sprint Retrospective más duros.
Es por esto que es importante que la persona que actúe como Scrum Master esté
realmente formada para desempeñar esa función. De otra manera, surgirán las dudas no
resueltas, la falta de confianza en el líder del cambio y los debates y discusiones provocados
por mensajes contradictorios lanzados por un Scrum Master improvisado.
Hay que dejar bien claro al exponer una planificación en qué momento podrían
empezar a notarse los beneficios, ya que, de lo contrario, o el equipo puede desanimarse y por
tanto llevar el proyecto hacia el fracaso o los directivos podrían perder la paciencia y dar
marcha atrás.
Aunque existirán casos donde esto sea posible, es importante realizar un nuevo
trabajo de análisis previo (una nueva iteración) en el que se incluirá dentro del estudio el
aprendizaje obtenido por la experiencia con el proyecto piloto.
Hay que tener en cuenta el esfuerzo invertido en formar, motivar, guiar y resolver
dudas a un pequeño equipo y dimensionarlo en su justa medida al trabajo que queda por
delante. Que se haya podido formar un equipo en un tiempo concreto no significa que en ese
mismo tiempo se pueda formar un equipo de dimensión mucho mayor.
Tampoco significa que si se han empleado X meses con el equipo piloto, se necesiten x
* 4 para formar 4 equipos. La experiencia ha de ser tenida en cuenta y una práctica muy útil es
introducir al menos un miembro del equipo piloto en cada nuevo equipo a formar.
De esta manera, ya existirá otra persona con conocimiento que puede guiar a sus
compañeros de equipo (al fin y al cabo el equipo se auto gestiona y cada miembro acaba
encontrando su rol).
Antecedentes
Este caso trata de la experiencia vivida por una empresa de desarrollo de software a la
hora de implantar scrum.
La empresa buscaba una nueva forma de trabajar, ya que se habían dado cuenta de
que cada vez más contaban con perfiles muy especializados en determinadas áreas y
productos de los cuales una sola persona era experta.
Así mismo, la propia metodología de trabajo había derivado en un ciclo vicioso en que
lo único que se hacía era resolver crisis inmediatas, ya que todos los clientes con los que
trabajaban solicitaban nuevos desarrollos y cambios en los productos ya entregados, sin
ningún tipo de control y siempre con prioridad alta.
tareas que estaban aún en progreso, acumulando así trabajo pendiente y entregando
finalmente la mayoría del trabajo mal y tarde.
Trasladado fuera de los límites del equipo de desarrollo, los Project Managers tenían
que lidiar a diario con clientes descontentos por falta de compromiso en las entregas o incluso
que estas se produjesen fuera de plazo.
Este caso, aunque pudiera parecer exagerado, se ajusta perfectamente al vivido por
muchas pequeñas empresas de desarrollo (o pequeños departamentos en una empresa de
gran magnitud) cuya producción crece rápidamente.
Adaptándose a scrum
Para solucionar el problema que tenían y tras barajar distintas posibilidades que
pudiesen solucionar su situación, la empresa optó por adoptar Scrum como metodología. Sin
embargo, el cambio fue gradual para minimizar el impacto tanto en el equipo como en la
percepción de los clientes.
Se realizó un trabajo inicial que consistía en analizar los proyectos en los que estaban
implicadas estas tres personas para crear un artefacto parecido a un Product Backlog con
todas las tareas pendientes. Ya con una visión general del trabajo que tenían que realizar, se
sentaron a priorizar las distintas tareas, dividirlas en distintas subtareas y asignarles una
estimación de tiempo.
En cuanto a las reuniones de scrum, aparte de este Sprint Planning a gran escala, se
comprometieron a realizar el Daily Scrum. Este simple hecho ya supuso un avance
considerable en su metodología de trabajo, ya que pasaron del desconocimiento absoluto del
trabajo de otros compañeros y el trabajo individual y sin ayuda a conocer diariamente el
trabajo de los demás y a interactuar con otros miembros, sobre todo en el caso de aparición de
problemas. A pesar de que suena sencillo, en ocasiones lo más difícil es disponer del momento
para exponer tus problemas y dar la oportunidad a otros compañeros a tomar el relevo.
Una vez consideraron que el equipo inicial era lo suficientemente estable con un grupo
reducido de personas, empezaron a ampliarlo para comprobar que la metodología no se
resentía con un equipo de trabajo de tamaño considerable.
Para realizar esta ampliación, lo primero que tuvieron que hacer es convencer a los
nuevos miembros de la utilidad de la metodología. Esto se convertía en un ensayo de cómo
vender scrum a un cliente, solo que hablando con perfiles técnicos como los suyos.
Hicieron una presentación mostrando los actuales planes de gestión que se llevaban a
cabo en su departamento y pidieron que, por favor, expusiesen los puntos positivos y
negativos que ellos veían. Lógicamente, al estar trabajando en la misma empresa, los negativos
coincidían con aquellos que les había llevado a ellos a probar con una metodología ágil.
Expusieron entonces cómo scrum había dado solución a esos problemas que ellos
también encontraron en su momento e hicieron una presentación de cómo creían que el
departamento podía reorganizarse utilizando una metodología ágil (aparte del uso de
herramientas de control de código y de trabajo en equipo).
Al principio y puesto que la persona más reticente al cambio era precisamente el jefe
de departamento, se centraron en la división del trabajo en historias, tareas, etc., en las
reuniones diarias y en la retrospectiva.
Cuando su jefe notó que el trabajo avanzaba de manera más organizada e incluso que
el ambiente en el equipo mejoraba, decidió implicarse más y tomar un papel importante en la
definición de los artefactos y en las planificaciones de los sprint.
Conclusión
De esta manera se consigue que todo el departamento esté trabajando con scrum. Su
productividad se ha visto incrementada notablemente, si bien siguen lidiando con algunos
problemas, como trasladar a sus clientes el nuevo modelo de trabajo o incluso a sus miembros
directivos.
Introducción
En este caso, el primer paso adoptado por el responsable del cambio fue certificarse
como Scrum Master para tener todo el conocimiento necesario para informar a sus superiores
e instruir al equipo en el cambio (recordad el tema de pasos a seguir para instaurar scrum en
una empresa, donde se indicó que uno de los pasos más importantes es formarse
adecuadamente).
Nota: se podrá observar además cómo muchos de los problemas que se encuentran en
este ejemplo y en el anterior son comunes y las soluciones, sin embargo, distintas.
Antecedentes
Sin embargo, según ibas escalando en la jerarquía de la empresa, te ibas dando cuenta
de que la mentalidad cambiaba, puesto que la productividad no se ajustaba a lo deseado.
Fue entonces cuando uno de los jefes de proyecto se planteó el uso de las
metodologías ágiles.
La implementación
Ya hemos comentado que ningún cambio es sencillo y mucho menos cuando implica
modificar metodologías de trabajo, que pese a que puedan estar obsoletas o no se ajusten a
las necesidades de la empresa en un momento dado, han sido utilizadas durante mucho
tiempo produciendo resultados positivos durante un intervalo considerable de tiempo.
Aunque a priori se pueda pensar que lo complicado es convencer a aquel que tiene
que cambiar su rutina del día a día al introducir una nueva metodología, en muchas ocasiones
es mucho más difícil convencer a aquellos a los que el cambio no afecta (al menos a nivel
operativo). Más aún si no se tiene una prueba que ofrezca cierta garantía de que el cambio va
a funcionar, como pasaba en el ejemplo anteriormente visto.
El primer paso, por tanto, fue formarse para tener los conocimientos que se
traducirían en argumentos necesarios para convencer a la directiva de la empresa de que el
riesgo de la transición merecía la pena y que, si bien al principio los resultados podrían no ser
del todo visibles, a la larga lo que ofrecía Scrum era productividad en el trabajo del equipo. Esa
formación consistió en obtener la certificación de Scrum Master.
Tras una serie de exposiciones con los pros, los contras, los riesgos y un primer boceto
de road map para el cambio, el siguiente objetivo era encontrar gente dentro de los equipos
que compartiese el optimismo por el cambio.
De nuevo se optó por un cambio top-down, es decir, empezar por los responsables
para terminar por los que ocuparían el rol de miembros del equipo.
Se convocó a todos los jefes de equipo del departamento, se les planteó la cuestión y
se les ofreció una formación para ejercer el rol de Scrum Master en los distintos equipos que
se conformarían. Por fortuna, la exposición de la metodología y la oportunidad de ser formado
en algo novedoso fue suficiente para que todos lo aceptasen con entusiasmo.
Sin embargo, tras finalizar la formación, ellos mismos fueron conscientes de que el
cambio no iba a ser sencillo. Harían falta nuevas rutinas, nuevos mecanismos, nuevas
herramientas… incluso nueva documentación que no tenía nada que ver con lo que se venía
usando hasta el momento. Era casi como empezar de cero.
El siguiente paso era quizás el más temido. Era el momento de convencer al equipo. Y
en este caso no hablaban de un grupo reducido de gente, sino de una plantilla que ya de por sí
se dividía en diferentes equipos de trabajo de tamaño considerable.
Se les expuso en una sesión las nociones básicas de la metodología, sus ventajas
(haciendo especial hincapié en aquellas relacionadas con la gestión del equipo), un road map
de los pasos a seguir para implantar la metodología. También se les hizo ver la confianza que la
directiva había depositado en el cambio, los motivos que les había movido a ellos y la
responsabilidad que recaía en el equipo de que todo funcionase.
Era importante que supiesen que la migración sin su colaboración era imposible y que,
a pesar de los inconvenientes que cualquier cambio supone, los primeros beneficiados serían
ellos, tanto por la calidad de su trabajo como por la nueva manera de gestionarse.
Por otro lado, se les pidió que también devolviesen un feedback de las sensaciones que
el cambio producía en ellos y expusiesen todas aquellas ideas y mejoras que creían serían
positivas para el periodo de transición.
Puesta en marcha
Sin embargo, el mayor cambio que tenía que llevar a cabo el equipo no era el más
evidente cuando se empieza a trabajar con scrum, que suele ser el hecho de que el equipo se
autoorganice, era algo todavía más básico: trabajar en equipo.
El trabajo del día a día era más parecido a una cadena de montaje en una fábrica: el
proyecto pasa por un departamento, una vez han terminado pasa al siguiente, una vez han
terminado al siguiente y así sucesivamente hasta que se termina y se pone en producción.
Sin embargo, existe una diferencia fundamental con una cadena de montaje: en este
caso no se ensamblan copias de un mismo diseño o producto, sino que cada unidad que pasa
por la cadena es única e irrepetible… por tanto, tiene que ser probada en su totalidad para
darla por buena.
Ese era el punto que más invitaba a cambiar de metodología. El trabajo del primer
grupo podía necesitar ser cambiado mucho tiempo después de haber “terminado” el trabajo.
Lógicamente, ese grupo de gente no podía estar meses, ni semanas, ni días de brazos cruzados
esperando a que el resto terminasen su labor para saber si había terminado realmente el
producto, sino que cuando le volvía cualquier modificación, ya estaban inmersos en nuevos
proyectos, con sus planificaciones, sus tiempos, etc.
Muchas veces el intento de no asumir ese retraso hacía que se instalasen productos
con deficiencias detectadas en producción y se tratasen como bugs de mantenimiento. Esto no
beneficiaba en absoluto a la empresa, ya que dejaba en entredicho uno de los valores de
nuestra empresa más importantes en el mercado: la calidad.
Por tanto, lo que se hizo fue fundir todos esos distintos departamentos en uno solo y
dividir a la gente en equipos multidisciplinares. No era una idea descabellada. Scrum abogaba
por equipos heterogéneos con expertos en todas las áreas necesarias y eso precisamente es lo
que teníamos.
Lo que resultó más difícil de llevar todo esto a cabo fue sacar a los miembros del
equipo con más antigüedad de la comodidad que suponía para ellos hacer “el trabajo de
siempre” y comenzar a realizar labores que hasta entonces realizaba gente de otro
departamento ajeno, ya que, lógicamente, ni el tester podía estar de brazos cruzados hasta
que el resto del equipo desarrollase algo que poder probar, ni el desarrollador podía quedarse
parado mientras el tester probaba su trabajo.
Poco a poco, aunque con más resistencia al principio, todos los miembros del equipo
sabían hacer de todo, aunque por supuesto cada uno tenía su especialidad y la explotaba
siempre que le era posible, en beneficio no solo propio, sino del equipo entero.
Al existir varios equipos, se vio necesaria también la figura de múltiples Scrum Master,
que, como antes se comentó, ya se tenía pensado que fuesen los distintos jefes de proyecto.
De esta manera, ningún equipo se sentiría desatendido, ya que al hacer un cambio tan
grande y no progresivo (recordad que al principio de la clase hemos visto que lo recomendable
es empezar por un pequeño proyecto piloto y después escalarlo al resto de proyectos) un solo
Scrum Master tenía altas probabilidades de sentirse desbordado.
Para el rol de Product Owner se barajó la posibilidad de contratar a una nueva persona
con experiencia de Business Analyst, pero como una de las grandes preocupaciones iniciales
era los posibles problemas de comunicación entre equipo y Product Owner, la decisión final
fue que el jefe de proyecto precursor del cambio ocuparía ese rol de inicio y más adelante se
irían incluyendo nuevos Product Owners.
Al principio los desajustes eran considerables y el hecho de que los miembros de los
equipos trabajasen en todo y no solo en su especialidad llevaba a que, en la retrospectiva, se
señalase esa falta de experiencia como motivo de retrasos o errores.
Sin embargo, esta crítica sirvió para que el equipo poco a poco aprendiese a organizar
las historias de manera que se minimizaba en la medida de lo posible el tiempo que una
persona trabajaba en algo en lo que no estuviese especializado.
Es difícil y largo de contar, pero trabajando en dos historias al mismo tiempo (pese a
que el objetivo debe ser que todo el equipo trabaje en paralelo en una sola) conseguían que
mientras los diseñadores trabajaban en una historia, los desarrolladores desarrollaban otra
que no requería diseño, los testers iban preparando las pruebas de esa historia, etc.
El resultado
Tras dos años de uso de la metodología, los avances fueron notables. La directiva se
mostraba satisfecha, ya que los tiempos de entrega no solo se ajustaban más a lo estimado al
principio de los proyectos, sino que se habían reducido notablemente.
Se dieron cuenta de que, sobre todo en las finalizaciones de los proyectos, había
espacios de inactividad de varios de los antiguos departamentos en espera de resultados, y
que por tanto la productividad se veía afectada más de lo que se pensaba en ese momento.
Ahora no veían el producto como un objeto que pasa por sus manos durante un
tiempo para pasárselo a otro grupo que continuase con él. Ahora el producto era “su”
producto, de principio a fin. Veían su evolución desde que se iniciaba hasta que se entregaba al
cliente, y gracias a la Demos de fin de Sprint, podía ver incluso la satisfacción del cliente una
vez entregado.
Pero no todo fue tan fácil y tan ideal como puede parecer. También a lo largo de los
dos años surgieron problemas y se tuvo que dar marcha atrás en algunos de los pasos dados.
El otro punto pendiente fueron los clientes. No todos estaban dispuestos a modificar
su metodología de trabajo, si bien el hecho de tener el Product Owner una ventanilla única con
la empresa sí les parecía un buen cambio.
En esos casos, el Product Owner ocupa también el rol de cliente, lo cual hace perder el
beneficio de que al realizar la entrega, puedan surgir pegas que se traducen en cambios y estos
en consecuentes desviaciones en la planificación inicial.
Pero la semilla estaba ya puesta y, pese a que los problemas seguían existiendo, como
en cualquier empresa y trabajo, la mejora conseguida avalaba el cambio de metodología.
Hasta aquí no habría gran problema, ya que en eso consiste un equipo de scrum, ¿no?
Sin embargo, como se ha comentado antes, esta empresa es muy grande y su departamento
de marketing y diseño se ubica en Barcelona, el de calzado en Madrid y para el de
aerodinámica ni siquiera disponen de un departamento, sino que han subcontratado a dos
especialistas freelance que trabajan en EEUU.
El hecho de que existan dos localizaciones o más diferentes puede dificultar la tarea
del Scrum Master en aquella en la que no esté ubicado físicamente.
Muchos de los problemas que pueden surgir a lo largo de un sprint son de carácter
meramente técnico o burocrático (no tengo acceso a un servidor que necesito, no me funciona
el ordenador, no tengo permisos para acceder a una información clasificada, etc.) y requieren
de una intervención personal por parte del Scrum Master que puede verse ralentizada o
impedida si no se encuentra en la localización donde surge el problema. Esto se puede arreglar
mediante un sencillo desplazamiento, pero, dependiendo de las distancias entre localizaciones,
podría suponer una gran pérdida de tiempo (bloqueos excesivamente largos).
Esta reunión tendrá lugar mínimo dos veces a lo largo del sprint, una al comienzo y
otra a mitad del mismo, si bien lo ideal es que se celebre a diario tras el daily sprint de manera
que todos los Scrum Masters puedan compartir los distintos bloqueos surgidos en las
diferentes localizaciones.
A esta reunión únicamente asistirán los diferentes Scrum Masters y aquellas personas
que ellos consideren necesarias en cada reunión para dar solución a los distintos bloqueos
surgidos.
Scrum Board
Para este problema la solución pasa por saltarse una de las características
fundamentales de la Scrum Board: que sea una pizarra física.
En muchas empresas a cambio se utiliza un fichero Excel donde se colocan todas las
historias y tareas a modo de pizarra. Esto es poco recomendable ya que este tipo de ficheros
suelen tener un modo de escritura no simultáneo.
La mejor alternativa es utilizar una Scrum Board virtual. Esto son pizarras de scrum
creadas en aplicaciones o portales web que permiten el acceso simultáneo a varias personas y
cuyo aspecto se ajusta exactamente al de una Scrum Board física (siendo muchas de ellas
configurables). Una alternativa gratuita sería por ejemplo SeeNowDo:
Uno de los principios básicos de scrum dice que la comunicación entre los miembros
del proyecto (especialmente los miembros del equipo entre sí y con el Product Owner) debe
ser directa y constante.
En muchas empresas con esta situación se tiende a utilizar el correo electrónico como
alternativa de comunicación. Sin embargo, no es un medio recomendable, ya que, si bien deja
una constancia de las conversaciones mantenidas, produce grandes retrasos al dejar a una
persona en espera de una respuesta. Esto se acusa especialmente cuando la comunicación se
quiere establecer con el Product Owner, que, además de resolver dudas a los miembros del
equipo, tiene otras tareas que podría considerar prioritarias dejando para el final el contestar a
los correos.
Reuniones
En el caso del Daily Scrum, el hecho de que la hora sea fija e inamovible toma especial
importancia. Al igual que se ha dicho antes, se recomienda una herramienta de
videoconferencia para mantener dicha reunión, ya que cualquier otro método podría alargar la
reunión a más de los 15 minutos recomendados.
En caso de que no se puedan cuadrar los horarios (imaginemos un equipo con dos
localizaciones, una en Europa y otra en Sudamérica, la diferencia horaria es muy grande),
tendríamos que volver al concepto de un Scrum Master por localización y una reunión entre
ellos para poner en común lo hablado en cada sitio.
Si hubiese poca confianza, podría coartar a la gente y eso restaría sentido a la reunión.
Ni que decir tiene que sería aún peor si surgiese una alta competitividad entre las distintas
localizaciones, ya que nadie expondría sus problemas ni puntos de mejora para no
“debilitarse” ante los demás.
Para fortalecer los vínculos entre distintas localizaciones, una recomendación (siempre
que el presupuesto lo permita) es realizar las tres reuniones de fin/comienzo de Sprint
conjuntamente en una misma localización, de modo que todos los miembros del equipo
presenten su trabajo y expongan sus problemas como uno solo.
En el caso del Sprint Planning, depende un poco de la organización del equipo si debe
realizarse de manera conjunta o separada:
Kanban es una palabra de origen japonés que incluye los conceptos de tarjeta o
identificador visual y de tablero, que son los dos elementos (o artefactos) básicos que dan
soporte a la forma de trabajo de Kanban.
Pull vs push
El mayor problema de este esquema, aunque no el único, es que se adapta mal a los
cambios en la demanda. Siguiendo el ejemplo anterior, si la demanda baja un 50%, tendremos
50 unidades almacenadas con los costes que esto pueda conllevar.
Ahora visualicemos este proceso de otra manera. Imaginemos que cada paquete de
cereales tiene adherida una tarjeta y de igual manera el ketchup y la carne picada. Cuando
llegamos a la caja el cajero recoge estas tarjetas y las coloca en un tablero de tal manera que el
reponedor solo tiene que acercarse al tablero, recoger las tarjetas e ir al almacén para reponer
tantas unidades de cada tipo de producto como tarjetas tenga en su poder. Ya tenemos un
sistema de reabastecimiento pull basado en un tablero Kanban.
En la figura que encontraremos unos párrafos más adelante, podemos ver este
proceso de manera esquemática en una imagen de Toyota. También en este vídeo podéis ver
estos conceptos de una manera muy ilustrativa (aunque le falte un poco de ritmo al vídeo).
Tarda mucho
Se le caen productos
Limitar el trabajo en curso (work in progress) es uno los principios básicos de Kanban y
es el punto de partida de cualquier implementación de esta metodología en un proyecto, ya
que el propio hecho de limitar el WIP estructura el flujo y hace que la metodología pull tenga
sentido. Limitando el número de elementos en los que se trabaja de manera simultánea
aparecen las colas de elementos pendientes, cuando un elemento es finalizado se tira de un
elemento que se encuentre en la cola y de esta manera se va creando una cadena o flujo de
elementos de producción a través del sistema.
perdiendo todo el valor de Kanban. Son los huecos los que provocan el avance de las tareas
por el sistema.
Por tanto, cuando hablamos de limitar el WIP o trabajo en curso estamos hablando de
establecer un límite numérico de elementos máximos en los que podemos trabajar en un
momento dado.
Son muchos los beneficios que se derivan del simple hecho de limitar el número de
elementos en los que estamos trabajando en un momento determinado:
Para los clientes: se busca entregar la máxima calidad en el menor tiempo posible
con la mayor capacidad de reacción y con el coste más ajustado.
Para la empresa: reducir costes, reducir despilfarros, mejorar el espacio de trabajo,
mejorar la capacidad de respuesta...
Para ello, lean manufacturing se centra en un serie de principios que a su vez tendrán
su traducción a conceptos más definidos en cada una de las áreas de aplicación dentro del
flujo de producción:
Para ello, lean manufacturing se apoya en dos grandes pilares que veremos muy
brevemente, por ser referencias obligadas:
JIT (just in time o “justo a tiempo): debemos entender JIT como el resultado de un
proceso (largo) de búsqueda de la mejora constante dentro de la fábricas de
Toyota. Se trata de un conjunto de principios que rigen la producción, la relación
con los proveedores, la forma de distribuir la plantas, la adaptación de las
máquinas, etc. Taiichi Ohno (creador de JIT) dice: “Al intentar aplicarlo, se
pusieron de manifiesto una serie de problemas. A medida que estos se aclaraban,
me indicaban la dirección del siguiente movimiento. Creo que solo mirando hacia
atrás somos capaces de entender cómo finalmente las piezas terminaron
encajando”.
Jidoka: este concepto nos habla de automatización pero con un toque humano. La
revolución de este concepto no está en el qué sino en el cómo. Jidoka nos habla
de evitar la propagación de errores a lo largo de la cadena de producción de tal
forma que, si se detecta un error, se para de producir (cualquier persona en
cualquier parte del proceso), se subsana, se estudia, se busca su origen y se vuelve
a empezar. El objetivo es que el propio proceso de mejora en la automatización,
nos lleve a contar con máquinas Poka-Yoke (máquinas que detectan o ayudan
evitar los errores en la producción).
A su vez, estos dos pilares se asientan sobre otra serie de pilares más pequeños (unos
procedimentales, otros conceptuales) que hacen de cimientos la estructura de lean
manufacturing.
Hay muchísima información disponible, tanto a nivel editorial como en la red, sobre
estos conceptos, así que os dejo dos títulos de referencia: The Toyota Way y Toyota Production
System: Beyond Large-Scale Production de Taiichi Ohno.
Seguiremos ahora con Kanban, pero saliendo ya de las plantas de producción. A partir
de ahora subiremos a las oficinas de Microsoft, Yahoo, Google o la mía misma, para ver cómo
todos estos conceptos nos pueden ayudar en nuestras startups, en nuestros proyectos, en
nuestros grupos de trabajo o incluso en nuestro día a día más personal para conseguir lo
mismo que busca lean manufacturing, mayor calidad con un mejor aprovechamiento de los
recursos.
Desde que las metodologías ágiles hicieron su aparición son muchas las
aproximaciones que han ido tomando cuerpo: FDD, XP, Scrum, Kanban, etc., aunque todas
ellas comparten un espíritu común divergen en su enfoque, sus artefactos y sus prácticas.
Algunas son más complejas, más regladas, más estructuradas y otras son más adaptables, pero
nunca debemos olvidar que está en nuestra mano adaptar cualquiera de estas metodologías a
nuestras necesidades específicas. Dado que no hay dos empresas iguales, no hay dos maneras
iguales de implementar Scrum, XP y mucho menos Kanban.
Después de haber hablado de lean manufacturing creo que es importante aclarar que,
a pesar de sus similitudes procedimentales y conceptuales, Kanban no es una evolución del
anterior sino una metodología en sí misma. David J. Anderson fue el primero en llamar Kanban
(inspirados para las similitudes que encontró en los procesos pull) a la metodología con la que
estaba trabajando en sus equipos y proyectos. El origen de su trabajo estaba inspirado tanto
por el manifiesto por el desarrollo ágil de software como en la teoría de colas.
De manera continuada abordamos más trabajo del que podemos afrontar a la vez. Esto
provoca colapsos que nos impiden sacar trabajo a la velocidad que somos capaces por las
dificultades de cambiar de tarea, recuperar la información que necesitamos para cada una de
ellas, colocar el espacio de trabajo, etc. Esto es aplicable de manera individual o a nivel de
equipo u organización. Kanban se basa en la idea de que centrándose en un número de tareas
determinado (limitando el WIP) podremos ser más efectivos en la finalización de las mismas y
mejoraremos el flujo. Si además optimizamos y equilibramos el cómo una tarea va pasando de
una unidad de producción a la siguiente poco a poco iremos localizando y aliviando los cuellos
de botella. Paso a paso iremos consiguiendo esa velocidad de crucero a la que (como en el
vídeo) las tareas van fluyendo sin entorpecerse unas a otras.
Una de las analogías más claras que podemos usar cuando hablamos de flujos es el de
coches avanzando por carreteras. Un coche es una tarjeta que viaja por nuestra organización a
través de carreteras que son las distintas personas o equipos que la conforman. Si nuestro
equipo de analistas de software son una autopista de 5 carriles, muchas especificaciones
pasarán rápidamente por sus manos y fluirán a la siguiente carretera. Si nuestro equipo de
desarrollo es más bien una carretera regional, tendremos un atasco en el paso de una a la otra,
un cuello de botella. Por el contrario, si fuera al revés, nuestro equipo de desarrollo se pasaría
gran parte de su tiempo simplemente esperando trabajo. Cuando el tráfico se colapsa, la
velocidad de avance de los coches pasa a ser mucho menor que la velocidad marcada para esa
carretera por la dificultad de gestionar coches colapsados, acelerones y frenazos que impiden
que la circulación fluya.
Estas dos métricas describen nuestro flujo. Hemos de diferenciar el lead time (o
tiempo transcurrido desde que una tarea llega a nosotros hasta es entregada al cliente) del
cycle time (o tiempo que transcurre desde que empezamos a trabajar en ella, hasta que es
finalizada).
Por ejemplo, imaginad que somos una carpintería y un cliente hoy nos encarga un
aparador. Apuntamos la orden de trabajo y 4 días después empezamos a trabajar en el
aparador. 6 días después le llamamos para que venga a por él. Nuestro Lead Time ha sido de
10 días y nuestro Cycle Time ha sido de 6.
El equipo en kanban
Decíamos al principio que Kanban impone muy pocos elementos y eso se traduce
también en los roles. Así como en Scrum teníamos al PO, el Scrum Master, etc., en Kanban no
tenemos ningún rol preestablecido. Por supuesto, esto no significa que pueda o deba haberlos,
pero no serán roles específicos de Kanban (por ejemplo, si antes de introducir Kanban en un
equipo de programadores existía un Jefe de equipo lo seguirá habiendo después de introducir
Kanban).
Otra gran diferencia entre Kanban y Scrum es la propia concepción del equipo:
Artefactos
Las tarjetas
Veíamos en lean manufacturing que las tarjetas de producción eran indicadores de demanda
que iban en proceso ascendente desde el cliente o downstream hacia arriba en la producción.
Aquí las tarjetas toman otro enfoque, siguen siendo indicadores visuales de trabajo pero hacen
referencia a una tarea concreta que ha de ser producida y viajan de izquierda a derecha por el
tablero. Las tarjetas no viajan de un proceso al anterior, sino al revés.
No por ello el sistema deja de ser pull ni mucho menos. En nuestro tablero, lo que tira
de las tareas son los huecos en el WIP. Por ejemplo, si en la fase de desarrollo de un equipo de
producción de software hemos decidido limitar a 3 el número de funcionalidades que estamos
programando y finalizamos una, nos quedará un hueco que habremos de rellenar. Para ello,
iremos a la fase anterior (por ejemplo a análisis de funcionalidades) y buscaremos una tarjeta
que esté finalizada y lista para desarrollar. De esta manera no se empuja de una fase a otra, se
tira de ella cuando estamos listos para abordarla.
Fecha de entrada. El día que añadimos la tarea al tablero. Útil de cara a seleccionar
la próxima tarjeta que llenará un hueco de producción y nos ayudará también a
medir el lead time.
Fecha límite o “Deadline”. Es importante entender que no todas las tarjetas deben
llevar este dato, solo aquellas que por su naturaleza verdaderamente han de llegar
al final del tablero antes de una fecha determinada (nos detendremos en esto
cuando hablemos de las clases de servicio), normalmente por motivos estratégicos,
legales o por el elevado coste de entregar dicha tarea después del plazo marcado.
Un post it rojo, naranja o similar indicando que la tarea está bloqueada y que no
puede avanzar: por ejemplo, en la preparación de una oferta comercial podríamos
bloquearnos a la espera del precio de un proveedor o en el desarrollo de una
funcionalidad de un software porque no disponemos de la descripción de la
interfaz que necesitamos.
Un indicador visual de la persona (o equipo) que está sacando adelante un
elemento: a veces se usan imanes de colores, personajes de series de televisión
(por ejemplo, de Los Simpsons o South Park) o fotos/avatares de los miembros del
equipo.
El tablero
Haciendo una búsqueda rápida en Google Images con el término Kanban vemos
claramente dos tipos de resultados predominantes, los flujos de Kanban en lean
manufacturing y el tablero Kanban o tableros característicos de esta metodología.
La gran cantidad de columnas: son las fases por las que va pasando un elemento de
trabajo dentro del sistema. También hay colas y buffers. El número de columnas de
nuestro tablero dependerá de la complejidad de nuestra organización y de los
procesos seguidos para completar una tarea. Dividiremos nuestro tablero en tantas
columnas como necesitemos siempre que esta división nos ayude en la visualización
y control del flujo. Iremos viendo cómo construir nuestro tablero a medida que
avancemos.
Las tarjetas: podemos observar una mayor cantidad de información (fechas de
entrada al sistema, fecha máxima de entrega...).
Los colores de las tarjetas: nos servirán para identificar clases de servicio (unidades
de trabajo con políticas distintas que nos permiten adaptarnos a los distintos tipos
de trabajo que realizamos, se verá en profundidad en la siguiente clase). Además, el
uso de indicadores visuales encima de las tarjetas (de color naranja en este caso)
nos servirá para identificar situaciones concretas como los bloqueos.
Si nos acercáramos veríamos unos números al lado de las columnas, se tratan de los
límites del WIP.
Cada implementación Kanban es diferente y por ello cada tablero Kanban es único.
Como siempre, debemos entender claramente el objetivo del tablero para poder configurar el
nuestro de la manera más útil posible para nuestra organización.
El tablero nos va a servir en todo momento para visualizar el flujo; continuando con
nuestro símil lo podemos ver como una fotografía aérea del estado de las carreteras. Con un
simple vistazo debemos ser capaces de ver atascos (cuellos de botella), accidentes que están
parando la circulación (bloqueos), etc. El tablero nos permite visualizar pero también trabajar
sobre él y tomar decisiones.
En este ejemplo del mundo del desarrollo de software vemos nuevas divisiones.
Hemos dividido el pendiente/haciendo/hecho en tres subprocesos, identificando que una
nueva funcionalidad que queremos introducir en nuestra aplicación deberá ser analizada,
desarrollada y posteriormente probada antes de pasar a producción. Estos pasos son
consecutivos, y por ello el “hecho” de uno de ellos se convierte en el “pendiente” del
siguiente.
Vemos la aparición del concepto de cola, etiquetado en este caso como next o
siguiente. Ya no tenemos una pila (backlog) enorme del que vamos tirando. Esta columna está
estrechamente ligada a la planificación. Profundizaremos en esto cuando veamos el apartado
de la planificación pero por el momento pongamos un ejemplo: supongamos que cada tres
lunes se reúnen los directores de los departamentos de marketing, atención al cliente e IT para
decidir qué funcionalidades nuevas entrarán en producción. Esta columna servirá para
identificar estos elementos y por tanto se deberán arrastrar del backlog tantos elementos
como huecos disponibles tengamos en la columna.
Siguiendo con el tablero, vemos los números que identifican los límites del WIP en
cada una de las fases. El concepto se entiende a simple vista. No puede (o no debe) haber más
de N tarjetas en esta columna, pero si nos paramos un momento nos empiezan a surgir
algunas preguntas en las que iremos profundizando:
Voy a aprovechar el tablero para apuntar algunas diferencias clave entre Kanban y
Scrum. ¿Te sientes tentado a comparar un tablero Scrum con uno Kanban? Te propongo la
siguiente aclaración visual:
Scrum funciona en sprints en los que tratamos de llevar desde el sprint backlog hasta
el "hecho" todos las historias propuestas, por lo que al principio de un sprint solo tenemos
elementos en el sprint backlog, mientras que al final del sprint solo tenemos tareas en el
"Hecho". En Kanban, por el contrario, no existe un marco temporal. El tablero se rellena con
una cadencia constante, y el flujo avanza de manera constante, continua y equilibrada por el
tablero.
No mires atrás
Llega el momento de dejar muy clara una política fundamental a la hora de trabajar
con Kanban y el tablero: una tarjeta solo puede avanzar por nuestro tablero, nunca retroceder.
Os pido que reflexionéis sobre esta pregunta: ¿de qué sirve limitar el WIP si podemos liberar
un slot solo con devolver una tarjeta a la columna anterior?
Os aseguro que cuando empecéis a trabajar con Kanban os vais a sentir tentados de
manera constante de devolver tareas a "pendiente", pero al hacerlo estamos pervirtiendo
nuestro tablero ya que perdemos la visibilidad de los bloqueos, estamos “haciendo trampas”
con los límites del WIP, etc., y esto va a eliminar todo lo bueno que nos aporta Kanban.
Existen motivos más justificados para mover hacia atrás una tarea. Imaginad una
columna "revisión". Cuando hemos acabado de las creatividades de la siguiente campaña de
Coca-Cola, el equipo de cuentas revisa nuestro trabajo para juzgar si está aliado con el briefing
del cliente. ¿Qué pasa si no lo está? La tarea tiene que volver al equipo de diseño. ¿La
volvemos a llevar a "diseño"? Solo hay una mala respuesta a esta pregunta, no establecer una
política clara. La tarjeta podría efectivamente volver hacia atrás a "pendiente" de volver a
entrar en el WIP de "diseño". Podría quedarse bloqueada en "revisión" y generar una nueva
tarjeta, esta solución me gusta especialmente.
Aprovecho para hacer hincapié en la idea de que no hay dos Kanban ni dos tableros
iguales busca siempre que el tablero que te aporte el mayor valor posible a ti.
Buscando el límite
Elegir el tamaño apropiado de WIP para cada una de las columnas del tablero es una
tarea importante de cara a buscar la mayor eficiencia. Puede resultar complejo elegir el límite
ideal pero recordad que el proceso de implantación de Kanban es siempre evolutivo y está en
constante revisión. Seleccionemos unos límites que nos parezcan razonables y empecemos a
trabajar con ellos. En poco tiempo veremos son apropiados o deben ser ajustados. No hay una
norma general para establecer un límite inicial. Pongamos algunos ejemplos que nos puedan
ayudar.
Por ejemplo, un programador buscará bajar su WIP al máximo para prestar la mayor
atención posible a la funcionalidad que está desarrollando. El que pueda o no bajar su WIP a 1
dependerá en mayor medida de su entorno y de la forma de relacionarse con otros miembros
o equipos con los que trabaje. Si se está desarrollando una funcionalidad para una aplicación
web y se le presentan dudas sobre la interfaz de usuario es probable que esta tarea pueda
quedar bloqueada. Si es sencillo hacer una consulta al equipo de UX podrá proseguir sin
bloquearse. Si por el contrario el equipo de UX no está en la misma oficina o no está disponible
para una consulta rápida por Skype, en grandes empresa una consulta puede llegar suponer
rellenar un formulario y esperar lo que probablemente nos deje bloqueados. Un WIP de 1,
aunque pueda resultar ideal, puede llevar a dejarnos parados con mucha facilidad. En
empresas de desarrollo tamaño PYME es muy normal que exista un único pool de
programadores que atiendan tanto los nuevos desarrollos como la corrección de defectos de
software en producción y es necesario avanzar en paralelo, un WIP de 2 elementos nos puede
ayudar a compaginar mejor.
Para atender la labor comercial de una empresa, un WIP tan ajustado puede no ser
operativo en absoluto. En mi empresa, por ejemplo, es normal que haya entre 3 y 5 procesos
comerciales en un momento determinado en marcha, una persona canaliza y gestiona todas
las ofertas. En el proceso de realizar las ofertas depende del cliente, de proveedores, de un
técnico que analice la viabilidad, los plazos y los costes y en última estancia del visto bueno de
una entre dos personas (que solemos estar de un lado para otro). Esto hace que sus elementos
se bloqueen constantemente. Un límite de 2 mantendría el flujo de ofertas totalmente parado
la mayor parte del tiempo. En este caso 4 es un límite razonable.
Un cuello de botella es ese punto del tablero que estrangula el flujo. Si una carretera
de 4 carriles llega a un estrechamiento de 2 y luego vuelve a 4, los dos carriles extra después
del cuello de botella no serán necesarios.
Los cuellos de botella son naturales, en algunos casos podemos mejorar para
minimizarlos o incluso hacerlos desaparecer y en otros casos no podremos hacer nada para
evitarlos. Por ejemplo, pongamos una empresa de construcción que cuenta con 3 arquitectos y
20 peones de obra, quizá los tres arquitectos puedan diseñar 1 edificio al mes de 5 plantas
pero 20 peones nunca podrán construir uno al mes. Es de suponer que si una empresa de
construcción tiene ese volumen de pedidos ampliará el equipo de peones para adaptarlos a la
demanda de los clientes pero no es siempre tan sencillo. En una oficina puede llegar el caso de
que no sea rentable, estratégico o simplemente no haya espacio para introducir más gente en
el equipo. Por descontado, existen procesos que no podemos acelerar por más recursos que
añadamos, son los problemas tipo “embarazo”. Una chica tendrá 1 niño en 9 meses, jamás
conseguiremos que 9 chicas tengan 1 niño en un mes.
Limitar el WIP, como hemos visto, pone de manifiesto los cuellos de botella. Cuando
estos aparecen debemos intentar eliminarlos si esto es posible. Llegado el caso en el que no
podemos mejorar más un proceso y sigue limitando el flujo solo podemos hacer una cosa,
garantizar que el cuello de botella nunca se pare.
Los buffers
Los buffers son columnas que, colocadas y limitadas estratégicamente, nos van a servir
para optimizar el flujo cuando aparecen cuellos de botella que no podemos eliminar.
¿Ampliamos el WIP del proceso anterior para que nos quepan más elementos en el
"listo"? No es la solución, ya que perderíamos todas las ventajas de limitar el WIP. La solución
es sencilla, introducimos lo que en informática llamamos un buffer, una nueva columna con su
propio límite entre las dos columnas que nos amortigüe este tipo de situaciones:
Las reuniones
3.2.1. INTRODUCCIÓN
En esta segunda parte vamos a profundizar en algunos conceptos que nos ayudarán a
sacar un mayor partido a nuestros tableros. Veremos nuevas herramientas y métricas que nos
permitirán adaptarnos de una manera más precisa a la realidad de nuestras organizaciones.
Veremos también cómo planificar nuestros inputs y dividir el trabajo para maximizar la
predictibilidad de nuestra producción.
Pongamos un ejemplo concreto con una empresa que desarrolla software para dos
mundos completamente distintos: la publicidad y proyectos de emprendimiento. Estos últimos
suelen ser proyectos de un mínimo de 2 meses de trabajo y un máximo indeterminado. Los
primeros en cambio son proyectos (normalmente) de menos de un mes, a veces incluso de
pocos días. Por otra parte los proyectos de emprendedores tienen un grado bastante más alto
de indeterminación, pueden cambiar de objetivos, de funcionalidades o incluso (por desgracia)
Por otra parte el coste (no necesariamente económico) asociado al retraso es muy
diferente en ambos casos. En un proyecto de emprendimiento con un horizonte temporal de 4
meses sufrir un retraso en una funcionalidad concreta no es grave, hay tiempo para ponerse al
día antes del lanzamiento y además las fechas de lanzamiento suelen ser medianamente
flexibles. Probablemente el coste de un retraso será más intangible que económico. En cambio
en el mundo publicitario no hay retraso que valga, se trabaja con unos márgenes de maniobra
muy escasos y las fechas de lanzamiento son inamovibles (puede ser un evento, puede ser una
campaña que está firmada ya para emitirse en televisión). De ocurrir, un retraso en este tipo
de proyectos puede significar no cobrar el trabajo y perder el cliente.
Finalmente todo estos trabajos acaban siendo tarjetas dentro de nuestro tablero pero,
¿Cómo diferenciamos una tarjeta que “tiene que estar para el lunes” de otra que “TIENE que
estar para el lunes”? Es aquí donde entran en juego las clases de servicio.
Las clases de servicio son un mecanismo que nos permite diferenciar tipos de tareas y
asignarles políticas distintas dentro del tablero permitiéndonos adaptar nuestra
implementación de Kanban a nuestra forma de trabajo. Una clase de servicio se diferenciará
de otra por:
Hemos ido hablando de las políticas en Kanban a lo largo del texto. Ahora que
conocemos las clases de servicio es muy buen momento para profundizar un poco en este
concepto.
La primera clave de las políticas es que sean explícitas y conocidas por todos. Además
intentaremos en la medida de lo posible que nuestro tablero refleje visualmente estas políticas
haciendo más sencillo su manejo.
En Kanban trabajamos con políticas a varios niveles, unas más cercanas al trabajo de
valor que realizamos y otras al método. Aquellas que tienen que ver con el trabajo, con los
elementos que producimos, son propias de cada sector empresarial y de los procesos propios
de cada empresa. Con las divisiones del tablero, las tarjetas y otros elementos de visualización
trataremos de reflejar estas políticas en nuestros tableros y ayudar a su cumplimiento.
Nosotros por ejemplo no enviamos nada a cliente que no haya revisado el gestor de esa
cuenta. Por tanto tenemos una columna de revisión anterior al “entregado a cliente” que es
nuestro “hecho”. Además nuestras tarjetas podrían indicar siempre quien es el gestor de la
cuenta de cada elemento en el tablero (no lo hacemos porque por nuestra forma de trabajo es
una información de sobra conocida por todos y no nos aporta valor en la visualización).
Por otro lado tenemos las políticas que son propias del método de trabajo, de la
gestión de flujo. Hemos ido viendo los límites de WIP, las políticas de visualización (tarjetas,
indicadores visuales, colores, etc) y de la priorización en los procesos Pull. Vamos a ver estas
políticas con más detalle en el contexto de las clases de servicio.
Cada clase de servicio que establezcamos vendrá definida por una serie de políticas. El
objetivo de estas políticas es garantizar que se cumplen las necesidades concretas de cada
clase de servicio en cuanto a Lead Time, uno de los criterios con mayor impacto a la hora de
definir clases de servicio, u otros criterios diferenciales.
Cada clase de servicio tiene sus propias políticas independientes del resto de clases de
servicio pero a la hora de definirlas no podemos olvidar que todas ellas conviven dentro de un
mismo ecosistema y por tanto, deben ser coherentes entre sí.
Políticas de visualización.
Límites.
Políticas de priorización.
Políticas de visualización
La primera política que establecemos sobre una clase de servicio es la visual, la forma
en que la identificamos dentro del tablero. Las tarjetas de colores es la forma más común de
diferenciar clases de servicio. En muchos casos se incluye una leyenda en el propio tablero:
Además del color, podemos establecer otro tipo de decisiones visuales, como por
ejemplo establecer una fila diferenciada para una clase de servicio en concreto o incluir en la
tarjeta información específica para esa clase de servicio (por ejemplo: la fecha límite de
entrega).
NOTA: Como veis en la imagen del tablero, he separado el carril exclusivo para
visualizar mejor el flujo de la clase de servicio, significando lo “urgente” en color morado. Esta
política puede ayudar a visualizar el hecho de que “urgente” no compite con el resto de tareas
del tablero en los procesos pull ya que tiene la máxima prioridad.
Límites
Las políticas asociadas a los límites nos van a dar una nueva dimensión de
customización en nuestro tablero.
Hasta ahora hemos limitado el WIP de manera vertical, esto es, por columna, pero no
es la única manera de hacerlo. Veíamos en la imagen anterior como habíamos dividido una
columna independiente para tareas muy urgentes. Es muy normal no admitir en el tablero más
de un elemento de este tipo a la vez.
En la empresa del ejemplo, podemos utilizar esta clase de servicio para proyectos muy
cortos de gran valor económico. Estos proyectos se identifican con una sola tarjeta dado su
naturaleza reducida y no permitimos por política más de una tarjeta morada a la vez en el
tablero. La motivación de este límite es mantener a raya el impacto de este tipo de proyectos
sobre el flujo normal del tablero, evitando que se detenga por completo el avance de otras
tareas.
Hemos limitado las tareas en producción a seis pero además hemos independizado los
límites por clase de servicio de tal forma que siempre tendremos, por ejemplo, una tarea de
mejora en producción o, por lo menos, siempre tendremos hueco para una lo que nos va a
estimular a trabajar este área dentro de la organización.
Políticas de priorización
Además, existe un nivel de priorización por encima que tiene que ver con los input o
upstream de nuestra cadena de valor que veremos en la siguiente sección.
Se suele priorizar usando una política FIFO (first in - first out). Consisten en que se
selecciona para rellenar un hueco la tarea que lleve más tiempo en el tablero.
Podemos utilizar también una planificación Round Robin, en la cual seleccionamos
una tarjeta de un cliente o proyecto distinto cada vez.
En organizaciones pequeñas con un alto conocimiento por parte del equipo de
producción de los proyectos e intereses de la empresa, se prioriza de manera
intuitiva teniendo en cuenta tanto el tiempo que lleva una tarjeta en el tablero
como la importancia del proyecto o sus plazos.
Las políticas de priorización entre clases de servicio pueden ser más complejas y tener
un mayor impacto sobre el flujo, de esta forma, podemos establecer que de existir una tarjeta
morada (urgente) se seleccionará siempre esta tarjeta antes que cualquier otra del tablero a la
hora de hacer pull o, por el contrario, podemos establecer una clase de servicio “tareas para
cuando sea posible” que irán siempre las últimas a la hora de seleccionar.
A la hora de ejemplificar las clases de servicio se suelen utilizar las cuatro que os
presento a continuación. No son más que ejemplos que pueden nos sernos útiles y servirnos
como punto de partida y después adaptarlas a nuestras peculiaridades.
Expedite
Se trata los elementos de máxima urgencia de los que hemos venido hablando, en el
mundo Kanban se suele utilizar el término expedite o silver bullet para esta clase de servicio.
Identifican elementos excepcionales que por motivos de negocio (grandes presupuestos,
motivos estratégicos de peso, etc.) o por su gran impacto (por ejemplo un bug importante
encontrado en un software que permite a atacantes introducir virus en el sistema) se les da
una prioridad excepcional.
Cuando una tarjeta de este tipo entra en el tablero altera significativamente el flujo ya
que se convierte en máxima prioridad por encima incluso de tareas con fecha de entrega
cerrada.
Estándar
Fecha cerrada
Indican elementos que deben estar finalizados antes de una fecha concreta. Esto no
necesariamente indica urgencia. Por ejemplo podemos encontrar tarea de adaptación a
normativas que entran en vigor en una fecha concreta. El grado de urgencia de esta clase de
servicio depende de lo cerca que nos encontremos de la fecha de finalización límite.
Intangibles
Como hemos ido comentando se trata de tareas que “habría que hacer”. No tienen un
fecha de entrega ni un coste derivado de su retraso y por tanto van las últimas en cualquier
priorización.
Pizza a domicilio
Nuestros “inputs” son aquellas personas, departamentos, clientes, etc. que van
cargando de tareas nuestro pendiente, son los clientes de nuestro negocio de pizza a domicilio.
Cuando llega un encargo se pone a la cola.
Por otra parte nuestro horno tiene un ancho determinado (WIP limitado) y por tanto
no podemos tener en el horno más de 6 pizzas. La única manera de alterar la planificación es
decidiendo en qué orden entran las pizzas en el horno.
Para ello definiremos también políticas que pueden ir desde una cola de pedidos
similar al de nuestra pizzería (donde los pedidos se atienden por estricto orden) hasta
esquemas de mayor complejidad siempre y cuando ésta sea justificada.
Siempre puede ser que además de pizzas empecemos a producir también lasaña (otra
clase de servicio) que es más pequeña. Cuando manejemos distintas clases de servicio,
tendremos que establecer políticas que garanticen que ambas clases de servicio son atendidas
de manera adecuada a las necesidades de nuestros inputs.
Aquellos que alimentan nuestra cadena de valor son nuestros input o upstream, pero
no todos los inputs de nuestros Kanbans son iguales. En algunos casos nuestro equipo forma
parte de una cadena de valor más grande y nuestros inputs son procesos anteriores dentro de
la misma u otra compañía. En algunos casos podemos gestionar una empresa entera con un
solo tablero y nuestros input son los clientes finales del servicio o producto. La forma de
interactuar con nuestros inputs y de decidir las tarjetas que entran en producción es muy
distinta en cada caso.
De igual manera que priorizamos tarjetas una vez que están en nuestro tablero
también se priorizan las tarjetas de nuestros inputs que van a entrar en nuestro cola de
tarjetas o columna de "siguiente". En algunos casos podremos formar parte de la decisión y en
otros no. En algunos casos esta priorización puede depender de un solo input y en otros puede
suponer armonizar varias fuentes de trabajo. Veamos algunos ejemplos clarificadores.
forma ir atendiendo una vez a cada empresa (cada hueco en siguiente es rellenado por la
siguiente empresa de la lista) y volviendo a empezar cuando lleguemos a la última empresa.
Podríamos pensar incluso en una manera más justa de hacerlo usando un esquema
Round Robin ponderado por número de metros cuadrados alquilados. De esta manera
otorgaremos un mayor número de slots (reparaciones) al mes a las empresas con mayor
número de metros arrendados.
En muchos casos se busca el consenso entre todos los inputs o se realiza de manera
democrática. Cada input argumenta por qué deberían entrar en siguiente sus tarjetas y luego
se vota.
En la empresa de nuestro ejemplo esto se podría realizar por consenso entre las
personas que tratan directamente con los clientes y que se responsabilizan directamente de
los proyectos de los clientes que gestionan. Utilizando terminología Scrum cada uno es product
owner de los proyectos de sus clientes. A pesar de ello todos estamos al día del estado de cada
proyecto y nos es sencillo decidir cómo priorizar la cola.
A veces nuestros inputs conocen Kanban, entienden su forma de trabajo y por tanto
saben qué esperar de la producción en base al lead time e independientemente del método
usando para priorizar las tarjetas entienden el flujo de producción. En otros casos nuestra
forma de trabajo es opaca y, como en nuestra oficina, con muchos clientes se trabaja con
contratos tradicionales en los que se especifica plazos y precios fijos en base a una
especificación o briefing. En estos casos como os he comentado trabajamos con POs internos
que hacen las veces de input y trasladan los intereses del cliente y los contratos a tarjetas, de
alguna manera “agilizan” formas de trabajo más tradicionales y son ellos los que deciden qué
tarjetas llevan o no una fecha de finalización determinada o due date (en general aquellas que
deban estar acabadas dentro de un plazo inferior al lead time medio) y los que discuten la
priorización de las mismas en función de los plazos de los proyectos.
Tamaños
Como hemos visto, estamos buscando un lead time medio estable que nos permitan
confiar en el sistema y tener una visibilidad razonable de cuándo llegarán al final del tablero las
tareas que estamos introduciendo en la columna de "siguiente" ahora.
El lector intrépido (ya conocedor de Scrum) se habrá dado cuenta de que todavía no
hemos hablado de nada parecido a épicas, historias de usuario, etc. y que no hemos
mencionado todavía nada de técnicas de estimación de tareas como planning poker u otras. El
motivo de todo ello es que en Kanban encaramos de otra manera la planificación. En Scrum,
basándonos en el conocimiento aprendido del equipo sabemos aproximadamente cuántas
unidades de trabajo podemos sacar adelante en las próximas dos semanas (sprint medio) y
nuestro objetivo a va a ser seleccionar un conjunto de historias de usuario que nos permitan
ajustar al máximo el sprint backlog; sin embargo, en Kanban no funcionamos con divisiones
temporales, no hay sprints y por lo tanto no nos vamos a centrar en intentar ajustar el
volumen de trabajo a un marco temporal. Todo lo contrario, lo que estamos buscando en
Kanban es ese “horno de Telepizza”, estamos buscando reducir la variabilidad y confiar en que
nuestras tareas saldrán por el final del horno pasados diez minutos aproximadamente.
Por tanto no queremos estimar tarjetas, queremos que las tarjetas tengan un tamaño
similar que podamos acomodar en una clase de servicio. El enfoque como veis es diferente.
Además no nos vamos a preocupar en exceso, nos bastará la experiencia y el sentido común
para saber si una tarea es adecuada o no. Os propongo las siguientes claves para dimensionar
una tarjeta para hacer que sea pequeña.
Los límites del WIP no se llevan bien con tareas grandes (de semanas o meses). Si
tengo un límite de 2 y estoy trabajando en 2 tareas de un mes de duración me he
convertido en un cuello de botella automáticamente.
Evitemos las tareas con sub-tareas. Nos quitan visibilidad y crean bloqueos
parciales difíciles de gestionar ya que nos permiten avanzar a medias con una
tarea.
Es más fácil ajustar la variabilidad de las tarjetas si procuramos que sean siempre
pequeñas.
Para aprender a dimensionar, hay que entender qué significa pequeña en nuestro
contexto, que no es un concepto genérico.
Queremos que las tareas fluyan por un tablero con pulso, que las veamos avanzar y
entregar valor de manera constante. Esto nos permite ser ágiles, tomar decisiones y detectar
problemas de manera rápida. Os recomiendo que intentéis en la medida de lo posible que las
tarjetas sean de un tamaño tal que vuestro equipo pueda sacarlas adelante en pocos días o
una semana como máximo. Si una tarea veis que va a ser más larga preguntaros siempre si es
divisible en unidades menores de valor. Esto es clave, no sirve de nada dividir en unidades que
no generen un valor para nuestros stakeholders ya que esta es la clave del sistema, entregar
valor de manera constante. Si una tarea no se puede dividir porque no generaríamos valor con
las divisiones de manera independiente, entonces no es divisible.
Existen multitud de escenarios en los que las tareas necesariamente son más largas,
estos tiempos son una recomendación para tener un punto de partida. Como siempre, cada
caso es diferente.
Tampoco nos debemos pasar de pequeñas, si sacamos adelante una tarjeta cada dos
horas estamos creando un sobre esfuerzo de priorización muy grande.
Por tanto no estimamos de manera tradicional: “Tardaré unos tres días en hacer esto”
sino más bien clasificamos e intentaremos dividir el trabajo en unidades similares que nos
permitan reducir la variabilidad de nuestro Lead Time. Es este Lead Time medio el que nos
ayudará a planificar la entrega de valor.
Dividiendo el trabajo
En Scrum o XP se suele trabajar con una serie de niveles o de jerarquías que nos
pueden ser igualmente válidas si se adaptan a nuestra forma de trabajo, si no podemos buscar
otras divisiones si es que nos hacen falta. En el mundo del software y en concreto en las
metodologías ágiles, se trabaja mucho pensando en unidades de valor para el cliente, en la
entrega de valor constante. Por ello, a menos que no haya alternativa, intentamos no trabajar
largas temporadas en “tripas” que no podemos enseñar al cliente sino en unidades de trabajo
enseñables, lo que hace que la división en historias de usuario es muy natural.
Algunos equipos utilizan nuevas divisiones en el tablero para trabajar a la vez con dos
tamaños distintos de tarjeta o dos niveles jerárquicos simultáneamente. Os presento dos
alternativas.
Tablero a:
Tablero b:
En este segundo ejemplo, vemos como hay una zona superior en las que introducimos
las historias de usuario y en la zona inferior trabajamos como habíamos visto hasta ahora. En
ambos casos se limita el WIP en ambos niveles.
Esta alternativa puede ser interesante en algunos equipos y en otros no, como criterio
a usar antes de la implantación: no debemos complicar nuestro tablero con elementos
superfluos que no nos ayudan a visualizar el flujo.
Divisiones de valor
En el mundo del desarrollo de software en el que Kanban se forjó, existen unos hitos
fundamentales que marcan el timing de los desarrollos: las releases (personalmente, me gusta
más usar el término en inglés pero se suele traducir como liberación o publicación). Es el
momento en el que se pone a disposición del usuario una nueva versión del programa con
nuevas funcionalidades.
Aunque de un tiempo a esta parte la aparición del software como servicio (SaaS o
Software as a Service) ha minimizado en muchos casos estos costes, sobretodo en el mundo de
las aplicaciones disponibles a través de nuestro navegador web (Gmail, Google Drive, Dropbox,
Salesforce, SurgarCRM y un larguísimo etc.). Los lanzamientos de nuevas funcionalidades
dentro de este mundo tienen un coste menor ya que no requieren de paquetización,
distribución... pero no por ello dejan de conllevar costes aunque sean menores. Por ello, es
importante entender que el propio hecho de lanzar una nueva release lleva asociados unos
costes como son:
Marketing y comunicación para la nueva versión (no hay más que ver los
lanzamientos de las últimas versiones de Windows...).
Si es software tradicional vendido en tiendas, conlleva gastos de producción,
embalaje, distribución, etc.
Gastos por parte de los clientes, no sólo por la compra de nuevas licencias sino por
los gastos de adaptación a los nuevos programas: actualización de equipos,
formación, etc.
Costes internos (tiempos, reuniones, desplazamientos, etc.).
Generación de retorno.
Ahorro de costes.
Ventajas competitivas.
Imagen de marca.
De esta manera cada release puede estar potencialmente definida por un sólo MMR.
Conclusión
Las divisiones anteriores son muy utilizadas en el mundo Kanban pero no siempre se
adaptan a todas las empresas y contextos. Por ello, está en nuestra mano utilizar las divisiones
que mejor se adapten a nuestro trabajo. Pueden ser divisiones basadas en historias de usuario,
en divisiones centradas en el valor de mercado como las que hemos visto, o en divisiones
totalmente ad hoc para nuestra empresa.
Como siempre (una vez más), aprendamos a coger de las metodologías ágiles aquello
que nos es válido a nosotros y sintámonos libres para adaptar o mejorar lo que necesitemos.
Hablábamos antes del horno de pizza. Cuando llamamos a Telepizza y nos dicen un
plazo aproximado de entrega no le prestamos demasiada atención, sabemos que si están
tranquilos será media hora, si no una hora. Tenemos confianza y nos planificamos, sabemos
que tenemos tiempo para bajar a por unos refrescos o tender la ropa ;)... en definitiva,
conocer estas métricas nos ayuda a planificarnos.
Hasta ahora hemos visto dos métricas dentro del mundo Kanban: Cycle Time y Lead
Time. Son dos métricas sencillas pero con un enorme valor: con ellas podemos aprender sobre
el equipo, valorar el impacto de cambios y mejoras y sobretodo, nos sirven como referencia
tanto hacia el equipo como hacia los stakeholders de nuestra cadena de valor. En este
apartado, conoceremos una nueva métrica y hablaremos de la importancia del control y la
gestión del cambio.
Touch Time
Hasta ahora medimos cuando tardamos en servir una pizza desde que nos la piden por
teléfono, cuánto tardamos en preparar una pizza desde que empezamos con ello hasta que la
damos por finalizada, cabe preguntarse: ¿Cuánto tiempo estamos verdaderamente trabajando
en la pizza? El Touch Time mide el tiempo total que hemos estado trabajando de manera
efectiva en una tarea.
Volvamos con la pizza. Tenemos un cocinero que hace la masa, otro pone las salsa e
ingredientes, otro controla la fase de horneado y el último mete la pizza en la caja y adjunta
servilletas y demás. Cuando cualquiera de los cocineros acaba con la pizza que está se la pasa
al siguiente, pero probablemente entrará en cola (buffer) a la espera de que el siguiente
cocinero haya acabado las pizzas que tuviera antes de ésta. Así sucesivamente. Si hemos
tardado 1 hora en servir el pedido y hemos tardado 35 minutos en cocinar la pizza es probable
que sólo 7 minutos hayamos estado “trabajando” en la pizza. El resto del tiempo la pizza ha
estado esperando a que se la atienda. Fijaros que siempre se cumple:
Medir el Touch Time no es tan sencillo como nuestras dos métricas anteriores que sólo
requerían apuntar una fecha cada una en la tarjeta. Si utilizamos un tablero digital (se verán en
la próxima unidad) nos puede ser más sencillo pero si no, os recomiendo una aproximación
sencilla para vuestros tableros analógicos, como por ejemplo la que os enseño a continuación.
Hemos añadido una zona de puntitos con la idea de añadir un puntito en la reunión de
las mañanas si el día anterior nadie trabajó sobre esa tarea. Con esta técnica, no controlamos
exactamente las horas pero si que tenemos información de valor.
Otra opción es controlar nuestras métricas con una hoja de cálculo sencilla y muy fácil
de llevar sin necesidad de estar utilizando ningún tablero digital. Nos servirá para ir
acumulando datos por fecha y de aquí podemos sacar muchísima información. Os dejo un
ejemplo:
Una vez que vemos hecha la labor de “guardado y registro de datos”, nos será más
fácil analizar y sacar conclusiones sobre el funcionamiento de nuestro proyecto. Un momento
apropiado para hacer esta reflexión pueden ser en la retrospectivas, en ellas, analizaremos los
datos del último periodo en comparación con los anteriores y comparamos. El siguiente mapa
mental os puede ayudar como guía para interpretar los datos:
NOTA: Debemos conocernos y saber considerar qué afirmaciones pueden ser ciertas y
qué factores no reflejados en las métricas pueden haber forzado los datos (empezando por
unas simples vacaciones) para obtener información lo más fidedigna posible.
Ahora bien, no es lo mismo entender que interiorizar. Más allá de las bondades de
Kanban o cualquier otro método tanto Lean como tradicional, su implementación en el equipo
y en la organización puede convertirse en una odisea si no gestionamos el cambio de una
manera apropiada.
La gestión del cambio es, desde mi punto de vista, una de las áreas del agile
management más complicadas porque en ella, entran en juego variables que no podemos
reflejar en las celdas de una hoja de cálculo: formas de ser, sentimientos, inseguridades,
enfoques personales encontrados... por ello, son cada día más las consultoras, coaches y
expertos que asesoran a empresas de todo tamaño en estos procesos.
Uno de los grandes valores de Kanban radica para mi precisamente en este punto.
Kanban es en sí misma un herramienta de gestión del cambio y un catalizador de la mejora
progresiva y continua. Vamos a ver en lo que queda de unidad, cómo partiendo desde el punto
actual de nuestra organización, sin ningún gran-cambio organizativo, podemos empezar a
aplicar Kanban de manera muy sencilla y dejar que nos guíe en todo este proceso.
Objetivos
Lo primero que tenemos que tener claro cuando introducimos Kanban son nuestros
objetivos, ya que son ellos los que han de guiarnos en el proceso:
Ayer erais 6 programando por las mañanas, discutiendo en las comidas y programando
por las tardes. Hoy estáis hablando de cerdos y gallinas, del PO, de tableros, preguntando si
hay que meter las reuniones en el backlog... es un cambio profundo que requiere de una gran
implicación y motivación por parte de los integrantes para llegar a buen puerto. Estamos
pidiendo al equipo que interiorice roles, prácticas, artefactos, reuniones, metodologías de
planificación, etc.
Primeros pasos
La clave con Kanban una vez que estamos decididos a dar el paso es empezar de una
manera progresiva y aprovechar el empuje de estas prácticas, para introducir la mejora
continua dentro de nuestra organización.
Para ello intentaremos descomponer en fases claras los pasos por los que pasa una
unidad de producción desde que entra en nuestra cadena de valor hasta que la abandona.
Una forma de detectar de manera sencilla las fases de nuestra cadena es ver en qué
momentos cambian de mano las tareas o qué momentos empezamos a utilizar habilidades
diferentes para continuar con la producción.
De igual manera haremos con las tarjetas. Os recomiendo empezar con un nombre
para las tareas y la fecha de entrada ya que nos va a ayudar a calcular el Lead Time además de
ayudarnos en la priorización a la hora de hacer pull.
Por ejemplo, que haríais en el tablero anterior si, como pasa en mi empresa, aparecen
elementos urgentes con el briefing cerrado en cualquier momento. ¿Se quedan en Leads hasta
que se libere espacio en contacto inicial? ¿Los metemos directamente en oferta aunque no
queden slots libres?... Lo importante en estos casos es establecer una política clara para estas
situaciones en caso de que sean recurrentes. Otro truco para hacer las cosas incluso más
progresivas es pedirles que escriban una tarjeta la próxima vez que se pongan con una tarea
concreta. De esta manera no les estaremos pidiendo que analicen todo el trabajo que tienen
abierto de una vez si no a medida que empiecen a trabajar en tareas nuevas o que ya tengan
abiertas. La ventaja de esto es que nos vamos adaptando al tablero paso a paso. Nos
acostumbramos a escribir y a mover tarjetas y no hemos realizado ningún proceso tedioso.
NOTA: Tampoco nos hemos de preocupar por casos muy puntuales ya que no alterarán el flujo
en exceso.
En resumen: diseñamos nuestro tablero, las fases y pedimos al equipo que vayan
rellenando tarjetas y colocándolas en su fase actual y las vayan moviendo a medida que
avancen. Dos semanas después de esto, tendremos un tablero lleno de tarjetas. Habremos
visualizado el flujo y lo bueno de este enfoque es que, probablemente, estaremos empezando
a ver nuestros cuellos de botella sin haber limitado todavía la cantidad de WIP.
Limita el WIP
Si recuerdas cuando hablamos de los límites, dijimos que tirásemos hacia abajo.
Vemos que tenemos en este momento un total de doce elementos en nuestro WIP (dos
haciendo cola en el backlog y uno cerrado). Vemos también claramente que oferta está
haciendo de cuello de botella sobrecargando hacia atrás y dejando pocos elementos en las
siguientes fases. Nos interesa sobre todo limitar “Oferta” para observar si forzando el foco en
menos ofertas conseguimos una entrega más continuada para equilibrar nuestro flujo.
Tenemos que tener muy en cuenta las probabilidades de que una tarea se bloquee en Oferta
por mucho que limitemos el WIP ya que en muchos casos la dependencia de un técnico puede
dejar a los gestores de cuentas bloqueados. En este caso yo empezaría con algo así:
Hemos empezado con un límite de dos elementos por columna dando un poco más de
margen a oferta y a negociación. A este último le hemos dado tres porque, aunque está vacío,
la intuición nos dice que es por el atasco de ofertas. La negociación puede ser lenta y puede
haber puntos de bloqueo por parte del cliente por lo que tres nos ha parecido un punto de
valor para empezar.
Estamos empezando por lo que no nos pongamos muy estrictos. Busquemos una
adaptación progresiva a los límites. Van pasando los días y nos vemos aquí:
Como vemos, hemos mejorado pero seguimos con problemas en oferta. Ya lo hemos
comentado, el equipo técnico (que también ha empezado con su Kanban) tiene problemas
para dedicarnos tiempo. Esto tiene sentido, ellos tienen su WIP limitado en su tablero y algo
no encaja ¿Cómo gestionamos el WIP si tenemos personas en dos tableros a la vez? Limitar el
WIP por persona y por columna.
En nuestro caso esto tiene un doble valor, nuestro equipo de desarrollo se ocupa de
las 3 fases que tenemos definidas (análisis, desarrollo y pruebas) por lo que la gente va
saltando de columnas según necesita. Por tanto nuestro tablero tiene esta pinta hoy en día:
Como podéis ver sólo limitamos el siguiente. El resto de límites dependen de los
imanes. Hemos eliminado fases de presupuestación ya que no nos aportaban valor (debido a
que los procesos de presupuestación no son nada lineales), además de colocar los dos tableros
juntos para mejorar la visualización. (Nota: Quizá os llame la atención el Backlog abajo, esto es
por un tema de espacio, nuestra pizarra es vertical).
Hemos llegado al punto anterior y aún así seguimos con un gran cuello de botella en
presupuestación (al haber eliminado columnas el cuello de botella afecta a toda la fase de
presupuestación) y seguimos sin conseguir que los técnicos dediquen tiempo a propuestas.
La parte de arriba del tablero está avanzando con fluidez por lo que llegado el
momento, siempre hay alguna tarea de la que tirar y por tanto nuestros técnicos no “bajan” a
presupuestación. Necesitamos regular esto, necesitamos algunas políticas y las debemos dejar
claras.
Vamos a empezar a medir el Lead Time de las tareas que pasan por nuestro tablero y
nos fijaremos especialmente en aquellas tarjetas que sobrepasen la media de manera
significativa (si estamos tardando 6 días en finalizar una tarjeta, nos fijaremos en las de 10 o
más). Para poder evaluar este tipo de cuestiones necesitamos introducir las reuniones de
retrospectiva, busquemos un momento tranquilo (primera hora del lunes, última del viernes, o
la que sea buena para nosotros) y revisemos.
El objetivo de revisar estas tarjetas que exceden por mucho el Lead Time es iniciar una
conversación de mejora progresiva. Cuando estudiemos estas tareas es normal la conversación
fluya en las siguientes direcciones:
Hemos tardado más porque era una tarea más larga. ¿Se podría partir? ¿Son
normales estas tareas de mayor tamaño? ¿Debemos empezar a trabajar con clases
de servicio diferentes para estas tareas?
Ha habido problemas en la ejecución. ¿Se pueden evitar? ¿tenemos que mejorar
algún proceso? ¿podemos aprender de ello? ¿podemos establecer mecanismos de
control para que no vuelva a pasar (os acordáis del poka yoke)?
La tarea se ha pasado mucho tiempo en cola. ¿Necesitamos revisar el tablero?
¿necesitamos revisar las políticas?
En muchos textos sobre Kanban se habla de aplicar el método científico. A lo que nos
referimos con ello es a la mejora basada en la experimentación:
Conclusión
Las clases de servicio son una herramienta muy útil a la hora de adaptarnos de una
manera más concisa a los diferentes tipos de trabajo que realizamos en nuestra
organización.
Las políticas explícitas nos ayudan a trabajar de una manera fluida, reducen el
tiempo dedicado a la toma de decisiones y nos ayudan estructurar el flujo así como
a buscar mejoras de calidad en la producción.
Nuestra cadena de valor no es un elemento aislado, trabajamos en coordinación
con nuestros inputs de trabajo y con los receptores del mismo. Debemos acomodar
nuestro flujo y la forma en que priorizamos las diferentes entradas de trabajo para
buscar el mayor grado de satisfacción en todos nuestros stakeholders.
Dividir el trabajo buscando unidades de producción de tamaño similar nos ayuda a
reducir la variabilidad produciendo una entrega continua de valor. Hemos visto
también el valor de estructurar estas divisiones centrándonos en su valor añadido
de cara al mercado.
La gestión de cambio es una labor compleja. Kanban permite una integración evolutiva
sin realizar cambios bruscos de roles o procesos que nos ayuda a reducir la resistencia al
cambio. Aprender de los resultados y experimentar con nuestra implementación creará una
mejora continua en nuestra forma de trabajar así como en la calidad de lo que producimos.
3.3.1. INTRODUCCIÓN
En la primera unidad de Kanban vimos los conceptos más generales, las herramientas
básicas y la forma de trabajar con esta metodología.
En la segunda vimos cómo adaptar de una manera más precisa Kanban a nuestros
equipos de trabajo. También estudiamos cómo abordar la implantación de Kanban en un
equipo pequeño y cómo gestionar el cambio.
[1] Muchos de los aspectos comentados aquí han sido observados en el despliegue de
Kanban en el área de desarrollo de Destinia.com, con 40 ingenieros de desarrollo y
programadores divididos en seis equipos de trabajo.Con una tradición de desarrollo por ciclos
cortos y necesidades de negocio cambiantes, Kanban fue introducido hace cuatro años y desde
hace dos años se ha introducido Scrum para proyectos cruzados. Actualmente (2015) se
comienza a implantar Scrum de forma general para proyectos y Kanban para mantenimientos
y bugs. Algunas de las mejores prácticas observadas se comentan en los siguientes apartados.
En las unidades anteriores hemos vuelto una y otra vez sobre el concepto de mejora
continua ya que si recordáis, consideramos Kanban como un catalizador del proceso de
mejora.
En este apartado nos vamos a centrar en los cuellos de botella, la reducción del gasto y
la reducción de la variabilidad a través de modelos que nos ayudarán a identificar estas
oportunidades de mejora y nos aportarán maneras sistemáticas de abordarlas.
Cuellos de botella
Capacidad insuficiente. Este tipo de cuellos de botella surgen cuando el equipo que
trabaja en una columna no es capaz de producir todo el trabajo necesario para
mantener el ritmo de producción de los procesos anteriores. Esto no quiere decir a
priori que el equipo esté mal dimensionado o no sea eficiente, sólo indica que el
cuello de botella se produce por una descompensación entre la velocidad de
producción las fases anteriores y la del cuello de botella.
Recursos de acceso limitado. Estos cuellos de botella surgen cuando dependemos
de recursos (ya sean personas, otros departamentos, elementos ajenos a nuestra
organización...) de los que no disponemos de manera instantánea y nos bloquean.
La solución más inmediata que viene a nuestras cabezas cuando detectamos un cuello
de botella por falta de capacidad, es aumentar en número de recursos. Es decir, si el equipo de
consultores del proyecto no es capaz de cumplir plazos contratamos un consultor más.
Probablemente esta sea la única opción en algunos casos, pero en la mayor parte de
ellos será una opción equivocada ya que introducir un nuevo miembro en el equipo nos va
conllevar un aumento de costes que tendremos que estudiar y analizar para valorar su
rentabilidad (inversión vs beneficio), un proceso de selección que probablemente quite tiempo
a los consultores (queremos que revisen los perfiles para buscar al mejor candidato para el
proyecto) y un proceso de formación que una vez más va a quitar tiempo al equipo de
consultores que está trabajando. Durante un periodo de tiempo no despreciable (en mi
empresa históricamente 2 meses) el nuevo recurso quitará más tiempo del que aportará. En
muchos contextos (no todos) añadir un nuevo recurso a un proyecto en marcha sólo servirá
para retrasarlo todavía más.
Por otro lado, somos Lean y queremos reducir el gasto y maximizar la eficiencia.
Contratar nuevos recursos será nuestra última opción pero, ¿podemos mejorar el rendimiento
del cuello de botella? Os propongo una serie de enfoques sistematizables que nos pueden
ayudar a buscar soluciones:
Centrar el trabajo del equipo en tareas de valor añadido. En el día a día todos
tenemos 3 tipos de tarea:
◦ de valor añadido (realizar la consultoría)
◦ sin valor añadido pero necesarias (maquetar los documentos)
◦ sin valor añadido e innecesarias (rellenar un parte de horas que nadie está
revisando).
Para eliminar el cuello de botella, debemos favorecer que nuestro equipo se centre
en las tareas de valor añadido y para ello vamos intentar eliminar las tareas
innecesarias y vamos intentar apoyar al equipo en las tareas necesarias que no son
de valor añadido. Por ejemplo, en la oficina de consultoría del ejemplo anterior
haremos que todos puedan maquetar correctamente un documento y llevarlo a
impresión y por tanto, podamos descargar de este tipo de tareas (sin valor añadido)
con otros recursos más libres.
◦ Para averiguar qué tareas son de uno u otro tipo, hay 2 preguntas que debemos
responder:
▪ ¿Qué tarea o responsabilidades podemos eliminar?
▪ ¿Qué tareas o responsabilidades del cuello de botella son delegables?
Automatizar tareas. Incluso dentro del proceso de generación de valor añadido
realizamos muchas tareas sistemáticas que, en algunos casos, pueden ser
automatizables. Analicemos con el equipo del cuello de botella su trabajo por un
momento, en busca de tareas repetitivas o automatizables: Nuestros consultores
realizan una serie de cálculos financieros complejos en busca de ciertos
indicadores, invirtamos un poco de tiempo en automatizar las hojas de Excel. Si
además de ello el Excel a través de las fórmulas pre-genera parte del informe en
formato Word estaremos quitando/reduciendo el tiempo de redacción.
Demos prioridad a los bloqueos del cuello de botella. Los bloqueos interfieren en el
correcto desempeño de todo el equipo de trabajo. A pesar de ello en muchos casos
puede ser sensato dar mayor prioridad a la resolución de los bloqueos del cuello de
botella. Es el cuello de botella el que está limitando el flujo y por tanto sus bloqueos
afectan con mayor impacto en el desempeño global del tablero. Si este es el caso
de nuestros consultores estableceremos una política para dar mayor prioridad a sus
bloqueos. Podemos acompañar esta política con un indicador visual propio (un
indicador de otro color) que nos ayude a visualizar estos bloqueos “más urgentes”
en nuestro tablero.
Evitemos que el cuello de botella se quede sin trabajo. Vimos esto cuando
hablamos de los buffers en la primera unidad.
Miremos fuera del cuello de botella. En muchos casos los cuellos de botella se
producen fuera del mismo pero no nos damos cuenta. Por ejemplo, puede ser que
el trabajo previo entregado al cuello de botella tenga defectos que ralentizan el
trabajo dentro del mismo. El cuello de botella se produce en un punto pero
tenemos que buscar la causa en fases anteriores.
Cómo identificar tareas que no aportan valor añadido para maximizar producción
Como acabamos de ver en el punto 1 del apartado anterior, reducir las tareas que no
aportan valor es importante para aliviar un cuello de botella. Dar nombre a este tipo de tareas
nos ayudará a identificarlas y buscar soluciones.
En el mundo Lean, se habla muy frecuentemente de los Mudas (gastos o mal gastos)
que se suelen clasificar como gastos derivados de: sobreproducción, espera, transporte,
inventario, movimiento y exceso de procesamiento. En el mundo de la gestión de proyectos
simplificamos a 3 tipos de gastos o costes (dado su carácter necesario a veces el término coste
nos ayuda a pensar de una manera menos negativa):
Por desgracia por su propia naturaleza es bastante más complicado optimizar este tipo
de cuellos de botella. En muchos casos una vez que tenemos accesible el recurso el flujo se
libera rápidamente, lo que nos suele bloquear es la imposibilidad de avanzar en el flujo sin su
intervención.
Utilizaremos un buffer para evitar que el flujo se detenga en las fases anteriores al
cuello de botella estudiando el límite con cuidado. Imaginemos que para poder dar una pieza
por acabada y pasarla a la siguiente fase en una cadena de montaje necesitamos que alguien
del equipo de calidad la revise. Un miembro del equipo de calidad (que tiene otras tantas
tareas que controlar) dedica una hora al día a esta labor. Supongamos en una hora puede
revisar 4 piezas. El límite lo estableceremos en 4, si lo ponemos más alto se irán acumulando
revisiones de un día al siguiente y no servirá de nada, si por el contrario lo hacemos inferior es
probable que infra utilicemos este recurso cuando esté disponible.
Con este tipo de cuellos de botella tendremos que pensar de manera creativa, los
motivos que reducen la disponibilidad de recursos son muy dependientes de la cadena de
valor y la mayor parte de las veces no está en nuestra mano ampliar la disponibilidad del
mismo. De igual manera que con los problemas de capacidad, como última instancia y, si es
factible, podemos ampliar la disponibilidad del recurso o incluso convertir a nuestro recurso de
disponibilidad limitada en un recurso de disponibilidad inmediata. Tendremos que analizar los
costes y alternativas de cara a minimizar el gasto.
Fuentes de variabilidad
Igual que hemos hecho con los cuellos de botella, ahora vamos a fijarnos con
detenimiento en las fuentes variabilidad, identificándolas y buscando mejoras y soluciones.
Sobre las primeras podremos influir desde nuestro tablero y sus políticas así como con
la mejora técnica de procesos dentro de nuestro sector. Sobre las segundas no podemos influir
pero identificarlas nos va a ayudar a mitigar sus efectos sobre el flujo y establecer mecanismos
para reducir su impacto. No podemos impedir que llueva pero podemos hacer que la lluvia no
sea un problema.
Recordad siempre que estamos buscando un flujo estable con una cadencia
predecible, no necesariamente intentar ir muy rápido si eso nos genera variabilidad en la
entrega de valor. Por ejemplo, prefiero una ducha con un chorro constante aunque no sea muy
fuerte, que una con un chorro de agua cambiante; la segunda no genera confianza.
1) Tamaño de nuestras tarjetas: Tarjetas de muy diferentes tamaños en nuestro flujo generan
una alta variabilidad en el Lead Time medio de nuestro tablero. Hablamos en la unidad
anterior de buscar tarjetas de tamaño similar (de pocos días preferentemente).
Es típico en equipos que utilizan XP o scrum, verles trabajar con plantillas para definir
las historias de usuarios del tipo: “Como usuario quiero esto para aquello”. Esta plantilla da pie
a historias del tipo: “Como administrador quiero un resumen diario de actividades para
mejorar la visibilidad sobre el sistema”.
2) Distintos tipos de tareas y clases de servicio: Una de las mayores causas de variabilidad en
las primeras fases de Kanban es tratar los distintos tipos de tarea de igual manera. Por
ejemplo, podemos resolver incidencias a una velocidad de 2 al día y realizar avancen en el
proyecto a razón de 1 tarjeta a la semana. Si no separamos estas tareas en clases de servicio
distintas llegaremos a la conclusión de que nuestro Lead Time medio es de 3 días pero
tenemos una variabilidad enorme, por el contrario identificando las tareas correctamente
sabremos que cada clase de servicio tiene su Lead Time medio con una variabilidad mucho
más baja.
De esta manera, también podremos ajustar los límites del WIP por clase de servicio lo
que nos ayudará a establecer políticas que nos ayuden a resolver la interacción entre las
distintas clases de servicio. El Touch Time es un dato importante en este proceso ya que, por
ejemplo, podemos tener un Lead Time de 10 días en el tablero para una clase de servicio
concreta con un Touch Time de 1 día. Esto no es bueno o malo pero se, es un indicador que
nos ayuda a entender más profundamente el flujo y tomar decisiones en las políticas del
tablero.
Como hemos dicho antes, estas fuentes de variabilidad están centradas en el flujo y
son las que podemos trabajar desde Kanban de una manera independiente.
Además de las anteriores, existen otras fuentes internas que tienen que ver con el área
de trabajo específica y que deberemos trabajar, por tanto, con las herramientas técnicas
específicas. Si bien Kanban nos ayudará a identificar estas fuentes de variabilidad porque:
Está en nuestra mano seguir profundizando en las métricas para que, de igual manera
que medimos el Lead Time, Cycle Time y Touch Time podamos medir el tiempo que pasa una
tarea en cada una de las columnas o procesos para así identificar los puntos de mayor
variabilidad dentro del tablero...
En muchos casos por muy maduro que sea nuestro proceso, nuestra gestión del flujo,
nuestra capacidad técnica... seguimos teniendo un alto grado de variabilidad por elementos
que escapan a nuestro control. Por eso, de la misma manera que identificamos las fuentes de
variabilidad interna con el objetivo de reducirlas, debemos identificar las fuentes de
variabilidad externas para adaptarnos a ellas, mitigar su impacto y volvernos flexibles antes
elementos que no podemos controlar.
Pero recordad: nosotros somos Lean, flexibles y ágiles sabemos que los proyectos
mutan y pivotan y eso nos gusta, porque eso los hace mejores. No veamos el cambio como un
riesgo, asimilamos formas de trabajo que nos anticipan a los cambios y que trabajan con cierto
grado de ambigüedad de manera natural.
2) Expedites: Vimos esta clase de servicio en la unidad 2. Son tareas que por su naturaleza
alteran el flujo, alteran los límites y dejan al resto de elementos en segundo plano pero ¿cómo
afrontar este tipo de tarjetas para evitar que afecten negativamente a la variabilidad?
dependerá de la frecuencia de éstas de tal forma que si es baja, su impacto será bajo también
pero si es alta, podremos:
Estos tres tipos de variabilidad externas son tres tipos muy comunes, pero existe una
lista interminable de elementos que escapan al control de nuestra cadena de valor y que, sin
embargo, debemos tener en cuenta porque pueden afectar a nuestro Lead Time. Tratemos de
identificar y mitigar su efecto con las estrategias adecuadas en cada caso y sobre todo !seamos
ágiles!
Tiempos reducidos de entrega de valor y una alta calidad en la producción nos ayudan
a responder de manera ágil a los cambios, pero la agilidad, sobre todo, es una actitud del
equipo que debemos fomentar. El propio proceso de mejora asociado a la naturaleza de
Kanban y la introducción continua de mejoras en los procesos crea en la organización un clima
propicio para la adaptación rápida y orgánica de cambios.
Otras técnicas
Podemos utilizar muchas otras técnicas para abordar y plantear mejoras en nuestro
equipo. El valor de estas técnicas es darnos un marco y un enfoque concreto a la hora de
buscar y resolver problemas. Os dejo un enlace para que tiréis del hilo y sigáis investigando
sobre el tema: 5Ms
3.3.3. SCRUMBAN
Llevamos muchas páginas hablando sobre las bondades de Kanban y aunque son
muchas, la gran mayoría las comparte con otras metodologías ágiles también (os digo esto
porque lo último que podemos ser, si nos queremos considerar agile, es dogmáticos ya que,
como ya sabéis, cada metodología se adapta mejor a unas circunstancia u otras). Además, no
debemos olvidar que cualquier metodología es una herramienta que podemos retocar y
adaptar a nuestras necesidades (en Kanban no hay otra manera).
En este apartado, nos vamos a centrar en jugar con dos metodologías que, por su
naturaleza, son muy mezclables. Como expone en el libro: “Saquemos lo mejor de los dos”.
Pongamos por ejemplo que establecemos un sprint para las próximas tres semanas
con el objetivo de restaurar 10 motocicletas custom a nuestros clientes. Damos inicio al sprint
y nos encerramos en nuestro taller. A mitad de sprint aparece un cliente importante como dos
motos que quiere reparar de manera urgente ya que quiere participar en un concurso la
semana próxima. ¿Cómo gestionamos esto en Scrum? Estamos en un aprieto, nos hemos
comprometido a cumplir el sprint y tenemos al equipo 100% dedicado a ello pero no podemos
decir que no a nuestro cliente y su concurso.
Por otro lado, cuando podemos cerrar el foco y trabajar sin interrupción en un
proyecto (o varios) sin tener que dar soporte urgente ni atender a “expedites”, la limitación
temporal de Scrum crea un pulso muy fuerte que insta al equipo a trabajar de manera ágil y
muy alineada lo que hace que la planificación de un proyecto en base a Sprints sea más
sencilla, y, llegado el caso, más sencilla de negociar con un cliente, desde un punto de vista
contractual.
En mi empresa, empezamos trabajando con Scrum hace cosa de un año pero dada la
naturaleza cambiante y poco predecible del trabajo en el mundo publicitario éramos incapaces
de trabajar con sprints de manera correcta. Las replanificaciones son constantes, los proyectos
muchas veces llegaban y se entregaban en mitad de una Sprint impidiendo además la
finalización del Sprint Backlog. Llegamos a trabajar con distintos tableros de Scrum, con
distintos plazos de sprints y con el mismo equipo... un lío. Por el contrario en el tiempo que
llevamos trabajando con Kanban, tenemos una sensación mucho mayor de control y orden.
Vamos a ver cómo podemos utilizar Scrumban para intentar obtener los beneficios de
ambas metodologías aplicando un método que ya conocemos. Scrumban es una mezcla de
ambas metodologías pero esta mezcla no es exacta, Scrumban requiere de una adaptación
aplicada a nuestro contexto y a nuestro equipo. Para realizar esta adaptación nos podemos
valer de un método que ya conocemos: La gestión evolutiva del cambio con Kanban.
Para mí es más sencillo ver Scrumban como un scrum potenciado con los conceptos de flujo y
límites del WIP: apliquemos Kanban a nuestro Scrum.
Nos gusta planificar en Sprints pero queremos ser capaces de aceptar tarjetas
importantes de manera natural sin que esto suponga una interrupción importante para el
avance de los sprints ni terminarlos en plazo. Para lograr esto, vamos a dividir el trabajo y, por
tanto, el tablero en dos zonas:
Tarjetas Scrum: Son las historias o sub-historias de usuario con las que veníamos
trabajando hasta ahora. Tareas que por su naturaleza se adaptan correctamente al
concepto de Sprint: Nuevos desarrollos, corrección de errores no críticos, etc.
Tarjetas Kanban o fuera de Sprint: En esta clase de servicio (o conjunto de clases)
acomodaremos todas esas tarjetas que surgen en cualquier momento del trabajo y
por motivos de negocio, estrategia, etc. no pueden esperar al próximo Sprint.
También podemos usar esta división a la hora de planificar un nuevo Sprint para
tareas de mucho valor que queremos poder entregar antes del final del Sprint que
estamos planificando. La Zona Kanban no entiende de Sprints, las tarjetas entran
cuando lo determinamos y salen cuando se finalicen. Se guían por su propio flujo.
Como veis hemos introducido una nueva fila dentro del tablero y hemos seleccionado
un color propio para la tarjetas fuera de Sprint. Es hora de definir las políticas de este nuevo
tablero:
Como veis, hemos hecho poco más que juntar dos tableros en uno. La clave es la
convivencia. Partimos lógicamente de que un mismo equipo va a atender las dos partes del
tablero y para ello tenemos que crear hueco. Nuestra capacidad de producción bruta no ha
aumentado en principio luego, en principio, el límite de WIP total tampoco debe aumentar.
Tenemos que fijar límites para todo el tablero razonables y probablemente deberemos reducir
un poco la cantidad de trabajo planificada para un Sprint con el objetivo de reservar espacio de
producción para la zona inferior.
La labor de equilibrar adecuadamente los límites de WIP entre los dos tableros será
progresiva además de flexible. Por ejemplo, si vamos a poner a disposición del público un
nuevo producto en el que hemos estado trabajando es probable que en los primeros sprints
después de este lanzamiento aumentemos los límites de la zona inferior y reduzcamos los
superiores para poder atender las incidencias propias del lanzamiento. Consecuentemente
adaptaremos la carga de los Sprints para que nos dé tiempo a cumplir los plazos del mismo.
Estamos mezclando dos metodologías y también sus métricas. Las métricas en cada
una de las metodologías son importantes para el correcto desempeño y la mejora.. por tanto,
parece sensato intentar mantener las métricas de cada parte del tablero. Si esta sobrecarga es
excesiva, en lo que a la zona Kanban se refiere, podemos trabajar exclusivamente con el Lead
Time medio.
Con la segunda aproximación que hemos visto hemos generado todavía más valor, no
sólo contamos con los beneficios de limitar el WIP sino que ahora somos capaces de dar cabida
a tareas que desestabilizan cualquier Sprint.
Ni Scrum, ni Kanban son dos ciencias exactas y, por tanto, la suma de ambas tiene
unos límites menos claros aún. Estamos mezclando y en este proceso nos vamos a quedar en
el medio o más cerca de uno de los extremos. El dónde dependerá mucho de cómo trabajemos
la mejora continua y qué se adapte mejor de cada metodología a nuestro equipo.
Hemos visto también a lo largo de esta unidad y de las anteriores guías e ideas que
podemos aplicar manera sistemática para mejorar el flujo. Todos ellos nos pueden ayudar con
Scrumban, nuestro Scrum ahora tiene flow y podemos optimizarlo.
Además, en relación con su tamaño, con una cultura madura y asentada y con menor o
mayor capacidad para adaptarse a un cambio. De forma usual los cambios culturales no son
nunca fáciles, aunque inicialmente pueda parecer que todo el mundo los acepta de buen
grado.
Si bien no hay (y no debe haber) una “fórmula estándar” para escalar Kanban, en los
siguientes apartados vamos a analizar los principales aspectos problemáticos y ofrecer una
serie de ideas, obtenidas de la experiencia, que pueden ayudar en el proceso.
Aunque verás que los ejemplos y en muchos casos los términos provienen de una
organización IT, son aplicables a cualquier organización que desee aplicar Kanban en la mejora
de sus procesos.
Para intentar minimizar estos efectos contamos con un background importante. Somos
ágiles y Lean[1]. Debemos aportar valor desde el comienzo, con un objetivo a largo plazo (en
los siguientes apartados entraremos más en detalle en este aspecto) y con un plan detallado a
corto, con el objeto de ser flexibles y poder variar nuestras prioridades. No debemos tratar de
abordar un cambio organizativo completo. Debemos comenzar por probar que lo que tratamos
de llevar a cabo es viable y ofrece mejoras sobre lo existente, correr un riesgo razonable y
ejecutarlo en un tiempo reducido. Esto último evitará la pérdida de impulso.
El equipo piloto debería estar formado por personas afines al cambio y al pensamiento
ágil, que luego se diseminarán, tras el periodo inicial, por los siguientes equipos a formar en las
siguientes etapas, en una “polinización” de la cultura ágil. Este equipo deberá pasar por
diferentes experiencias para concretar las mejores prácticas iniciales para el resto de equipos.
El resto de equipos, por supuesto, tendrán que ajustar estas prácticas iniciales a sus propios
contextos.
Como inductores del cambio debemos formar temporalmente “parte del equipo” en
las técnicas Kanban y en la resolución de problemas, ejerciendo de coach, tal y como hemos
visto en las clases anteriores, hasta su madurez.
[1] Por supuesto podemos abordarlo como un proyecto de implantación con un backlog más o
menos completo. Ya conocemos Scrum y Kanban y conocemos su problemática así que ¿por
qué no?
Como hemos visto, los equipos pequeños, dada su entidad, pueden reorganizarse y modificar
sus procesos de una manera ágil, impensable para equipos de trabajo más grandes. Esta
parece una guía correcta, así que debemos abordar la división en equipos pequeños y, si estos
no existen, de equipos más grandes, hasta unas dimensiones razonables para un equipo ágil 5-
7 personas.
Un criterio óptimo para la división por equipos es lograr que en su trabajo diario sean
lo más autónomos posibles, esto es, evitando que tengan que interaccionar con otros equipos
y los consiguientes bloqueos de su actividad. Trabajar de una manera autónoma en una parte
del proceso end to end. Esto permitirá una planificación de su trabajo con el menor número
posible de dependencias externas. Esta división, dependiendo del tipo de procesos, puede
realizarse de dos formas diferentes (es probable que incluso una combinación de las dos):
Particionado de procesos complejos y particionado por producto o funcionalidad.
Por su parte, el particionado funcional o por producto, nos permite dividir equipos en
función del producto final de su actividad. El equipo realiza todas las actividades relacionadas
con el desarrollo o mantenimiento de un producto o sistema. En ocasiones apoyados por una
infraestructura de base y estructuras de apoyo eventual. Este modelo es una abstracción (y
muchas veces objetivo) de la división por unidades de negocio y se está convirtiendo en el eje
para la innovación de las grandes empresas, creando equipos de trabajo específicos, pequeños
y muy ágiles para sacar adelante proyectos de innovación. A la hora de abordar el particionado
de un equipo grande de trabajo puede ser un buen comienzo si los procesos no son
excesivamente complejos. Tenemos un ejemplo de este tipo de organización en Spotify.
Como hemos visto Kanban gestiona especialmente bien el trabajo solicitado desde
varias fuentes (inputs) y lo hace apto para situaciones donde un mismo equipo recibe
solicitudes de varias áreas o Product Owners.
En estas ocasiones es frecuente recurrir a swimlanes, uno para cada canal de entrada,
estableciendo una política round robin por defecto entre todos los inputs. Quizás moderada
por un wip individual por swimlane, cuya suma debe respetar el wip de la columna y que
permite modular los recursos que se desean reservar para cada input.
No es fácil, en cualquier caso, una coordinación con múltiples Product Owners. Cada
uno de ellos tiene diferentes ciclos de revisión de Kanban y muchas veces es difícil de controlar
la periodicidad de “replenishment”. Algunos autores proponen encuentros de priorización
periódicos con los Product Owners. También podemos ajustar el WIP en Backlog para admitir
más entradas si el Product Owner tiene un periodo prolongado de priorización. En estos casos
no viene mal establecer un protocolo de ordenación para las tareas en wips > 1, para poder
tirar de la tarjeta adecuada.
Una solución pragmática es asignar un role de coordinación dentro del equipo que
periódicamente realice las reuniones con los Product Owners (Véase queue replenishment
meeting) para conocer sus requerimientos y la importancia de estas y que realiza la
priorización de tareas en el día. Esta solución tiene el riesgo de “alejar” la priorización de las
necesidades reales del negocio.
Es muy interesante también que los Product Owners colaboren entre sí para
determinar la priorización de los trabajos del equipo. Se cimenta una priorización de las
necesidades de negocio en vez de una priorización por razones “departamentales”. Por esta
razón puede ser una buena idea priorizar el trabajo con todos ellos a la vez.
Aparte de algunas otras posibilidades como wip reservado, silver bullets y otras clases
de servicio que ya hemos estudiado, la colisión de prioridades es una actividad que debe
resolverse a nivel de Product Owners y lejos de ser un inconveniente, permite que diferentes
Products Owners colaboren conjuntamente en la visión del negocio y sean capaces de
determinar qué grado de prioridad posee la actividad entrante respecto a sus propias
prioridades frente al negocio.
Desde este punto de vista, se deben evitar islas dictatoriales, frente a una visión
común de las necesidades de la organización.
Tanto si los equipos están formados de manera natural como si hemos podido realizar
una división para minimizar los bloqueos, en el trabajo diario es normal que una actividad
quede bloqueada o pendiente por la ejecución de cierta parte de esa actividad u otra actividad
derivada en otro equipo.
Para evitarlo y a la hora de diseñar las tareas, aparte de un tamaño homogéneo como
ya hemos visto, es importante tener en cuenta que no deben tener dependencias de terceros.
Tenemos ya un lead time y sabemos cuánto tiempo tarda aproximadamente en servir una
tarea un equipo. Utilicémoslo.
Finalmente, en el peor de los casos, si un equipo en una de esas tareas requiere del
trabajo de otro equipo para completar su labor, deberá esperar a que el otro culmine su
trabajo en el lead time del otro equipo. Evidentemente es una situación no deseable, muchas
veces devenida por los propios principios Kanban y uno de los motivos fundamentales para no
aplicarse a la hora de desarrollar trabajo complejos y perdurables en el tiempo (proyectos).
Podemos ver un servicio como una actividad concreta, repetitiva, con un alcance
definido, planificado de antemano y riesgos conocidos. Colocar una puerta en un coche,
cambiar una ventana, etc. son algunos ejemplos. En este modelo podríamos tener también:
Kanban y proyectos
Entendido que, a priori, Kanban tiene un peor ajuste (o al menos más oscuro) a
proyectos, su propio creador propone una descomposición jerárquica de requerimientos, con
un seguimiento paralelo de dos niveles de descomposición sobre el tablero.
En esta concepción, los ítems de menor nivel que atraviesan en tablero son historias y,
para mantener los principios Kanban, se requiere un esfuerzo adicional en la etapa de análisis
para descomponer los epics en historias pequeñas y de tamaño similar, habilitando un flujo
suave y una predictibilidad de lead times.
En el caso que nos ocupa, como escalar Kanban, nos vamos a centrar en el tratamiento
de múltiples proyectos (con múltiples Products Owners) en un único tablero Kanban y/o el
tratamiento de proyectos que requieren actividades en varios tableros Kanban.
Si a pesar de todo nos encontramos en esta situación, deberían abrirse swimlanes por
proyecto.
Es estos casos se exige una capacidad de coordinación muy elevada por parte del
Product Owner, que deberá priorizar actividades entre diferentes tableros. Una vez más,
métricas como lead time en cada tablero le permitirán sincronizar tareas interdependientes.
Este objetivo puede lograrse sobre un Kanban personal físico donde exista una copia
simplificada de las tarjetas que el propio Product Owner actualiza en función de los avances en
los diferentes Kanbans.
Hacemos un inciso aquí para indicar que en muchos contextos hay una transición del
estado proyecto al estado mantenimiento del producto o sistema desarrollado en el proyecto.
Esta transición es excepcionalmente ligera en Kanban, bajando simplemente los wips y
eliminando swimlanes en los equipos que no requieran ya participar en el mantenimiento del
producto.
[1] Kanban: Successful Evolutionary Change for Your Technology Business - David J. Anderson
Sin embargo, hemos visto con anterioridad que Kanban se comporta especialmente
bien en la ejecución de servicios, actividades pequeñas de duración limitada. A la hora de
aplicar Kanban en entidades mayores (proyectos concretos), con unas fechas de entrega
requeridas y con cierta criticidad, puede provocar bloqueos por coordinación del trabajo
(bloqueos entre Products Owners, seguimiento en múltiples equipos…).
A este respecto, ya estamos familiarizados con Scrum, que está, como estamos viendo,
más especializado en la ejecución de proyectos. Es precisamente en esta problemática donde
puede complementarse a la perfección con Kanban. De hecho, Scrum puede aparecer como la
evolución lógica para el tratamiento de este tipo de trabajos, cuando madura la operación con
Kanban y puede ser más fácilmente aceptado y más adecuado a procesos de este tipo
(realización de proyectos).
Scrum posiblemente sea más adecuado en trabajos con las siguientes características:
Una de las posibles alternativas que hemos visto ha sido Scrumban, intentando recoger
lo mejor de ambos mundos en un contexto mono equipo. Ahora veremos otra fórmula
alternativa de combinación que permite su escalado a un contexto multi equipo.
Para ello es necesario que cada equipo se divida en dos unidades, que pueden ser
temporales, de por ejemplo 5-1, 4-2 o 3-3 miembros. Una de las unidades (normalmente la de
mayor tamaño, aunque puede modificarse el criterio en función de la carga de trabajo) se
dedica a trabajar en los proyectos y sus historias, con metodología Scrum. Quedan
“bloqueados” para Scrum. La otra unidad se dedica a mantenimiento menor y bugs, utilizando
para ello Kanban.
Uno de los problemas a la hora de abordar Scrum es cómo conseguir gestionar las
interrupciones de trabajo. Hay varias alternativas propuestas que ya hemos visto: en Scrumban
reservando wip, liberando una persona del equipo… Con este mecanismo podemos conseguir
además liberar al equipo Scrum de estas interrupciones y conseguir una línea de trabajo suave
en Kanban, consiguiendo una efectividad mayor.
Es conveniente realizar una cierta rotación entre las dos unidades. La frecuencia de la
rotación puede afectar tanto al lead time de Kanban como a la velocidad de Scrum, por lo
tanto debemos tener cuidado a la hora de realizarla y no modificar la capacidad de trabajo
demasiado frecuentemente.
Una vez en este nivel de madurez es especialmente sencillo abordar proyectos cross
complejos y normalmente críticos para el negocio, que requieren de la participación de
miembros de diferentes equipos de una forma ordenada y eficiente. Llegamos en este punto a
una gestión de proyectos transversal que muchas organizaciones ejecutan mediante fórmulas
tradicionales y que podemos plantear de una forma ágil. También encontraremos una fórmula
ideal para propagar el conocimiento, como ya vimos, mediante “polinización”.
Para comenzar debería ser suficiente una simple hoja de cálculo donde coloquemos
proyectos y recursos en filas y meses (por ejemplo) en columnas. Tantos proyectos y sus
recursos como tengamos previstos, en ejecución o finalizados en un cierto periodo de tiempo.
Cada proyecto debería tener asignado un Product Owner y sus fechas de comienzo y
duración estimadas deberían quedar registradas, así como la fecha de comienzo y duración
real a posteriori. En la casilla de cruce del equipo / proyecto con el periodo temporal deberían
aparecer los recursos asignados del equipo a ese proyecto.
La última fila puede quedar asignada a Kanban y en ella se fijan los recursos
disponibles para estas actividades, que nunca deberían llegar a ser cero.
Con toda esta información es posible realizar una planificación de recursos básica pero
muy importante. Además debería estar publicada al menos en el ámbito de Product Owners,
Coordinadores[1] de equipos, management, etc. con posible modificación por parte de los
Product Owners y coordinadores.
Es evidente que los datos de fecha y duración estimadas serán bastante erróneos pero
con el tiempo adquiriremos las métricas suficientes para realizar una estimación de proyectos
mucho más aproximada, según los Products Owner adquieran experiencia en sus solicitudes y
los equipos que las implementan.
[1] Hasta ahora no hemos mencionado el role de coordinador de equipo o Team leader por no
ser especialmente relevantes en los aspectos que nos ocupan. Ahora aparecen como gestores
de los recursos disponibles en cada equipo y de la actividad interna de los mismos. También
ejercen el papel de líderes técnicos.
Como ya has visto con anterioridad existen multitud de herramientas digitales (tanto
herramientas web como de escritorio) destinadas a simplificar la gestión de proyectos y, en el
caso de kanban gracias a que poco a poco su implementación es mayor, va creciendo el
número de herramientas específicas para aplicar la metodología.
Ningún tablero digital es tan versátil como aquel en el que tú puedes dibujar:
Hemos dicho siempre que una de las claves para sacarle el mayor partido posible a
Kanban pasa por customizar el tablero y la forma de trabajar con él para
adaptarlos progresivamente a nuestra forma de trabajo y sobre todo a las
peculiaridades de nuestro equipo y su contexto. Por muy configurables que
puedan llegar a ser las herramientas digitales, nunca serán tan customizables
como una pizarra y unos postits.
La visualización no es igual por varios motivos:
◦ Las pantallas son más pequeñas que un buen tablero; vemos menos de un
vistazo.
◦ La presencia no es constante. Desde mi escritorio con levantar unos
centímetros la cabeza puede revisar el tablero ANALOGICO, No tengo que
abrir el navegador u otro programa, no tengo que tocar ni cambiar nada, está
ahí.
◦ El trabajo en equipo sobre el tablero DIGITAL se hace más distante. Por
ejemplo, en nuestra oficina trabajamos una temporada con Leankit kanban,
un tablero muy potente, y lo que ocurría es que al final las reuniones de status
de las mañanas las hacíamos hablando en alto desde nuestros asientos cada
uno en su monitor...como imaginaréis, esto no fomenta en absoluto el diálogo
y la gente perdía la atención muy rápido (la opción de sentarse todos
alrededor de una pantalla tampoco nos resultó cómoda...).
Deslocalización. No hay que estar en la oficina para ver el tablero. Para muchísimas
empresas sólo esta opción, ya justifica la digitalización del tablero.
En línea con la anterior, nos permite trabajar con equipos divididos. Cuando un
equipo está dividido ya sea por más de unos metros o por varios kilómetros, el
tablero digital es la forma más sencilla de trabajar.
Métricas automáticas. Muchos tableros digitales nos calculan las métricas que
hemos visto en la unidad anterior (y algunas más) de manera automatizada, lo cual
nos quita trabajo y simplifica los procesos de recogida de datos y medición.
Valor añadido sobre las tareas. Los tableros digitales nos permiten añadir sobre las
tarjetas información de todo tipo: links a documentación útil, links a otros sistemas
electrónicos (correos electrónicos, bug trackers, ...), imágenes, etc.
Histórico. Los tableros digitales nos permiten revisar información histórica de
manera sencilla. Los post its físicos acaban en la basura.
La decisión sobre si usar tableros físicos o digitales depende de cada equipo y de cada
PM. Para mí, los tableros físicos explotan mejor la ventajas de Kanban pero hay valores de los
tableros digitales que son necesarios para equipos grandes y, fundamentalmente, para
equipos cuyos miembros no están todos en la misma oficina.
Para la primera implementación del tablero, tal y como hemos visto en unidades
anteriores, os recomiendo empezar siempre por el tablero físico ya que tendremos más claro
qué buscamos en un tablero digital si hemos trabajado sobre un tablero físico sin limitaciones
artificiales.
Hemos debatido ya sobre el uso de tableros físicos o virtuales. Aquí lo haremos desde
una perspectiva de escalabilidad.
Soporte a la planificación
◦ Soporte de proyectos
◦ Establecimiento de dependencias
◦ Asignación en icebox de diferentes tableros
◦ Lead times esperados por tablero / equipo incluyendo swimlane y otras
características del servicio
Seguimiento
◦ Filtrado por proyecto
◦ Estado de tareas de un determinado Product Owner, con situación en columna
y equipo que la ejecuta
◦ Repriorización de actividad
◦ Señalización de bloqueos
◦ Presentación en Kanban de Product Owner
Recomendaciones
Las metodologías ágiles se utilizan para llevar a cabo muchos proyectos, tanto los de
desarrollo como otro tipo de proyectos de cualquier naturaleza. Existen muchas
particularizaciones de los principios ágiles en forma de metodologías concretas y buenas
prácticas. Scrum y Kanban son las metodologías concretas más conocidas en el mundo de
desarrollo software y de gestión de proyectos tecnológicos.
Aunque se puedan aplicar en ciertos proyectos, es cierto que han tenido su máxima
expresión en el desarrollo de software. No obstante, las metodologías ágiles como Scrum o
Kanban no mencionan prácticamente nada de las cuestiones técnicas relacionadas con el
desarrollo de software. Y ese es precisamente el hueco que ocupa la programación extrema.
En el año 1996 publicó “Smalltalk, best practices patterns”, en el que describía estas buenas
prácticas.
3.4.2. EL OBJETIVO DE XP
Para que se puedan cumplir estos objetivos, la programación extrema propone una
serie de recomendaciones en forma de buenas prácticas técnicas para el equipo de desarrollo.
Pero esas buenas prácticas no son suficientes por sí mismas, tienen que entenderse bajo un
conjunto de valores y principios que permiten al equipo comportarse como una unidad con un
objetivo común.
Comunicación
Para que los desarrolladores puedan construir un producto que cumpla con las
necesidades o deseos de un cliente, tiene que haber una comunicación entre el cliente y los
desarrolladores. En las metodologías no ágiles, se considera que esta comunicación tiene que
realizarse a través de contratos y documentos. En la programación extrema se considera que
esa comunicación tiene que realizarse de la forma más directa posible, que permita una
conversación e incluso una negociación.
Además, muchas de las buenas prácticas técnicas permiten que haya comunicación
dentro del propio equipo de desarrollo y con los clientes. Todos los involucrados en un
proyecto tienen que conocer de forma clara los objetivos del proyecto, para que todas sus
acciones vayan encaminadas a la consecución de esos objetivos.
concepto de que todo el código es de todos fomentan la comunicación entre los miembros del
equipo.
Simplicidad
Este concepto está muy relacionado con el tipo de software que se está desarrollando.
La experiencia ha demostrado que en ciertas ocasiones los sistemas software se implementan
de tal forma que están preparados para cosas que nunca ocurren y eso tiene mucho coste y
poco valor. Es como la metodología lean startup pero aplicada al desarrollo de software.
Intenta consumir los mínimos recursos necesarios para sacar una funcionalidad, pero no
pienses en lo que vas a necesitar mañana o dentro de un mes, piensa en las necesidades
actuales y reduce el coste de llevarlas a cabo.
Por ejemplo, supongamos que queremos iniciarnos en el mundo del sky. Podemos
comprarnos un equipamiento de sky bastante básico, o incluso alquilarlo, con la idea de
probar. De forma que si finalmente nos gusta, podremos comprar otro equipamiento mejor.
Los anglosajones tienen muchos acrónimos relacionados con este valor. KISS es el
acrónimo de “Keep it simple, stupid” que se puede traducir por “Hazlo simple, estúpido”.
También usan el acrónimo YAGNI, el acrónimo de “You aren't gonna need it”, que se puede
traducir por “No lo vas a necesitar”. La programación extrema considera que si no sobre-
diseñas y te centras en lo importante de forma inmediata, no corres el riesgo de emplear tus
esfuerzos en hacer algo que es probable que no necesites porque aunque ahora te parece muy
evidente que será necesario, es posible que llegado el momento las necesidades del cliente
hayan cambiado. Y la última, BDUF, que quiere decir “Big design up front”, “Un gran diseño
previo” y hace referencia al caso extremo de definir completamente la arquitectura del
software antes de empezar a programar. Estas ideas se aplican en otras disciplinas de la
ingeniería (por ejemplo en construcción), pero han resultado muy poco adecuadas para el
desarrollo de software, utilizándose principalmente en el desarrollo en cascada.
Hay desarrolladores que se toman este principio al pie de la letra y sólo programan lo
estrictamente necesario para la iteración actual. Pero hay otros desarrolladores que evalúan
de forma cuidadosa cada caso y deciden emplear más recursos en la iteración actual para que
la incorporación de funcionalidades futuras sea pueda hacer de forma muy sencilla, aunque
eso implique un mayor coste de implementación incial. Como esta es una cuestión bastante
importante en el desarrollo de software, volveremos sobre ella más adelante.
Realimentación
Coraje
Además, también hay que tener el valor necesario para arriesgarse. El refranero
español lo tiene claro: “el que no arriesga, no gana”. Si un desarrollador cree en una idea tiene
que defenderla, convencer al equipo y arriesgarse por ella.
Respeto
El respeto es el quinto valor de XP, que se incorporó en la segunda edición del libro
“Extreme Programming Explained” (2004).
Como todo el código es de todos, hay que hacer un esfuerzo extra por hacer el
mejor código que puedas hacer. Cuando programas para ti mismo, puedes tomarte
muchas “licencias” y hacer las cosas rápido y sin pensar en el mantenimiento
futuro. Pero cuando tu código en realidad es el código de todos, por respeto a ellos,
deberías cuidar al máximo su calidad.
Si tu código hace que varios test dejen de funcionar, por respeto a los demás
miembros, deberías solucionar los problemas lo antes posible. Porque unos test
que no funcionan están invalidando el trabajo de todos.
Si un miembro del equipo tiene poca experiencia, hay que respetar sus ganas de
aprender y mejorar y hay que hacer un esfuerzo por ayudarle y enseñarle todo lo
posible. Las críticas siempre deben ser constructivas y deben estar enfocadas en la
mejora, no en la crítica destructiva.
Clientes/Usuarios: son los que necesitan que se cree la aplicación. Tendrán que
aprender el modo de comunicarse con el equipo, para conseguir transmitir sus
ideas. El equipo le ayudará en ese cambio de mentalidad para obtener el producto
en plazos.
Gestores: son los que controlan los recursos del proyecto. Aprenderán a medir el
progreso del proyecto, la calidad del producto y cómo responder a las preguntas
importantes. Es muy importante que aprendan a confiar en la propia gestión que
hace de sí mismo el equipo de desarrollo.
Programadores: son aquellos, dentro del un proyecto XP, que definen la
arquitectura, diseñan el sistema, escriben los test y el código. Aprenderán cómo
tratar con los requisitos cambiantes, con el cliente y lo más importante cómo
desarrollar lo que es necesario hoy sin pensar en las necesidades futuras.
El equipo en XP
Un proceso puede mejorar la productividad de un equipo, pero tan sólo para esa
mínima parte dentro de todo el proceso; en cambio, un equipo que trabaja de un modo
eficiente “como una unidad” puede mejorar la productividad en todas y cada una de las etapas
del desarrollo del software, aunque en muchas ocasiones esto no ocurre. No existen tantos
equipos que trabajen de manera compenetrada y unida, como si fueran una sola persona. En
el mundo del desarrollo del software hay muchos egos (o “estrellas del rock”) que prefieren
trabajar en solitario y no compartir su conocimiento.
El cliente/usuario
Al igual que en Scrum, en XP el cliente pasa a ser un miembro más del equipo.
El gestor
El/La Programador/a
Hay muchas técnicas parar determinar la calidad de un producto software. Algunas son
más cuantitativas (por ejemplo, medir el porcentaje de código duplicado), y otras son más
cualitativas (p.e. revisando el código entre los miembros del equipo). Existen algunas técnicas
que para medir la calidad se centran en los aspectos más tecnológicos (arquitectura software,
patrones de diseño...). Otras técnicas miden la calidad en función de la satisfacción del cliente,
cumplimiento de plazos, etc. Entraremos en detalle en estos aspectos en la siguiente clase.
Pero en este punto, podemos considerar que un software se ha desarrollado “bien”, es decir,
es de calidad, si cumple los siguientes criterios:
metodologías como scrum los tienen más desarrollados. En este sentido se puede
decir que XP está enfocada principalmente en los desarrolladores software.
Esta metodología se denomina programación extrema porque cuando se propuso,
sus buenas prácticas eran una forma de llevar al extremo tareas que los
desarrolladores ya realizaban pero de forma mucho menos frecuente.
Si revisar el código es bueno, entonces lo llevamos al extremo y el código se revisará
por otro compañero cuando se está creando. Es decir, se programará se revisará el
código todo el tiempo y por parejas. (Programación por pares).
Si los test son buenos porque de forma automática dicen si el software hace lo que
tiene que hacer y sin defectos, entonces todos los involucrados del proyecto
realizarán tests, incluso los clientes. (Test unitarios, de integración y de aceptación).
Además, si ejecutar los test me aporta confianza de que todo funciona, ejecutemos
los test en cada cambio del código (integración continua).
Si un código con un buen diseño es importante, entonces diseñemos todos los días
y cambiemos nuestro código para que siempre tenga un buen diseño (Refactorizar).
Si lo sencillo es lo mejor, siempre se intentará desarrollar de la manera más sencilla
posible para poner en marcha la funcionalidad y aportar valor al cliente, aunque eso
implique tener que rediseñar. (Hacer el trabajo actual de la manera más sencilla
posible).
Si la iteraciones cortas son buenas, se harán iteraciones cortas de días o de
semanas. (Re-planificación y retrospectivas).
Al final de esta clase y en la siguiente, desarrollaremos mucho más las buenas prácticas
de XP, pero a continuación se presentan algunas de las más importantes de forma resumida:
Los test automatizados son uno de los aspectos más importantes para que el código
desarrollado sea de calidad, es decir, esté libre de errores (calidad interna) y se comporte
como el usuario quiere (calidad externa). Además, los test son críticos a la hora de incorporar
nuevas funcionalidades a un producto, porque se reduce mucho el riesgo de que algo deje de
funcionar cuando añadimos una nueva funcionalidad. En realidad, un test no impide que se
introduzca un error al cambiar el código, pero al ejecutar el test veremos que falla cuando algo
que funcionaba deja de hacerlo. En este sentido, también existen unos test orientados al
cliente llamados test de aceptación. Estos test son el mecanismo con el que el cliente está
seguro de que el sistema se comporta como él desea, y lo sigue haciendo cuando se van
incorporando nuevas funcionalidades.
En la siguiente fotografía podemos ver cómo aplican los test automatizados otros
sectores como los fabricantes de sillas. En este caso, se prueba la resistencia al uso, en el
software, se prueba que el sistema no se rompe cuando se incorporan nuevas funcionalidades.
Código “entregable”
Uno de los secretos para que un proyecto tenga éxito, es que el equipo esté unido en
la consecución de los objetivos del mismo. Cuando el equipo es un conjunto de desarrolladores
que tienen que realizar un producto software, esto se traduce en que todo el código es de
todos, independientemente de quién haya escrito cada línea. Es decir, no hay propiedad del
código. Para conseguir esto, habitualmente se hacen revisiones de código de unos
desarrolladores a otros, y los desarrolladores participan en varias partes del código a lo largo
del proyecto. Esto permite que todo el código sea considerado como propio por todos los
desarrolladores. Esto también fomenta la colaboración entre los miembros del equipos, lo
miembros con mejores capacidades técnicas enseñarán a los novatos cuales son las mejores
técnicas. Al fin y al cabo, todos los desarrolladores deben sentirse cómodos con todo el código,
como si hubiese estado escrito por ellos mismos.
El código debe tener un diseño simple, que sea suficiente para la funcionalidad que se
está proporcionando hasta ese momento. Se desaconseja que el código esté
sobredimensionado y ultraflexible, porque eso puede hacer que sea más complejo de lo
necesario, lo que finalmente dificulta su creación y mantenimiento. Además, debe cumplir con
los criterios de calidad, entre otros: que no haya código repetido, que sea sencillo, que sea fácil
de entender una vez escrito, que se comporte de forma esperada, etc. Para conseguir que el
código tenga calidad se aplica de forma continuada una técnica llamada “refactorización”, que
consiste en realidad cambios en el código con el objetivo de que tenga mayor calidad, pero sin
añadir ninguna funcionalidad adicional. Además, se usan técnicas de análisis continuo que
miden la calidad del código. Una de las métricas más básicas y más usadas es la que determina
si hay código duplicado.
Los valores son universales y muy genéricos. Aunque en las explicaciones hemos
introducido ejemplos específicos relacionados con la programación, en realidad podríamos
haber puesto ejemplos de cualquier otro contexto, ya que la comunicación, simplicidad,
realimentación, coraje y respeto se podrían aplicar en otros contextos.
Para cubrir el hueco entre los valores y las buenas prácticas técnicas, Kent Beck, uno
de los autores de la metodología XP decidió indicar una serie de Principios. Según él, los
principios son guías vitales específicas de un entorno concreto. Dicho de otra forma, los
valores son demasiado abstractos para guiar el comportamiento. Los principios son un
refinamiento de los valores pero concretados para un entorno específico.
1. Humanidad: los desarrolladores son personas y, como tales, tienen necesidades y objetivos
personales. La programación extrema es consciente de este aspecto y no considera a las
personas como recursos intercambiables. Algunas de las prácticas de XP tienen como objetivo
satisfacer, en la medida de lo posible, las necesidades personales de cada miembro del equipo
de forma equilibrada con el equipo como conjunto. El razonamiento detrás de este enfoque es
muy sencillo, una persona estará involucrada con los objetivos del equipo si en cierta forma
esos objetivos están alineados con sus propios objetivos personales.
2. Economía: alguien paga los sueldos. Así que todo el trabajo técnico tiene que estar alineado
con los objetivos de negocio. Siempre se intentan implementar cuanto antes las historias de
usuario con mayor valor para el negocio. Hay dos cuestiones económicas que afectan al
desarrollo software. Por una lado está el valor del dinero en el tiempo, que se refiere a que
tener un euro hoy es mejor que tener es mismo euro mañana. Por eso es necesario tener
software funcionando cuanto antes, incluso ese software podrá llegar a producción si el
modelo de negocio lo considera oportuno. Este tipo de ideas están muy alineados con los
conceptos de lean startup, en los que hay que validar el modelo de negocio cuanto antes con
los clientes. Por otro lado está el valor como opción de futuro. Si el software y el equipo son
flexibles y se adaptan al cambio, tendrán mucho más valor que si son fijos y rígidos. Las
prácticas técnicas que se proponen tienen la economía muy presente.
3. Beneficio mutuo: Las tareas tienen que suponer un beneficio para el que las realiza y para el
que se beneficia de ellas. Si no es así, esas tareas acabarán realizándose con menos cuidado
porque no aportan un valor directo al que las realiza. El caso más representativo es el caso de
la escritura de una documentación extensa que explica con detalle el comportamiento de un
sistema. Escribir la documentación no aporta ningún valor concreto al que la escribe, porque
todo el valor será obtenido por el que consulte la documentación en el futuro. En XP se
sustituye la documentación detallada por un conjunto de prácticas que aportan mucho valor al
que las realiza y ofrecen incluso más valor que la documentación al que recibe los resultados
en el futuro. En concreto, en XP se promueve la escritura de test automatizados, la mejora del
diseño de forma continua y la selección de nombres en el código que sean auto-explicativos.
Todas estas técnicas aportan mucho valor al que las realiza, porque facilitan la comprensión y
mantenibilidad del código hoy.
4. Auto-similaridad: intenta aplicar las cosas que funcionan en otros contextos y a escalas
diferentes, porque pueden funcionar también. Esto, sobre todo, se aplica a los tests. Puedes
implementar tests a diario a módulos internos de la aplicación (test unitarios). Pero también
puedes implementar test de integración y de aceptación una vez por semana para verificar que
la integración del módulos y el sistema completo funciona como se espera.
6. Diversidad: los equipos de desarrollo tienen que tener diferentes habilidades, experiencia,
enfoques. Solo de esta forma el equipo podrá elegir las mejores soluciones en cada caso. Eso
puede ser una fuente de conflictos que tienen que resolverse, por eso XP tiene algunas
prácticas técnicas que favorecen los espacios de comunicación necesarios para resolver esos
conflictos.
7. Reflexión: los buenos equipos no solo hacen el trabajo, si no que también son conscientes
de cómo hacen el trabajo y mejoran de forma continua el proceso con el que hacen el trabajo.
Las retrospectivas en scrum son una práctica concreta orientada a la mejora del proceso. Tener
un espacio para el auto-análisis y la crítica constructiva favorece enormemente al
funcionamiento de un equipo.
ejemplo, los tests son una forma de redundancia sobre una funcionalidad implementada. Un
código actúa de una forma y otro código verifica que actúa como debe actuar. La
programación por pares o la revisión del código son una forma de redundancia. La
comunicación continua con el cliente es una forma de verificar lo que se pidió en un primer
momento.
11. Fallo: hay veces que intentar algo y fallar es mucho mejor que tener interminables
reuniones discutiendo las bondades de cada alternativa. Hay gente que denomina “análisis
parálisis” al proceso de sobre-analizar algo elucubrando decenas de variantes y situaciones
cuando en realidad se podrían haber implementado dos o tres propuestas y haber realizado un
análisis empírico, mucho más efectivo. El fallo es una forma de aprender y si se gestiona de
forma adecuada, mucho mejor que el análisis parálisis. El lean startup recomienda fallar rápido
y barato, como forma de validar modelos de negocio.
12. Calidad: la calidad no es una forma efectiva de control. Un proyecto con mayor calidad no
es más costoso que otro con menor calidad. En proyectos pequeños, en forma de prototipos,
los desarrolladores pueden relajar mucho la calidad del código y ganar con ello algo de time-
to-market. Pero en prácticamente cualquier proyecto real la calidad garantiza que el coste del
mantenimiento no se dispara, lo que en el medio plazo reduce los costes y los riesgos del
proyecto. Hay veces que la calidad está reñida con la simplicidad. Una solución más
mantenible puede ser más compleja y costosa que una solución más simple pero menos
mantenible. La regla sería: intenta hacerlo lo mejor que puedas con el tiempo disponible. En la
siguiente iteración se mejorará con el trabajo de la primera iteración como base. Esto se puede
considerar una pérdida de tiempo, pero también es una forma de luchar contra el análisis-
parálisis, aportando valor al cliente desde el principio y reduciendo los riesgos.
13. Pasos de niño: intenta dar los pasos lo más pequeños posibles, eso reducirá los riesgos de
fallo de los pasos grandes. Por ejemplo, pasa los test por cada pequeño cambio de código que
realices. Eso permitirá detectar más rápidamente los potenciales errores que introduzcas. No
esperes dos años a sacar una nueva versión, intenta ofrecer las actualizaciones lo más
frecuentes a los usuarios. A priori puede parecer que los pequeños pasos hacen el desarrollo
más lento, pero, en la práctica, los pequeños pasos permiten mitigar muchos riesgos y los
problemas se solucionan mucho más rápido.
lo mejor que pueda. De igual forma, la persona encarga de implementar una historia de
usuario se responsabiliza del diseño, implementación y prueba de dicha historia.
Los principios permiten comprender mejor las prácticas técnicas propuestas en XP.
Además, siguiendo los principios se pueden elaborar nuevas prácticas más adecuadas para
ciertos tipos de proyectos.
Como hemos visto antes, una de las principales diferencias entre XP y otras
metodologías como Scrum es que en XP el peso principal lo tiene el equipo de desarrollo y las
buenas prácticas técnicas que se recomiendan. A continuación os enumero las buenas
prácticas técnicas que XP propone para conseguir un software de calidad de forma frecuente y
con un coste predecible:
Obviamente también hay que respetar al resto de compañeros del equipo, mantener
la sala con un nivel de ruido aceptable y evitar interrumpir a los demás cuando están
concentrados en una tarea que requiere concentración.
Otro aspecto importante que hay que tener muy presente es que el número de
personas de un equipo no puede ser muy grande. La experiencia ha demostrado que el
tamaño ideal para un equipo de desarrollo son las 7 personas, pudiendo llegar hasta 9 en casos
excepcionales. En caso de equipos más grandes, tendrán que dividirse en dos para llegar a un
equilibrio entre maximizar la productividad y minimizar la carga de gestión y coordinación
entre los miembros.
Incluye en el equipo todos los perfiles necesarios para la consecución de los objetivos
del proyecto. Es un forma de decir es mejor dividir a los equipos por proyecto que por tipo de
tareas. La experiencia ha demostrado que es mejor que en un mismo equipo exista una
persona experta en experiencia de usuario, varios desarrolladores y un administrador de
sistemas en vez de tener departamentos de experiencia de usuario, departamentos de
desarrollo y departamentos de sistemas que se encarguen entre ellos de varios proyectos.
Focalizar en un proyecto, con unos clientes concretos y con unos compañeros concretos ayuda
a implicarse con el proyecto, a tener la sensación de equipo y a conseguir mejor los objetivos.
Un equipo no tiene por qué ser constante a lo largo del tiempo, puede cambiar de
integrantes a medida que el proyecto avanza y ciertas tareas dejan de ser necesarias. Por
ejemplo, la persona encargada de UX en un proyecto puede tener menos carga de trabajo en
las últimas iteraciones del proyecto. En ese momento se podrá dedicar a otro proyecto.
Aunque un miembro del equipo llegue un momento que puede estar colaborando con
otro equipo en otro proyecto, hay que intentar evitarlo en la medida de lo posible. A las
personas nos cuesta mucho cambiar de tareas y de objetivos, somos más productivos cuando
tenemos un objetivo claro y todas nuestras acciones están encaminadas a conseguirlo.
Además, colaborando en dos equipos simultáneamente se reduce la sensación de pertenencia
al grupo, lo que redunda negativamente en la motivación y el compromiso.
Cada miembro del equipo tiene que saber cual es la mejor tarea que puede desarrollar
en cada momento por el bien del equipo. Además, cada miembro del equipo tiene que
conocer el estado del desarrollo de la iteración actual y del proyecto en su conjunto.
En muchos equipos de desarrollo se pretende que el avance del proyecto sea visible
para todos en un mural. Para ello, utilizan post-its que son fáciles de escribir, desechar y
mover. Cada post-it representa una historia de usuario. Cada historia de usuario se divide en
tareas, y para cada una de ellas también se usa un post-it. Estos post-its son fáciles de escribir
por cualquiera y son fáciles de mover de estado. Es habitual tener una pizarra con columnas.
Cada columna representa el estado de la tarea: Lista, En progreso, Finalizada, Con
impedimentos.
A esta forma de gestionar el avance de los proyectos también se le conoce como visual
managment. El blog XQA de Xavier Quesada muestra muchas técnicas interesantes de gestión
visual. A continuación se muestra una fotografía de un radiador de información típico extraída
de este blog.
Una de las grandes ventajas de los radiadores de información es que el estado del
proyecto siempre es visible para todos. Para los desarrolladores, para el scrum máster y sobre
todo para los clientes, que de un simple vistazo y sin apenas conocimientos técnicos pueden
ver si determinadas funcionalidades ya están implementadas en el sprint actual.
Hay algunas buenas prácticas que deberían considerarse simplemente como sentido
común. Y es que trabajar las horas razonables para ser productivo se debería aplicar en
cualquier contexto. Lo que ocurre es que el desarrollo de software es un tipo de tarea tan
especial que parece que podemos estar programando todo el día simplemente con un poco de
café a nuestro lado. El problema es que llegado a un punto, la productividad cae hasta el punto
de que empezamos a cometer errores que producen más daño que el beneficio que podríamos
obtener por haber trabajado más horas.
En ciertos momentos del desarrollo puede ser necesario “hacer un esfuerzo” y quedarse
algunas horas más, pero eso será un mal síntoma y deberían solucionarse cuanto antes los
problemas que lo provocaron. El trabajo intelectual como el desarrollo de software bajo
mucha presión de forma continuada en el tiempo conlleva inevitablemente al desarrollo de
productos de baja calidad.
No hay mucho más que decir sobre las historias de usuario que no se haya dicho ya a
lo largo del curso, así que no volveremos a repetirnos, si alguno de vosotros tiene alguna duda
o cuestion a debatir os dejo abierto el foro al respecto :)
En muchas organizaciones este tiempo extra de margen se suele emplear en que los
desarrolladores colaboren en proyectos de software libre que puedan ser interesantes para la
organización. O bien que experimenten con nuevas tecnologías. O simplemente que mejoren
sus habilidades como programadores o gestores.
Google es famosa por permitir a sus empleados que dediquen el 20% de su tiempo a
proyectos de software libre. La empresa madrileña Kaleidos también aplica una técnica similar
con su pi-week.
Por otro lado, XP recomienda celebrar ciclos de 3 meses a modo de guía general del
desarrollo cubriendo todas las semanas dentro de esos tres meses.
3.4.8. REFERENCIAS
Manifiesto Agil
1996. Smalltalk Best Practice Patterns. Prentice Hall. (ISBN 978-0134769042).
1999. Extreme Programming Explained: Embrace Change. Addison-Wesley.
Winner of the Jolt Productivity Award. (ISBN 978-0321278654).
2004. Extreme Programming Explained: Embrace Change (second edition). Addison-
Wesley. (ISBN 978-0321278654)
2008. Implementation Patterns. Addison-Wesley. (ISBN 978-0321413093).
2007. Scrum and Xp from the Trenches. Lulu Pr (ISBN 978-1430322641).