Etiqueta: gestión de proyecto

Kanban en una organización tradicional: Primeros pasos

Estoy trabajando con una empresa con las siguientes características:

  • Desarrolla sistemas de software complejos.
  • Actualmente está en curso un proyecto estratégico, que consiste en varios proyectos relacionados entre ellos
  • Cada proyecto involucra a equipos de distintas funciones y la coordinación entre los equipos no es fácil. Los desarrolladores están sobrecargados, a veces participan en más de un proyecto y trabajan horas extras.
  • Los Jefes de Proyectos están tan sobrecargados que hace varios meses la empresa decidió contratar asistentes para ayudarles con las tareas administrativas
  • Los retrasos en los proyectos no son excepciones
  • El proyecto estratégico se gestiona proyecto por proyecto.
  • Aunque en el sistema de gestión de la empresa se recopila una variedad de datos de los proyectos individuales, determinar el estado real del proyecto grande no es sencillo.
  • La empresa está implementando CMMI® nivel de madurez 3.
  • La gente ve cualquier metodología como una carga adicional de trabajo

En esta situación la empresa está interesada en establecer una forma ligera de gestión de proyectos que le permita:

  • Controlar el flujo de las actividades de desarrollo
  • Reducir los retrasos
  • Resolver los problemas de los proyectos a tiempo
  • Facilitar la colaboración entre los equipos funcionales dentro de un proyecto, así como las entre varios proyectos.

Kanban es un método apropiado para el contexto, sin embargo sé que la introducción del nombre de otro método puede confundir a la gente y algunos pueden ver la implementación de CMMI en riesgo (aunque yo controlo esto bien).

Por lo tanto, he sugerido aplicar algunos principios de Kanban como un medio para implementar las prácticas del área de proceso de Gestión Integrada de Proyectos de CMMI, relacionadas con la gestión del proyecto y la coordinación y colaboración entre las partes implicadas.

El tablero

Para empezar hemos diseñado los siguientes tableros para visualizar el flujo de trabajo de un proyecto individual

Tablero_Proyecto

y el estado del proyecto grande

Tablero_Portfolio_Interno

Las columnas tienen el siguiente significado:

  • Pendiente: Requisitos que están por empezar a trabajar en ellos
  • AF: Análisis Funcional
  • Code & Pru: Códificación y Pruebas
  • VAL: Validación. El equipo de Validación, en este caso, se dedica explícitamente a validar los desarrollos de todos los proyectos
  • En Prod: Requisitos que ya están implementados y subidos a producción
  • Hecho es una columna-colchón que se utiliza para recopilar los requisitos desarrollados antes de pasarlos a Validación o antes de subirlos a Producción.

En la columna izquierda presentamos:

  • <Nombre de proyecto>: <número de la iteración en curso>
  • Esfuerzo: <%Planificado> • <%Actual>
  • Fecha fin: <Planificada> • <Actual>

Las tarjetas amarillas representan Requisitos de Usuario. Las tarjetas moradas indican trabajos bloqueados por alguna razón. Las naranjas están reservadas para las peticiones de cambios a los requisitos. A nivel de proyecto individual hemos designado una fila especial para las peticiones de cambios a los requisitos con el fin de controlarlos mejor.

Límites de Trabajo-En-Curso (WIP: Work-In-Progress)

Con respecto a los límites WIP, los vamos a establecer paulatinamente. Empezamos con la simple política que una persona puede trabajar sobre una sola tarea en un proyecto. Por lo tanto los límites WIP de una columna se establecen en base al número de los miembros del equipo. En el tablero del proyecto grande los límites WIP están establecidos por columna y por proyecto.

Ventajas y temas abiertos

Vemos varias ventajas asociadas con esta solución inicial, así como algunos problemas pendientes a resolver. Resumiendo:

  • Ventajas:
    • Los Jefes de Proyectos y sus asistentes tendrán que dedicar mucho menos tiempo a la identificación del estado de proyecto y confección de los informes de seguimiento ya que la mayoría de la información está en el tablero.
    • La coordinación y colaboración en los proyectos son más enfocadas y requieren menos tiempo debido a la imagen completa del estado y las dependencias en el proyecto visualizadas en el tablero
    • Priorización de los requisitos de usuario: El principio actual usado a menudo es «el que más llora más requisitos implementados consigue». Nuestra intención es de vincular la priorización de los requisitos con la capacidad del equipo disponible y el valor que aportan al usuario.
  • Temas abiertos
    • Herramienta: El mantenimiento manual del tablero no se ve factible a largo plazo. Por lo tanto, tenemos que encontrar una herramienta Kanban que puede ser fácilmente integrada con el sistema de gestión de la empresa.
    • Planificación inicial del proyecto: La estimación del tiempo necesario para el proyecto, aplicando la Ley de Little, requiere estabilizar el flujo de trabajo y usar datos históricos de los tiempos de desarrollo de los requisitos. Todavía no estamos preparados para empezar con esta forma de planificación por tanto seguiremos con el método tradicional de estimación hasta que podamos incorporar métricas de Kanban.

