En un mundo globalizado como el actual, en el que competimos con multitud de empresas situadas en diferentes continentes y siendo los recursos limitados (tanto materiales como económicos) las empresas tienen que reaccionar de una manera rápida a los nuevos retos y situaciones que se plantean con el objetivo de ser lo más competitivas posibles. En este sentido, parte de la responsabilidad recae en los departamentos de IT, que deben acompañar y ayudar al resto de áreas de la empresa a conseguir estos objetivos.
Ante esta situación en los últimos años han comenzado a aparecer en España nuevos conceptos que pretenden alinear la forma en la que se realiza el desarrollo de software con estos objetivos. Términos como metodologías ágiles, Scrum, o Kanban se han hecho hueco en el vocabulario de los directivos de las empresas y departamentos de IT. En este artículo vamos a tratar de explicar cuáles son los conceptos en los que se apoyan este tipo de metodologías y cuáles son los beneficios que aportan a la empresa, sin entrar en las características concretas de cómo un marco de trabajo en particular lo lleva a la práctica.
Conceptos
Las metodologías ágiles, en sus diferentes implementaciones, tienen una serie de características que son compartidas y que forman parte de su filosofía. Cada una de ellas, hace hincapié en aspectos diferentes a la hora de definir su marco de trabajo. Dichas características están claramente recogidas en lo que se conoce como manifiesto ágil. En él, se expresan los valores por los que se rige una forma diferente de entender el modo en el que las empresas de desarrollo de software construyen su producto, así como las relaciones tanto internas (desarrolladores, gerentes, dirección) como externas (clientes, usuarios).
Manifiesto por el Desarrollo Ágil de Software
Estamos descubriendo formas mejores de desarrollar software tanto por nuestra propia experiencia como ayudando a terceros. A través de este trabajo hemos aprendido a valorar:
- Individuos e iteraciones sobre procesos y herramientas
- Software funcionando sobre documentación extensiva
- Colaboración con el cliente sobre negociación contractual
- Respuesta ante el cambio sobre seguir un plan
Esto significa que, aunque valoramos los elementos de la derecha, valoramos más los de la izquierda. Por ejemplo, la colaboración con el cliente es una característica fundamental, pero esto no quiere decir que no haya que establecer relaciones contractuales cliente-proveedor.
Además, el manifiesto se apoya en doce principios que marcan las directrices principales que utilizan las diferentes metodologías para desarrollar su marco de trabajo. Estos principios son los que explicaremos en el próximo punto.
Principios del Manifiesto Ágil
Seguimos estos principios:
- Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana y continua de software con valor.
- Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo. Los procesos Ágiles aprovechan el cambio para proporcionar ventaja competitiva al cliente.
- Entregamos software funcional frecuentemente, entre dos semanas y dos meses, con preferencia al periodo de tiempo más corto posible.
- Los responsables de negocio y los desarrolladores trabajamos juntos de forma cotidiana durante todo el proyecto.
- Los proyectos se desarrollan en torno a individuos motivados. Hay que darles el entorno y el apoyo que necesitan, y confiarles la ejecución del trabajo.
- El método más eficiente y efectivo de comunicar información al equipo de desarrollo y entre sus miembros es la conversación cara a cara.
- El software funcionando es la medida principal de progreso.
- Los procesos Ágiles promueven el desarrollo sostenible. Los promotores, desarrolladores y usuarios debemos ser capaces de mantener un ritmo constante de forma indefinida.
- La atención continua a la excelencia técnica y al buen diseño mejora la Agilidad.
- La simplicidad, o el arte de maximizar la cantidad de trabajo no realizado, es esencial.
- Las mejores arquitecturas, requisitos y diseño emergen de equipos auto-organizados.
- A intervalos regulares el equipo reflexiona sobre cómo ser más efectivo para a continuación ajustar y perfeccionar su comportamiento en consecuencia.
Si nos fijamos bien, veremos cómo las diferentes implementaciones de metodologías ágiles (Scrum, Kanban, Extreme Programing, Adaptative Software Development, Feature Driven Development, etc.) recogen cada uno de estos principios como parte de su propia manera de entender el desarrollo de software. Si bien, existen diferencias en las técnicas y procedimientos utilizados para llevarlos a cabo.
Estos principios tienen implicaciones a diferentes niveles dentro de la empresa y no sólo en los equipos de desarrollo. Entre otros se pueden destacar:
- A nivel de organización los responsables de negocio tienen que trabajar codo con codo con los desarrolladores, mejorando de esta manera la comunicación.
- Además, hay que dotar a los equipos de un alto grado de autonomía, siendo capaces de autogestionarse, para poder extraer lo mejor de cada uno de ellos.
- A nivel de procedimientos se establece un proceso de mejora continua a través de reuniones periódicas del equipo en las que se identifican aquellos aspectos susceptibles de ser mejorados (reuniones de retrospectiva).
- A nivel de gestión de los proyectos aumenta la predictibilidad de los equipos al promover el desarrollo sostenible a lo largo del tiempo, disminuyendo el margen de error de las planificaciones.
Beneficios
Visto lo anterior se pueden considerar dos grandes diferencias desde el punto de vista del cliente o el usuario de negocio con respecto a lo que se vienen denominando metodologías tradicionales: la flexibilidad ante el cambio que permita la obtención de ventajas competitivas y la entrega continua de valor en la forma de software funcionando.
Estas dos características están íntimamente relacionadas entre sí, ya que al realizar entregas continuas de software que funciona, permite a los usuarios aprender sobre lo que se ha desarrollado hasta el momento (continuous learning). Pudiendo detectar nuevas necesidades o modificaciones sobre lo visto hasta el momento, de tal manera que el resultado final se adapte a sus necesidades reales.
Por otra parte, también permite tener una medida más cierta sobre el grado real de avance de los proyectos. Adiós a las tareas que están eternamente con un grado de avance del 90%. Ahora, se puede ver cada poco tiempo algo que realmente funciona. No sólo eso, sino que incluso se puede decidir, si ponerlo en producción y dárselo a los usuarios para que comiencen a trabajar con él sin necesidad de esperar a que esté finalizado completamente. Y esto tiene un beneficio para la empresa muy directo: mejoramos claramente el ROI. No tenemos que esperar a que todo esté terminado para empezar a obtener resultados.
Conclusiones
Como resumen, se puede decir que el objetivo principal de las metodologías ágiles es maximizar el valor entregado al cliente de la manera más rápida posible. Para ello, se apoyan en las directrices establecidas en el manifiesto ágil y en los doce principios que se derivan del mismo.
Ofrecen una manera diferente de abordar el modo en el que se realizan los desarrollos de software, priorizando aspectos tales como la colaboración, la calidad y la flexibilidad antes los cambios que surgen durante el ciclo de vida de cualquier proyecto.
En decid4AI utilizamos este tipo de metodologías ágiles en nuestros proyectos de desarrollo software para maximizar el valor entregado al cliente y el ROI de las soluciones. Si quieres saber más sobre este tipo de metodologías o sobre el trabajo que realizamos en decide4AI, contáctanos.
También puedes seguirnos en las redes sociales (Linkedin, Twitter, Youtube).