Desarrollo de Software con Valores Humanos potenciados por Kanban

Desarrollo de Software con Valores Humanos potenciados por Kanban

por

Carlos Churba @carloschurba

Ricardo Colusso @rcolusso



Abstract

El desarrollo de software de calidad es una actividad humana compleja. Los cambios en la tecnología, los desafìos en la comunicación, la dificultad en definir el alcance y los requerimientos de los sistemas, y la “intangibilidad” propia de los productos de software combinados potencian la complejidad de los proyectos. Podemos utilizar Kanban, que es uno de los métodos ágiles de gestión de proyectos más populares para reducir esta complejidad y que nuestros proyectos sean más predecibles. Muchos artículos, papers y libros confirman los beneficios directos obtenidos utilizando Kanban: la reducción del trabajo en proceso y los equipos que entran en estado de flujo permiten reducir complejidad, aumentar predictibilidad y reducir riesgos.

Pero hay poca investigación y material disponible sobre cómo Kanban potencia los valores humanos de las personas que participan en esos proyectos. En este artículo se analizan 2 casos donde se explica como Kanban resultó ser una herramienta poderosa para estimular valores tales como la Creatividad, la Responsabilidad y la Integridad durante el desarrollo de proyectos de desarrollo de software.



Desarrollo de software con valores humanos potenciados por Kanban



El objetivo de este trabajo es compartir nuestra experiencia en proyectos de desarrollo de software donde la utilización del método ágil de gestión de proyectos Kanban potenció en forma directa los valores humanos de los equipos y personas participantes.



Introducción

La utilización de métodos ágiles en el desarrollo de software ha sido uno de los principales avances de la industria en la última década. Luego de la publicación del Manifiesto Ágil en 2001 los profesionales entusiastas de la Agilidad descubrieron que la combinación de prácticas ágiles combinada con principios y herramientas de Justo a Tiempo y Lean Manufacturing contribuían a mejorar la calidad del software, los equipos que funcionaban “en flujo”, las fechas de finalización se cumplían, las personas trabajaban más motivadas y el nivel de productividad era sostenible en el tiempo.

Mary y Tom Poppendiek han sido pioneros en la aplicar a proyectos de software los conceptos Lean que ya utilizaban las empresas de manufactura (1) En cuanto a Kanban, se trata de una herramienta simple y muy poderosa para gestionar proyectos, cono indica Jeff Patton:

“el desarrollo Kanban ocurre alrededor de un tablero visual que utilizamos para gerenciar el trabajo en proceso ( . . . ) La idea primaria es contar con historias de usuario ubicadas en la zona izquierda del tablero y que se mueven a través del tablero pasando por las etapas necesarias del desarrollo para que sean consideradas como “terminadas”. Las historias terminadas y listas para entrar en producción se acumulan al final. (...) limitamos la cantidad de trabajo en proceso, o sea que limitaros la cantidad de historias que puede haber en el tablero. Los números escritos sobre el limite inferior es el límite de cantidad de historias permitidas en cada fase” (2)



Valores Humanos

Valor es algo que nos es valioso, nos moviliza y se hace realidad en la medida en que lo concretamos en actos. Los valores deben ser encarnados por las personas.

Hacemos algo porque en ese hacer hay involucrado un valor. El valor empuja, impulsa. Los valores se trasladan desde nuestra mente a las tareas y a las personas con las que trabajamos. Se aprecian por la educación, se transmiten por lo que cultivamos y crean la cultura de las organizaciones reflejando el modo de vida y de trabajo como un todo.

Cuando el objetivo compartido por los integrantes de una organización o equipo es el desarrollo de software de calidad, vemos que la complejidad de los proyectos no puede manejarse y reducirse en forma sustentable sin recurrir al trabajo en equipo guiado por valores humanos tales como la creatividad, la responsabilidad, el espíritu de equipo, el respeto y la integridad, con las conductas que concretan, en el trabajo cotidiano, dichos valores.

A continuación analizaremos cómo la aplicación de Kanban ha permitido potenciar los valores humanos de equipos y personas en dos proyectos de desarrollo de software en Huddle Group (3).



Caso 1: Agilidad y reducción de la incertidumbre frente al Kanban