Bueno, esto es lo que tenemos hasta ahora.

¿Cómo lo ves?

Deja tus comentarios abajo.

Artículos relacionados:

Los efectos de la variación

Variación es «el acto, proceso o resultado de variar» o «un cambio en la forma, posición, condición, o la cantidad de algo.» [Diccionario Merriam-Webster]

La variación es inherente a cualquier proceso. Cada día tardamos un tiempo diferente en ir a trabajar todos a pesar de que vamos por el mismo camino, y aproximadamente a la misma hora. La preparación de un informe habitual también toma tiempo diferente cada vez que lo hacemos. Dos desarrolladores a los que hemos pedido que implementen la misma funcionalidad sencilla y en el mismo entorno necesitarán tiempo diferente también.

La variación en nuestro rendimiento afecta el tiempo de finalización de los proyectos o los servicios, la calidad de los resultados, la organización interna de las actividades de un equipo, la carga de trabajo de las personas, etc. Estoy segura de que puedes añadir mucho más ejemplos a esta lista.

Es importante reconocer la naturaleza de la variación para poder abordarla correctamente.

Causas de variación

Las causas de la variación pueden ser diferentes:

  • Recursos: un error en una aplicación podría causar que un procedimiento rutinario tome más tiempo de lo habitual; los diferentes niveles de capacidad personal hacen que el tiempo de prestación de servicios varíe; pasar una tarea a otra persona suele alterar el tiempo y la calidad de la terminación del trabajo.
  • Unidad de procesamiento: la complejidad de una petición del cliente afecta al tiempo de desarrollo / respuesta; diferentes herramientas necesitan diferentes tiempos de instalación y configuración; diferentes defectos requieren diferentes tiempos y esfuerzo de corrección en función de sus características.
  • Otros factores: errores en el envío telemático de las declaraciones de renta ocurren en la ‘temporada’ de hacer las declaraciones de renta; la mayoría de las llamadas de soporte acerca impresoras se producen durante el horario de trabajo; un cambio o una falta de disponibilidad de un miembro del equipo afecta al rendimiento del equipo; el retraso en recibir alguna información o material afecta a la prestación del servicio; la tasa de llegada de llamadas telefónicas / incidentes impacta la calidad de la respuesta y la satisfacción del cliente.

Las personas, independientemente de si están implicadas en un proceso como una unidad de procesamiento (por ejemplo, paciente  o cliente) o como un recurso – actor, introducen una variación natural en el proceso , que es prácticamente imposible de evitar.

En el ámbito de los servicios el tiempo de respuesta y la previsibilidad son la clave para la satisfacción del cliente. Por lo tanto, es importante mantener la variación del proceso relativamente bajo e incluso reducirla para ser más competitivo.

Hablando de plazo de entrega, es interesante que el tiempo de espera suele ser el componente más grande del tiempo completo del servicio. Por ejemplo en un viaje desde Yerevan a Bilbao los vuelos toman sólo 52% del tiempo total del viaje, el resto es espera; en una visita al médico el tiempo de valor añadido es de unos 15 min ( la consulta en sí) dentro de unas 6 horas, digamos, entre pedir la cita y salir de la consulta, es decir un 96 % del tiempo es espera .

Haz un experimento tú mismo. Mide el tiempo efectivo de hacer algo (el tiempo que realmente trabajas en este), por ejemplo, corregir un error. Y mide el tiempo complete entre empezar y terminarlo. ¿Cuál es la relación entre las dos medidas?

Para comprender los efectos de la variación y cómo hacerse con ellos, echemos un vistazo a la siguiente imagen simplificada de tu organización:

Queuing System

Fig. 1 Sistema de colas (simplificado)

En este caso, representamos a tu organización como un sistema de colas: «los clientes llegan para un servicio determinado, esperan si el servicio no se puede iniciar de inmediato y se van después de ser servidos» o «el cliente pide la aplicación de un requisito, espera a que empiece su implementación y paga cuando se le entregue el requisito»

La fórmula de Sir John Kingman vincula los factores que determinan el tiempo que un cliente tendrá que esperar hasta que se procese su solicitud. Por eso a veces se llama la ley de los efectos de la variación. Dice lo siguiente:

Promedio de tiempo de espera = f (Variación de la llegada,
Utilización de los recursos, Tiempo efectivo del proceso)

Más precisamente, para un sistema de colas sencillo el tiempo medio de espera en la cola, depende de la variación en la llegada de peticiones, la utilización de recursos, y el tiempo de procesamiento de una petición.

