Ene 26 2013

Agile. Principios Básicos Aplicados a Proyectos en Entornos Productivos. A3

Como ya sabemos, Agile son una serie de principios que fueron creados para la construcción de software en proyectos, y que debido a sus características de uso podemos aplicar fácilmente a cualquier otro proyecto por diferente que sea, en cualquiera de los ámbitos de la industria o la organización como por ejemplo,  producción, compras, calidad, etc.

La idea es someter cualquier proyecto o trabajo a la metodología Agile para en resumidas cuentas generar valor a la organización. Para ello, tenemos que definir algunos conceptos que nos ayudaran a entender su funcionamiento:

Clientes: A menudo, tenemos la costumbre de pensar que el cliente es la entidad o persona que nos compra productos o servicios, pero cuando pensamos en un entorno ágil, no tenemos más remedio que pensar en que podemos encontrarnos con dos tipos de clientes diferentes (externos e internos). Un cliente externo es aquella persona o entidad que se situa fuera de la organización y de los que solemos recibir pedidos y otro tipo de requerimientos, mientras los clientes Internos es todo aquel personal de dentro de la organización y que tienen algún requerimiento que debemos cumplir. Desde el punto de vista Agil, nuestro cliente interno podría ser cualquier persona de dentro de la organización para la cual estamos trabajando, por ejemplo, un compañero al que le estamos preparando un informe, una persona de ventas al que le tenemos que dar un plazo de entrega, un director de operaciones al cual le hemos de entregar un proyecto logístico, etc.

Equipo de entrega o proveedor: En este caso nos estamos refiriendo a la persona/s que deben cumplir con los requerimientos que nos ha establecido el cliente. En ocasiones puede ser una persona individual y en otras ocasiones puede ser un grupo de personas que formen un equipo de trabajo destinado a cumplir con una serie de requisitos establecidos o un proyecto de algún tipo.