El primer proyecto para la nueva división de Huddle Group llegó antes de lo esperado: un requerimiento interno del departamento de Finanzas tomó al equipo por sorpresa. La funcionalidad requerida estaba definida con precisión, así también como la fecha de finalización y la plataforma de desarrollo: un ERP (Enterprise Resource Planning) recientemente lanzado al mercado. El equipo tenía la opción de no tomar este proyecto interno debido a que aún no había terminado con su entrenamiento, pero eso implicaba que la empresa tendría que contratar a desarrolladores de software externos. Adicionalmente la fecha de finalización del proyecto no podía cambiarse ya que coincidía con la auditoría externa anual a la empresa. Por lo tanto el equipo decidió aceptar el desafío.

Los integrantes del equipo, experimentados en la utilización del método ágil Scrum, tuvieron su primera reunión de planificación de Sprint 1, y les resultó muy difícil realizar estimaciones ya que les faltaba conocimiento de la plataforma de desarrollo en la que debían trabajar. Por lo cual pensaron en dos estrategias alternativas para avanzar con el proyecto:

a) Utilizar el primer mes (2 sprints) para completar su entrenamiento y luego el segundo mes para realizar el desarrollo requerido

b) Comenzar a trabajar inmediatamente, priorizando los requerimientos junto con el departamento de Finanzas y agregando los ítems de capacitación y exploración a medida que fuesen necesarios.



Todos los integrantes del equipo consideraron la opción a) como muy riesgosa y votaron por la opción b), definiendo la utilizando Kanban.

A poco de iniciado el proyecto ocurrió que la reducción del trabajo en proceso bajó el nivel de ansiedad y mejoró la concentración de todo el equipo en las tareas más valiosas de cada momento. Además sólo se realizaron demostraciones de nuevas funcionalidades y se pidió feedback a los usuarios cuando fue necesario, sin forzar fechas ni tiempos de antemano. Todo esto permitió al equipo entrar “en flujo” y cumplir con el objetivo con una alta satisfacción de los usuarios y el equipo de desarrollo de la aplicación.



En lo que antecede podemos apreciar en forma clara la íntima conexión entre una forma de trabajo y la repercusión en las personas que la utilizan.

Vamos a continuación a relacionar algunos de los logros de este equipo con ciertos valores humanos.



Espíritu de equipo

Ser miembro de un equipo requiere además de la inteligencia y más allá de las competencias específicas, disponer de la actitud de participar en la consecución de objetivos compartidos para el logro de un proyecto en el que participan distintos actores. Cultivar una cultura donde predomine una visión compartida para la obtención de resultados deseados, tanto en lo técnico como en lo vincular, permite la creación de valores positivos que se transmiten a todos los integrantes de un equipo facilitando un tipo de liderazgo fecundo y compartido.

Cada miembro siente entonces el orgullo y la satisfacción de integrar un colectivo sabiendo cuales son los principios básicos y los objetivos que deben ser cumplidos para impulsar el rendimiento mediante la responsabilidad compartida en los resultados y efectividad del equipo.



Comunicación

Los proyectos son conversaciones con propósito por lo que establecer canales de comunicación pautados permite dar respuestas flexibles a los cambios a medida que aparecen. “Ante la complejidad de los proyectos de desarrollo de software y la diversidad de objetivos específicos de los diversos actores de un proyecto se requiere de un entorno de colaboración y diálogo con valores humanos” (4). De esta forma se mejora la comunicación y se facilita la búsqueda de sinergias entre las necesidades, objetivos e intereses específicos de gerentes, grupos de desarrollo, usuarios y personal de IT.

En este caso desde el comienzo del proyecto y cada día el equipo se reunía 20 minutos frente al Kanban, compartiendo conocimiento, haciendo explícitos los impedimentos, y creando nuevos ítems de exploración y entrenamiento a medida que eran necesarios para poder seguir avanzando en el desarrollo e implementación de las historias de usuario. En los casos en los que compartir aprendizaje requería más tiempo, se organizaban reuniones rápidas de entrenamiento y coaching en otros momentos de la jornada laboral.



Creatividad

En el caso anterior podemos apreciar como el equipo decidió aceptar el desafío.

Sabemos que aceptar desafíos requiere de coraje y el coraje es una de las características de las persona creadoras (5).

Además el equipo evaluó alternativas lo que implica la utilización del pensamiento divergente que es muy característico del pensamiento creativo.

Por lo anteriormente señalado resulta importante percibir como se puede estimular y facilitar el desarrollo de la creatividad de todos los integrantes de un equipo reconociendo que son las personas las generadoras de valor.



Caso 2: Implementación de nueva funcionalidad junto con Mantenimiento Correctivo

