¿Conoce la programación eXtreme, sus principios y ventajas?
¿Ha oído hablar alguna vez de eXtreme Programming (XP)? ¿Qué sabe de este método de desarrollo de software?
Esta metodología, que tiene su origen en el mundo ágil, se dio a conocer a finales de los años 90 y principios de los 2000. Pero, ¿en qué consiste exactamente?
En este artículo, nos centramos en los principios que la rigen, las ventajas e inconvenientes que ofrece y las técnicas que hay que seguir para conseguirlo.
¿Qué es la programación eXtreme?
Definición
La Programación eXtremaes una metodología ágil y su aplicación más avanzada en el desarrollo de software, de ahí el término "extrema".
Basado en un enfoque centrado en el cliente, este método ofrece un marco cuyo objetivo es producir código sencillo pero de alta calidad para todo el equipo implicado en el proyecto.
Desarrollado por Kent Beck, informático estadounidense también conocido por su concepto de desarrollo basado en pruebas, eXtreme Programming ha desempeñado un papel importante en el éxito de los métodos ágiles.
eXtreme Programming vs Scrum
El método Scrum también forma parte de la familia ágil. De hecho, ambos pueden combinarse, ya que son complementarios:
- el método Scrum es un marcopara la gestión y organización de proyectos;
- eXtreme Programming se centra en las actividades de desarrollo, en particular en la sistematización de las pruebas automatizadas.
¿Cuáles son las características de eXtreme Programming?
Los 5 valores clave
Inicialmente concebida para la industria informática, la eXtreme Programming es ahora muy popular en todo el mundo, ya que es funcional para todo tipo de proyectos, de todos los tamaños y en todos los sectores.
Incluso se dice que funciona mejor en equipos pequeños o medianos, de no más de una veintena de personas.
Las principales características de eXtreme Programming son las del universo ágil: capacidad de respuesta al cambio, flexibilidad, colaboración, calidad del trabajo, calidad de las pruebas, etc.
☝️ La diferencia radica en que estas características se llevan al extremo.
Echemos un vistazo a sus valores fundamentales:
- Comunicación: es esencial que cada miembro del equipo se comunique a diario tanto internamente como con el cliente. El contacto es un medio esencial para resolver problemas.
- Simplicidad: a menudo, la forma más sencilla de lograr un resultado es también la más eficaz. Por eso es importante que las cosas sean sencillas y directas. Por ello, el equipo de desarrollo debe centrarse exclusivamente en las tareas estrictamente necesarias. Las mejoras pueden hacerse más tarde.
- Feedback: el intercambio de información entre el equipo del proyecto y el cliente es esencial. Cualquier cambio en el proyecto debe comunicarse al cliente con la mayor rapidez y frecuencia posibles. Cualquier solicitud de cambio debe considerarse inmediatamente.
- Respeto: el respeto por el trabajo de las personas implicadas es una condición sine qua non. La dirección, el equipo del proyecto y el cliente deben respetarse mutuamente.
- Valentía: el cambio requiere valentía para salir de una situación compleja, ya sea aprender a dominar una nueva técnica, reiniciar una iteración que no ha sido validada o reorganizar un proyecto.
Las 12 reglas fundamentales
En la práctica, los 5 valores clave descritos anteriormentedan lugar a 12 reglas fundamentales. Estas pueden agruparse en 4 ámbitos.
Retroalimentación detallada
- Programaciónen parejas: este mecanismo pretende controlar la calidad del trabajo. Se trabaja en parejas: mientras un compañero escribe el código, el otro lo comprueba. Para trabajar juntos en una estación de trabajo compartida, es muy importante asegurarse de que la pareja tiene un nivel de experiencia similar.
- Póquer de planificación: la planificación se realiza en colaboración con el cliente. El cliente expresa las funcionalidades de las que quiere beneficiarse. El equipo evalúa el tiempo necesario para implantarla. Por último, se establecen prioridades entre las distintas tareas. Esta reunión suele celebrarse semanalmente.
- Desarrollo dirigido por pruebas: el entorno de pruebas (tanto unitarias como de aceptación) se redacta antes del desarrollo de la parte funcional y la creación del código fuente. Esta técnica permite identificar cualquier error con antelación.
- Cliente in situ: lo ideal es que al menos un representante del cliente forme parte integrante del equipo, para tener una visión global del resultado deseado y poder responder a cualquier pregunta.
🧘♂️ Bienestar de los programadores
- Ritmo sostenible: las horas extraordinarias están prohibidas. Si es necesario hacer horas extra, hay que revisar la programación previa. Un empleado cansado trabaja mal y comete más errores. ¡Conviene no superar nunca las 40 horas semanales!
∞ Proceso continuo
- Refactoring (o mejora del diseño): el proyecto se mejora constantemente. El objetivo es trabajar sobre bases sólidas y tener unas condiciones de trabajo óptimas. Por ello, el código elimina constantemente repeticiones y elementos innecesarios.
- Pequeñas versiones: deben ser lo más frecuentes posible, para dar al cliente la oportunidad de expresar sus críticas y sugerencias de forma continua. De este modo, los errores se detectan y corrigen más rápidamente.
- Integración continua: en cuanto se completa una tarea, se integra inmediatamente en el producto. Así se evita el trabajo extra que supone integrar todos los elementos antes de la entrega final. Las pruebas facilitan esta integración: cuando todas las pruebas son positivas, la iteración está completa.
💡 Entendimiento común (o compartido)
- Propiedad colectiva del código: la responsabilidad del proyecto es colectiva. Esto significa que cada miembro puede intervenir en todas las secciones del proyecto, incluidas aquellas en las que no ha trabajado. ¿Cuál es el objetivo? Máxima eficacia y rapidez.
- Normas de codificación: al trabajar todos juntos, es esencial facilitar el trabajo de todos utilizando los mismos términos, el mismo estilo y modos de comunicación bien definidos.
- Diseño sencillo: esto permite tener un código que todos puedan entender y evitar duplicidades. La atención se centra en las necesidades del cliente.
- Metáfora del sistema : se utilizan metáforas para describir el proyecto de la forma más sencilla posible. El objetivo es que los nuevos empleados puedan entender e integrar el proyecto rápidamente.
Ventajas e inconvenientes de la programación eXtreme
Si se cumplen todas las condiciones, eXtreme Programming puede ofrecer resultados sorprendentes.
✚ He aquí algunos de los más destacados:
- código limpio y lineal,
- software estable gracias al desarrollo iterativo continuo,
- la capacidad de hacer mejoras constantes.
⊖ Los puntos débiles incluyen:
- un presupuesto medio más elevado,
- la necesidad de una fuerte implicación del cliente,
- una gran necesidad de autodisciplina y planificación.
eXtreme Programming: el método que va directo al grano
Con este método, gestores, desarrolladores y clientes trabajan juntos. Este enfoque colaborativo lleva al máximo la simplicidad y la capacidad de respuesta y garantiza el control continuo de las versiones.
En la práctica, es un método complejo de aplicar porque requiere mucha autodisciplina y una buena comunicación interna. Sin embargo, si se dan las condiciones adecuadas, este método puede dar excelentes resultados.
¿Has visto alguna vez este método ágil? ¿Cuáles son sus impresiones?