El siguiente conjunto de 12 principios representan las características o rasgos inherentes a un proceso ágil:

  1. Nuestra mayor prioridad es satisfacer al cliente mediante la entrega rápida, temprana y continua de trabajo . Por obvio que este principio pueda parecer, a menudo se violan en el desarrollo de un proyecto tradicional. Es importante recordar que los clientes están pidiendo que entreguemos trabajo, lo antes posible y sobretodo que lo entregado aporte valor añadido, ya que seguro que lo que ellos no quieren son prototipos, papeleo, burocracia, o procesos a medio terminar. Cuanto antes se pueda empezar a entregar al cliente el trabajo solicitado para el cual está destinado el proyecto, más pronto empezaremos a notar la satisfacción de este.
  2. Sean bienvenido los cambios en los requisitos, incluso cuando lleguen tarde en el desarrollo del trabajo. Los procesos Agile aprovechan los cambios con el objetivo de poder generar ventaja competitiva para el cliente. Nuestros clientes están compitiendo en un mercado dinámico, y por lo tanto es posible que tengan que cambiar los requisitos para su trabajo con el fin de obtener una ventaja competitiva. Es importante tener en cuenta que debemos acoger nuevas necesidades y adaptarnos rápidamente para obtener sus ventajas.
  3. Durante el desarrollo de un trabajo debemos entregar parte de mismo con frecuencia, con preferencia usando escalas de tiempo cortas. ¿Alguna vez hemos mostrado nuestro trabajo al cliente por primera vez, y no hemos recibido ningún tipo de comentario, o feedback al respecto? En la mayoría de los casos, lo normal es recibir retroalimentación. A veces en menor medida, pero por lo general siempre es importante y bienvenida. El truco consiste en entregar trabajo de forma temprana para que podamos obtener retroalimentación temprana. Esta retroalimentación temprana nos puede ahorrar el trabajo de volver a recorrer el mismo camino otra vez por falta de comunicación entre cliente y proveedor.
  4. Los clientes (Internos o externos) y los miembros del equipo de entrega (quien hace el trabajo) deben trabajar juntos diariamente a lo largo del proyecto. En la mayoría de los casos, no sería práctico trabajar con el cliente en una base diaria, pero generalmente suele haber otro tipo de gente que puede estar representándolo. Estos representantes no pueden saberlo todo acerca de los deseos del cliente y sus necesidades, pero por lo general saben más acerca de las necesidades del negocio que los propios miembros del equipo de entrega o las personas que ejecutan el trabajo. Estos representantes pueden ser analistas, responsables de producto, directores de programas, responsables de cuenta, directores de producción,  directores de operaciones, etc. La clave es mantener una constante comunicación entre los miembros del equipo de entrega y la gente del cliente, para asegurar que el proyecto o el trabajo nunca se apaga, ni siquiera por un día.
  5. Debemos construir proyectos en torno a personas motivadas. Debemos darles el entorno y el apoyo que necesitan y confiar en ellos para hacer el trabajo. Recordemos que la gente no son recursos con un número. Los equipos del proyecto o miembros del equipo de entrega, tienen que estar motivados y con confianza. Si hemos tenido la visión de motivar a los miembros del equipo, estos van a encontrar una manera de dar lo mejor de ellos y esto es justamente lo que un proceso ágil necesita, lo mejor de todos y cada uno de nosotros.
  6. El método más eficiente y eficaz de la transmisión de información hacia el equipo y dentro de este, es la conversación cara a cara. El email o el teléfono nunca debe sustituir la comunicación cara a cara. Una gran cantidad de contexto se pierde en la comunicación a través de un correo electrónico por ejemplo, por no mencionar el hecho del aumento de la ambigüedad durante la comunicación no verbal. La comunicación cara a cara también nos permite ejecutar la documentación de manera menos formal.
  7. El trabajo terminado es la principal medida de progreso. Recordemos que el cliente es el principal interesado en tener parte del trabajo resuelto y en su casa. Así que ¿por qué debemos medir el progreso en términos de algo diferente? Hoy en día, el progreso de la mayoría de los esfuerzos de desarrollo de un trabajo se mide en términos de su plan. Cuando se hayan completado los requisitos, los directivos consideran que el proyecto está el 30 por ciento completo por ejemplo. En un mundo impulsado por los planes, esto puede ser correcto, pero en un mundo basado en valores, donde el valor es el trabajo terminado, el proyecto está completo en el 30 por ciento cuando el 30 por ciento de la funcionalidad requerida o de trabajo terminado, está integrado, probado, desplegado y sobretodo implementado. Esta es una diferencia fundamental entre los valores tradicionales y el contexto ágil.
  8. Los procesos ágiles promueven el desarrollo sostenible. Los equipos de trabajo, clientes y usuarios deben ser capaces de mantener un ritmo constante de forma indefinida. En el desarrollo tradicional, el equipo suele tener que trabajar hasta tarde cuando llega al final de un proyecto, aunque al principio del proyecto hubieran habido pausas de 2 horas. Esto se debe principalmente a la forma en que las actividades de un proyecto se distribuyen a través del ciclo de vida de todo el proyecto. A veces resulta que no hay mucho que hacer durante el inicio del proyecto, pero al final todo se complica a causa de los plazos de entrega ajustados y las prisas. El modelo ágil demanda entregas de trabajo cada dos semanas más o menos, y el desarrollo comienza con la primera iteración. Los esfuerzos se distribuyen más coherentemente a lo largo todo el ciclo de vida del proyecto, que conduce a un ritmo de desarrollo constante para el equipo.
  9. La atención continua con la excelencia técnica y el buen diseño mejora la agilidad. Un deportista necesita estar entrenado utilizando las mejores técnicas que le entreguen el punto de forma necesario para lo que necesita hacer en el momento que lo necesita hacer. Del mismo modo, la excelencia técnica es un facilitador fundamental para un proceso de desarrollo del trabajo de forma verdaderamente ágil. Hemos de ser capaces de encontrar la ventaja técnica necesaria para que sea mucho más fácil construir el producto de una manera evolutiva. La integración continua es esencial si se quieren tener la certeza de que el trabajo está funcionando después de cada cambio.
  10. Simplicidad, o el arte de maximizar la cantidad de trabajo no realizado, es esencial. La clave es la simplicidad: tratar de no desarrollar todo aquello que no es esencial para las funciones que estamos implementando en estos momentos. Solo desarrollamos lo que completa los requisitos principales establecidos por el cliente en cada iteración. Recordemos, que cuanto más tiempo se invierte en algo, más nos quedaremos enganchados a ello. Esta unión hace que luego sea más difícil aceptar el hecho de que no se necesita algo y que necesitamos cambiarlo.
  11. Las mejores arquitecturas, requisitos y diseños emergen de equipos auto-organizados. En el desarrollo del trabajo  tradicional, los clientes escriben requisitos, y los equipos de trabajo diseñan y completan el trabajo del sistema. A continuación, los requisitos y las arquitecturas son comunicados al equipo en un documento. En el mundo Agil, la verdadera auto-organización consiste en dar a todo el equipo la tarea y pedirles que, como equipo, completen la tarea sin especificar quién debe hacer qué. Esto ocurrirá naturalmente y todo el mundo será libre de cuestionar y sugerir nuevas ideas que puedan mejorar el proyecto o la forma de implementar los requisitos del cliente. Esta forma de colaboración también aumenta la transferencia de conocimiento dentro del equipo.
  12. A intervalos regulares, el equipo reflexiona sobre cómo ser más eficaz, y ajusta su conducta en consecuencia. Este es probablemente el principio más importante para ser ágil. La idea de estar siempre reflexionando sobre lo que se está haciendo y tratando de encontrar mejores formas de hacer las cosas es la esencia de la mejora continua. Sin la mejora continua, la gente y las organizaciones se mantienen en un status quo inerte. Si adoptamos una sola cosa que sirva para hacer un proceso mejor, regularmente se refleja en nuestro proceso como equipo. Es necesario identificar lo que estamos haciendo bien y seguir haciéndolo, y hay que identificar lo que estamos haciendo mal y mejorarlo. Aprender del error es básico en el día a día.

Enlace permanente a este artículo: http://javiersole.com/?p=2418