Un cliente del exterior solicitó los servicios de mantenimiento correctivo y adaptativo para sus aplicaciones del área de Marketing y Ventas, comenzando con la contratación de un equipo de cuatro personas y enviando una lista de 12 ítems con requerimientos detallados. Estos ítems fueron clasificados por el cliente como "Urgentes", "Importantes", y "Necesarios" para indicar su prioridad, con la aclaración de que en cualquier momento podrían llegar nuevos ítems para cada una de estas categorías –e incluyendo la posibilidad de que ocurriesen cambios de prioridad en los ítems existentes en forma dinámica.

Los cuatro integrantes del equipo, quienes ya conocían Kanban en teoría pero nunca lo habían aplicado en sus proyectos, notaron que se trataba de un proyecto complejo debido a que cualquier planificación podría quedar obsoleta ante los cambios en las prioridades y los nuevos requerimientos que el cliente podrá agregar en cualquier momento.



En la reunión para decidir si adoptarían o no Kanban, el equipo consideró las posibles reacciones del cliente en caso de proponerle esta metodología de trabajo. La preocupación estuvo específicamente asociada a cuál sería su reacción ante la propuesta de que el equipo limitase su trabajo en proceso, ya que en general los clientes suelen ser bastante ansiosos al principio de los proyectos cuando todavía no conocen la productividad de un equipo que trabaja desde un país distante.

Se evaluó también la posibilidad de utilizar Scrum como una forma de limitar la cantidad de ítems durante cada Sprint, pero lo descartaron ya que implicaba asumir que requerimientos nuevos y urgentes recibidos en medio de un Sprint deberían siempre esperar hasta el siguiente Sprint.

Finalmente pensaron en las ventajas de utilizar Kanban: podrían limitar el trabajo en proceso dependiendo de la urgencia del requerimiento, y utilizando una herramienta electrónica darían al cliente una clara visibilidad del trabajo actual y lo que se haría luego de terminarlo --reforzando esa visibilidad a través de una reunión diaria breve con el cliente utilizando webcams.



En cuanto a la limitación del trabajo en proceso, propondrían al cliente un máximo de 6 ítems en proceso como máximo, siendo los máximos para cada prioridad:

- nunca más de 3 ítems Urgentes en proceso

- nunca más de 2 ítems Importantes en proceso

- nunca más de 1 ítem Necesario en proceso

Luego de una reunión remota donde el equipo mencionó las ventajas de adoptar Kanban, el cliente decidió aceptar la propuesta indicando que valoraba la posibilidad de tener visibilidad de lo estaría ocurriendo en cada momento, además de poder gestionar los ítems y prioridades en forma dinámica. Además le pareció que cualquier problema en la aplicación de Kanban podría ser detectado y resuelto a tiempo a través de las reuniones diarias.



Luego de un mes de trabajo realizamos una retrospectiva con el equipo y la participación del cliente, con el siguiente resultado:





Mantener

eventos, prácticas y hábitos que funcionaron y por lo tanto debemos continuar y reafirmar Cambiar/Mejorar

todo lo que no funcionó bien y debemos mejorar



- El equipo reaccionó rápidamente en momentos críticos donde aparecieron nuevos requerimientos urgentes, sin dejar de avanzar con ítems que tenían otras prioridades

- En momentos tranquilos donde no aparecieron nuevos ítems urgentes, se pudieron realizar muchas tareas "Necesarias" que el equipo anterior (dentro de la empresa) llevaba postergadas por varios meses.

- Fue muy claro y predecible para el cliente lo que se hacía en cada momento y lo que se realizaría después.

- Los integrantes del equipo valoran la posibilidad de tener un trabajo variado de corrección de errores con creación de nueva funcionalidad.

- El cliente faltó a algunas reuniones de la primera semana

Solución/Mejora acordada: el cliente explica los motivos, y a partir de ahora designará a un reemplazante para los casos en que no pueda asistir. Este reemplazo conocerá el estado diario del Kanban y podrá tomar decisiones en cuanto a prioridades y remoción de impedimentos.



- Algunos ítems requirieron mucho tiempo de análisis y no quedaba claro cuándo moverlos al estado de "Terminados" --lo cual complicó el flujo de trabajo. Esto ocurrió para ítems con prioridad "Importante" y "Necesario"

Solución/Mejor acordada: realizar una reunión semanal con el cliente para analizar los nuevos requerimientos "Importantes" y "Necesarios" y detectar cuáles deben reformularse.







En este segundo caso podemos apreciar la importancia de la puesta en juego de otros valores humanos que operan como guía para alcanzar por un lado respuestas exitosas ante desarrollos de software de calidad, y por el otro repercutir favorablemente en la relación que se establece entre los diferentes actores que intervienen a lo largo del proceso.





