En el ámbito del desarrollo de software, la velocidad y la flexibilidad se han convertido en imperativos. Los proyectos deben ser finalizados en plazos muy cortos, al mismo tiempo que se adaptan en tiempo real a las necesidades cambiantes de los clientes.
Los equipos de desarrolladores deben ser capaces de manejar la incertidumbre, manteniendo sus referencias y produciendo constantemente un trabajo ejemplar.
Para cumplir con estas estrictas exigencias, las organizaciones buscan constantemente métodos para Agileizar, acelerar y mejorar el trabajo de los equipos de desarrolladores.
Uno de estos enfoques es la metodología Agile, inventada en 2001. Desde entonces, muchos equipos implementan esta metodología para entregar software de mejor calidad de manera más eficiente.
Implica una colaboración continua, actualizaciones y correcciones regulares basadas en el feedback de los clientes. Las nociones de CI/CD (Continuous Integration y Continuous Delivery) están estrechamente ligadas con la metodología Agile.
El origen del desarrollo iterativo se remonta a fines de los años 1950, y las metodologías empleadas han pasado por muchas evoluciones. Fue en 2001 que un grupo de desarrolladores lanzó el movimiento Agile.
¿Qué es el desarrollo Agile?
Antes que nada, Agile es una mentalidad. Los doce principios de esta metodología se presentan en el «Agile Manifesto».
Este enfoque permite que los equipos de desarrolladores y sus organizaciones ganen en Agileidad y adaptabilidad, adopten el cambio y aprendan a usarlo a su favor.
Una de las nociones esenciales es que tener a las personas adecuadas en un equipo de desarrollo es mucho más importante que tener buenas herramientas y procesos. Combinando los talentos y habilidades adecuados, un equipo puede responder mejor a dificultades imprevistas y cambios en las solicitudes de sus clientes.
Además, este método implica planificar el desarrollo de manera similar al proceso evolutivo del cambio. Los equipos son autónomos, y los managers solo les ayudan a resolver problemas organizacionales. Los equipos entregan el software a los clientes en intervalos frecuentes, para recibir sus comentarios y adaptar las siguientes versiones del programa.
La alineación y la comunicación, tanto interna entre los miembros del equipo como externa con los clientes, son una fuente de feedback indispensable. Son precisamente estos retornos continuos los que permiten a los equipos organizarse y crear soluciones adaptadas a las necesidades de los clientes.
¿Qué es Agile Scrum?
Otra metodología de desarrollo es Scrum. Facilita la colaboración efectiva entre los miembros de un equipo que trabajan en proyectos complejos. Se trata de un tipo de metodología Agile basado en reuniones, roles y herramientas diseñadas para simplificar la colaboración, la estructura y la gestión de la carga de trabajo.
Agile y Scrum son dos sistemas de gestión de proyectos similares, que presentan, sin embargo, diferencias importantes. La flexibilidad es una gran fortaleza de Agile, mientras que Scrum es más rígido y fomenta los equipos cross-funcionales.
Es posible utilizar los métodos Agile y Scrum por separado, pero también combinar sus ventajas a través de la metodología Agile Scrum. Hoy en día, esta es la aplicación más popular para Agile.
La metodología Agile Scrum combina la incrementalidad de Agile y la descomposición de proyectos en «sprints» de Scrum. Es ideal para equipos obligados a terminar un proyecto específico muy rápidamente. Cada iteración consta de sprints de dos a cuatro semanas, cuyo objetivo es construir las funcionalidades más importantes de forma prioritaria. Posteriormente, se agregan funcionalidades adicionales al producto en los siguientes sprints y se ajustan según el feedback de los clientes.
Los frameworks Agile
Existen diferentes frameworks Agile, que incorporan elementos de integración, tests, planificación continua y otras formas de desarrollo continuo. En comparación con los métodos de desarrollo tradicionales, los frameworks Agile son más ligeros. Las reglas y prácticas son minimalistas.
El framework Scrum es el más conocido. Permite descomponer grandes proyectos en tareas más pequeñas, que se pueden completar a través de ciclos de desarrollo cortos.
Por su parte, el framework Crystal es utilizado para proyectos a corto plazo que involucran equipos ubicados en el mismo espacio de trabajo. Este enfoque no implica reglas fijas.
El framework Kanban es visual e incremental. Su principal característica es la transparencia del estado de los proyectos, permitiendo clasificar las tareas según estén por hacer, en progreso o completadas.
El Dynamic Systems Development Method (DSDM) es un método de gestión de proyectos y de entrega de proyectos utilizado por grandes empresas. Sigue procesos estrictos y rigurosos, para proporcionar una sólida base de gobernanza.
Finalmente, el desarrollo «feature-driven» se centra en el equipo de desarrollo. A diferencia de otros frameworks, el FDD requiere una documentación exhaustiva y una organización estricta.
Agile: una competencia muy buscada en el sector empresarial
El dominio de Agile es una habilidad muy solicitada, especialmente en empresas a la vanguardia de la innovación. La mayoría de los equipos de desarrollo prefieren este enfoque a otros métodos como waterfall.
Esto se aplica no solo al ámbito del desarrollo de software, sino también a otras industrias. La mayoría de las empresas del sector tecnológico utilizan Agile, y se espera que esta tendencia continúe en el futuro. Se trata de una habilidad imprescindible para trabajar en el campo de la tech.
Agile y la Data Science
La Data Science y la ingeniería de software son campos distintos, pero muchas organizaciones los abordan de la misma manera. Por lo tanto, no es sorprendente ver la metodología Agile utilizada en Data Science. Sin embargo, los resultados son mixtos, ya que las prácticas Agile son difíciles de trasladar a la Data Science.
Según un estudio de 2017, entre el 25% y el 50% de los equipos de Data Science adoptan un enfoque Agile. No se trata de desnaturalizar el ciclo de la Data Science, sino de aprovechar el proceso exploratorio centrado en la experimentación científica.
La filosofía subyacente de Agile es la misma para la Data Science que para las otras industrias, pero hay matices y especificidades importantes.
Un equipo de Data Science Agile debe ser totalmente funcional y reunir todas las habilidades necesarias. Por lo general, debe incluir a Data Engineers, Data Scientists, analistas de negocios y un product owner.
Además, el equipo debe ser capaz de autogestionarse. No debe estar dirigido por un management de nivel superior. Solo necesita tener una dirección clara y un entorno propicio al éxito, y se encarga de mantener su ritmo, inspeccionar sus procesos y mejorarlos continuamente.
Por otro lado, es preferible comenzar un proyecto de manera simple y iterar rápidamente. El principal producto de un equipo de Data Science son los insights. Es posible empezar con reportes estáticos y análisis derivados de la exploración de datos, y luego continuar con dashboards interactivos.
La medición y recolección de feedback es una prioridad. Los comentarios deben solicitarse a los clientes, pero también recopilarse a partir de los propios datos monitoreando el rendimiento del modelo.
Además, la colaboración es el corazón de la Data Science Agile. Los equipos deben colaborar y comunicarse con frecuencia entre ellos y con los clientes.
También deben tener planes flexibles y adaptarse a los resultados de las pruebas y análisis. En resumen, los equipos deben centrarse tanto en la Agileidad como en el ciclo de vida de la Data Science.
¿Cómo aprender a usar Agile, es necesario realizar una formación Agile?
Agile se aprende con la práctica. Todos los expertos están de acuerdo en este punto. Para dominar esta metodología, es indispensable adquirir experiencia trabajando con equipos cross-funcionales de composición diversa.
La química entre los miembros del equipo es esencial para las empresas que usan Agile. Muchas nociones se adquieren durante la colaboración, especialmente a través de reuniones diarias y planificaciones de sprint.
Existe una gran variedad de formaciones Agile, pero no todas son iguales. Elegir una formación de alta calidad es esencial, ya que un curso de mala calidad puede llevar a un aprendizaje erróneo que afecte los resultados de sus futuros proyectos.
Las mejores formaciones son impartidas por profesionales con experiencia práctica en Agile. Elija también una organización con una alta tasa de satisfacción y de inserción profesional.
¿Se puede aprender en autodidacta o es necesario realizar una formación Agile?
Puedes aprender los fundamentos de Agile por tu cuenta. Hay muchos libros que permiten desarrollar una sólida comprensión de Agile y sus diferentes frameworks.
No obstante, la mejor manera de aprender Agile desde casa es elegir una formación en línea. Prefiera una organización que ofrezca prácticas y interacciones, con coaching individual a través de una plataforma web.
¿Cuáles son las mejores formaciones Agile?
La Scrum Alliance y la Agile Alliance ofrecen cursos para principiantes sobre sistemas y frameworks Agile. Asimismo, Mountain Goat Software ofrece formaciones de alta calidad para principiantes y expertos.
Existen talleres en línea para el framework eXtreme Programming y grupos comunitarios en Slack. También puede elegir una organización de formación certificada como DataScientest.
Los coaches Agile también pueden dirigirse a organismos reconocidos mundialmente como ICF (International Coaching Federation), que ofrece cursos sobre prácticas de coaching y certificaciones profesionales. De igual manera, ICAgile ofrece una gran cantidad de cursos según el área de habilidades para coaches e ingenieros Agile.