Kingsman Law

Fig2. Dependencias entre el Tiempo de espera, la Utilización de recursos y la Variación de llegada

Efectos de la variación

Los dos efectos de la variación se pueden describir de la siguiente forma:

  • Mirando una curva sólo: Cuando la utilización de los recursos está cerca al 100 % un pequeño aumento en la carga de trabajo provoca un aumento exponencial del tiempo de terminación del trabajo.
  • Mirando dos curvas: Suponiendo que la utilización de los recursos es el la misma, cuanto mayor es la variación del proceso, más tiempo se tarda en completar un trabajo.

Lecciones prácticas para un gerente de proyecto o servicio

  • Cuanto mayor sea la utilización de los recursos, tanto más fuerte impacta la  variación el tiempo de completar un servicio o un trabajo. Si la utilización es baja (~ 50 % o menos) , la variación en la llegada de peticiones tendrá un pequeño impacto en el rendimiento. Algo muy importante para las organizaciones enfocadas en asegurar que sus recursos estén siempre ocupados.
  • En el desarrollo de software y los servicios TI las personas son el recurso principal. Por eso la utilización es fuertemente afectada por los errores que generan la demanda artificial o re-trabajo. Por lo tanto, la reducción de la utilización de recursos es más importante que la reducción de la variación del tiempo.
  • Cuanto mayor sea el tiempo promedio del proceso, tanto más tiempo las peticiones estarán en espera y, a consecuencia, tanto más larga será la  cola . Por lo tanto, la descomposición de un trabajo en partes más pequeñas que requieren menos tiempo para completarse, reduce el tiempo de procesamiento global. El desarrollo de varios servicios / tareas pequeños produce una menor variación que un desarrollo grande.

Dicho esto cómo reducir el tiempo de espera de una petición?

  • Reducción de la tasa de llegada incidentes/peticiones, por ejemplo mediante la mejora de la documentación del usuario, proporcionando un mejor soporte basado en la web, haciendo la interfaz de usuario más intuitiva, proporcionando formación, etc
  • Reduciendo el tiempo de servicio ( tiempo de procesamiento efectivo) mejorando la formación del personal técnico, la automatización del proceso , etc
  • Reduciendo la variabilidad del proceso mediante el análisis de los servicios de duración muy larga y la eliminación de las causas para esto, la introducción de políticas que faciliten la priorización y la ejecución de los servicios.
  • Cuanto más suave pase una petición a través del proceso (con menos paradas, re-arranques y los cuellos de botella), más corto es el tiempo de proceso y por lo tanto el tiempo de espera y la longitud de la cola . Por eso  la eliminación de los cuellos de botella y otros impedimentos en el flujo de trabajo reduce el tiempo de espera así como y el tiempo total de procesamiento.
  • La reutilización reduce la variabilidad en el tiempo de finalización de un trabajo. Por lo tanto, siempre que sea posible y tiene sentido ha de reutilizar conocimientos y resultados de trabajo. He dicho «tiene sentido». Hace tiempo estaba trabajando con una empresa que admitía que estaban sufriendo el virus HAS (Hasta Agotar el Stock). Reutilizaban componentes de hardware antiguos hasta agotar el stock y esto les causaba un alto coste de corrección de defectos.

La variabilidad no necesariamente es mala. Lograr una alta previsibilidad y nivel de servicio es importante, sin embargo repetir siempre los mismos resultados también significa que no se crea nada nuevo. No es por casualidad que Henry Ford dijo:

» Si hubiera preguntado a la gente qué querían, me habrían dicho caballos más rápidos.»

Si Apple sólo estaban haciendo su trabajo habitual, tampoco habrían llegado al iPhone.

Más sobre el lado positivo de la variabilidad vendrá en otro post.

Artículos relacionados:

Referencias

[1] Queueing Theory
[2] Wallace J. Hopp, Single Server Queueing Models
[4] Kingman’s formula
[5] N. Modig, P. Anström, This is Lean

Los principios de la gestión de proyectos que (casi) nadie enseña

Me dedico a la gestión de proyectos desde hace ya diecisiete años. He llevado a cabo proyectos de desarrollo de software para banca, para ingenieros civiles y para gestión documental.

He aplicado las prácticas deProjectMgmt_Sp

  • Rational Unified Process (RUP)
  • Método de Valor Ganado
  • PMBoK
  • CMMI™
  • Gestión de proyecto ágil (basada en Scrum)