A continuación vamos a relacionar algunos de los logros con ciertos valores humanos como hemos realizado con el caso 1.



Empatía

Ante la demanda de un cliente del exterior que requiere servicios de mantenimiento correctivo y adaptativo para sus aplicaciones del área de Marketing el equipo debe tomar una decisión para elegir entre las diferentes alternativas teniendo en cuenta las expectativas del cliente y su posible desconfianza debido al desconocimiento de la productividad del equipo y al realizarse el trabajo desde otro país.

Decisión compleja en virtud de posibles cambios que plantee el cliente en cuanto a los requerimientos y las prioridades.

La propuesta de utilizar Kanban le permite al equipo limitar el trabajo en proceso dependiendo de la urgencia del requerimiento por un lado y por el otro empatizar con el cliente al ofrecerle una clara visibilidad del trabajo en proceso utilizando webcams en reuniones diarias que reducen riesgos.



Honestidad y transparencia

El equipo decide hacer participar al cliente en la reunión retrospectiva promoviendo un ambiente abierto donde se comparten éxitos y necesidades, estimulando la mejora continua y demostrando la honestidad en la capacidad de reconocer errores.



Responsabilidad

El equipo respondió con responsabilidad al compromiso asumido.

Si nos preguntamos qué significa ser responsable podemos decir que es dar respuestas acordes con nuestros principios y compromisos.

Responder es lo que constituye el fundamento de la conducta valorativa.

Responsabilidad es responder con eficacia ante el compromiso que implica el realizar las tareas técnicas acordadas para el desarrollo de un proyecto como así también tener presente las necesidades de la dimensión humana de todos los participantes en el trabajo.





Coraje

El equipo detectó que Scrum no era la forma de trabajo que les permitiría agregar el máximo valor posible al cliente decidiendo con el coraje que se necesita en esta circunstancia proponer aplicar Kanban a pesar de que Scrum era la forma aceptada de trabajo tanto en la empresa como por el cliente.



Integridad

La integridad es un valor que consiste en hacer aquello que uno se ha comprometido a realizar.

Es un valor muy importante para tener confianza en los demás miembros del equipo y proporcionar resultados fiables tanto en el interior del grupo como así también con el trabajo conjunto con el cliente.

En este caso cuando algunos de los integrantes del equipo se bloqueaban ante la incertidumbre motivada por los cambios en el desarrollo eran asistidos por sus compañeros lográndose de esta manera superar el impedimento y afirmar realmente el trabajo en equipo aumentando la confianza en el trabajo compartido.

En conclusión podemos verificar cómo los valores se trasladan desde nuestra mente a las tareas y encarnándose en las personas con las que trabajamos y se hace realidad en la medida en que se convierten en actos que repercuten favorablemente en logros para todo el equipo. Recordar que hacemos algo porque en ese hacer hay involucrado un valor y son los valores los que nos motivan e impulsan a mejorar y aprender en forma continua.





Conclusión



Los procesos y herramientas que guían a nuestros procesos tienen un efecto muy importante no sólo en los resultados obtenidos, sino también en todas las personas que participan en los proyectos.

Seleccionar y conocer a fondo métodos ágiles para nuestros proyectos, junto con una visión guiada por Valores Humanos en nuestras organizaciones permite alcanzar altos niveles de productividad y motivación sostenible en el desarrollo de software.



Autores

Carlos Churba es Psicólogo y Arquitecto, titular de la Cátedra de Creatividad e Innovación de la Universidad de Belgrano (Buenos Aires, Argentina), Investigador, Disertante y Especialista en cómo potenciar la Creatividad e Innovación en equipos y personas.

Ricardo Colusso es Analista de Sistemas, Master en Negocios Internacionales, profesor de la Cátedra de  Creatividad e Innovación en la Universidad de Belgrano (Buenos Aires, Argentina), Gerente de Proyectos Agiles de Huddle Group y Consultor/Trainer en  metodologías ágiles.





Referencias:





(1) Lean Software Development: An Agile Toolkit, publicado en 2003, por Mary and Tom Poppendieck



(2) Jeff Patton´s Agile Product Design blog http://www.agileproductdesign.com/blog/2009/kanban_over_simplified.html



(3) Huddle Group, http://www.huddle.com.ar



(4) Ver http://crealogar.blogspot.com



(5) Churba, Carlos. La Creatividad. Buenos Aires (2007). Editorial Dunken.