Aunque siempre estaba tratando de aplicar correctamente los métodos, identificar y abordar los riesgos adecuadamente, hablar con el equipo a diario (la comunicación nunca ha sido un problema en nuestros proyectos), comunicar con el cliente a menudo, he sufrido los problemas de:

  • Estimaciones inexactas
  • Tener que trabajar largas horas y los fines de semana para cumplir fechas
  • “Todo es urgente” y se tiene que implementar en la iteración en curso
  • Tener que parar todo el proyecto para corregir un error en el diseño de la arquitectura
  • Subir a producción sin haber hecho todas las pruebas por falta de tiempo.
  • No saber cómo exactamente actuar para eliminar una desviación de plazo o de presupuesto y volver el proyecto a lo estimado

Hasta que aprendí Kanban y asistí al curso Kanban Coaching Professional con David Anderson, ninguno de los métodos me había enseñado que para que fuese bien el trabajo en los proyectos tenía que enfocarme también en lo siguiente:

  • Asegurar un flujo de trabajo suave
  • Aplicar la Ley de Little para equilibrar la demanda de trabajo y la capacidad del equipo
  • Resolver los cuellos de botella para mejorar el flujo de trabajo
  • Conocer la variación de los procesos y los efectos de esta.
  • Hoy me pregunto ¿por qué nadie me enseñó esto antes?

Si tuviera estos conocimientos antes, mis proyectos hubieran ido mucho más suave…

En fin, la máquina del tiempo todavía existe sólo en las películas.

De todos modos, si eres Jefe de proyecto, Team leader o Scrum Master, cuando tengas un rato, échales un vistazo a estos temas. Te ahorrarán algún que otro fuego.

Artículos relacionados:

La comunicación y la visibilidad – las vitaminas para las empresas TIC

Este mes tuve un servicio interesante para el departamento TI de un banco. Digo interesante porque me contactaron para visitarles,ver cómo llevaban a cabo y gestionaban sus proyectos y decirles cómo les veía. Nada de problemas que quieren resolver, objetivos que están buscando, mejoras que les gustaría introducir o método que aplicar. Simplemente venirver – y darnos tu opinión.

Fui con una buena dosis de curiosidad y también con algo de preocupación porque no sabía con qué me iba a encontrar ahí.

El contexto

Para entender el contexto les pedí tanto al equipo de desarrollo de software como al de los usuarios que me describiesen su flujo de trabajo asó como todas las dificultades que tenían en su día a día (un problema por post-it).

En resumen la situación actual se puede dibujar así:

WorkflowAndPains Sp

Los dolores que necesitan una cura urgente según la priorización de ambos equipos son los siguientes:

  1. Pobres requisitos de los usuarios (definidos a nivel de idea)
  2. Insuficiente análisis de negocio
  3. Problemas con las estimaciones de las tareas – los usuarios no entienden qué hacen los desarrolladores tanto tiempo; existe presión por reducir las estimaciones; luego aparecen los problemas de no cumplirlas
  4. Frecuentes cambios de prioridades
  5. Alta carga de trabajo e incapacidad por parte del equipo de desarrollo de responder rápidamente a las peticiones de los usuarios.
  6. Falta de gestión de riesgos

El análisis de los problemas se puede resumir así, leyendo el árbol desde abajo hacia arriba.

Pains Analysis

Se buscan “quick wins”, es decir soluciones que lleven a resultados positivos en corto plazo.

¿Qué vitaminas les receto para que noten mejoría en poco tiempo?

Definir un método de estimación vendría bien,  establecer criterios y reglas de gestión de los cambios a los requisitos y de los riesgos también, pero todo esto requiere su tiempo y esfuerzo. Además, después hay que asegurarse que se acepte bien por las personas en ambos equipos – los usuarios y los desarrolladores.

Escuchando a los dolores y los miedos de los dos lados la siguiente imagen apareció en mi mente:

CommunicationProblems Sp

En el fondo de todo está el problema del mapeo (el encaje) entre los requisitos de los usuarios, en su idioma de negocio, y  el trabajo del equipo de desarrollo, con todos sus aspectos creativos y técnicos.

La comunicación y la visibilidad compartida en el trabajo son
las vitaminas para las empresas TIC.

Ninguna tecnología o método formal dará resultados positivos en corto tiempo, si falla la comunicación entre las personas y falta visibilidad en el trabajo que se está llevando a cabo.

Verifiqué esta idea con el equipo y juntos llegamos a los siguientes dos elementos de la solución “quick win”:

  • Trabajar en equipos multidisciplinares

MultidisciplinaryTeam Sp

  • Usar a un tablero kanban compartido para tener visibilidad en el trabajo en curso y facilitar su entendimiento y gestión.

Draft Kanban Board

Ahora volvamos a los dolores que necesitan una cura urgente. Todos estarán positivamente afectados de esta solución sencilla ¿verdad?

Por lo menos en esto estamos convencidos el equipo de la organización y yo.

¿Qué tal lo ves tú?

Si crees que esta experiencia puede servir a algún amigo tuyo, re-envíale el mensaje. Te devolverá el gesto en otro momento importante para tí.

Artículos relacionados: