Programación extrema frente a SCRUM | EXP contra SCRUM
Ha habido varias metodologías de desarrollo de software diferentes utilizadas en la industria del software a lo largo de los años, como el método de desarrollo Waterfall, V-Model, RUP y algunos otros métodos lineales, iterativos y iterativos lineales combinados. El modelo Agile (o más correctamente, un grupo de metodologías) es un modelo de desarrollo de software más reciente introducido por el manifiesto Agile para abordar las deficiencias que se encuentran en las metodologías tradicionales de desarrollo de software.
Los métodos ágiles se basan en el desarrollo iterativo y utilizan los comentarios de los usuarios como principal mecanismo de control. Agile se puede llamar un enfoque centrado en las personas que los métodos tradicionales. El modelo Agile ofrece una versión de trabajo del producto muy pronto al dividir el sistema en subpartes muy pequeñas y manejables, de modo que el cliente pueda obtener algunos de los beneficios desde el principio. El tiempo del ciclo de prueba de Agile es relativamente corto en comparación con los métodos tradicionales, porque las pruebas se realizan en paralelo al desarrollo. Debido a todas estas ventajas, los métodos ágiles se prefieren a las metodologías tradicionales en este momento. La programación Scrum y Extreme son dos de las variaciones más populares de los métodos Agile.
¿Qué es SCRUM?
Como se mencionó anteriormente, SCRUM es un proceso de gestión de proyectos incremental e iterativo, que pertenece a la familia de métodos ágiles. SCRUM se basa en dar alta prioridad a la participación del cliente al principio del ciclo de desarrollo. Recomienda incorporar las pruebas por parte del cliente lo antes posible y con la mayor frecuencia posible. Las pruebas se realizan en cada punto cuando una versión estable está disponible. La base de SCRUM se basa en comenzar con las pruebas desde el comienzo del proyecto y continuar hasta el final del proyecto.
El valor clave de SCRUM es "la calidad es responsabilidad del equipo", lo que enfatiza que la calidad del software es responsabilidad de todo el equipo (no solo del equipo de pruebas). Otro aspecto importante de SCRUM es dividir el software en partes manejables más pequeñas y entregarlas al cliente muy rápidamente. La entrega de un producto de trabajo es de suma importancia. Luego, el equipo continúa mejorando el software y entregando continuamente en cada paso importante. Esto se logra teniendo ciclos de lanzamiento muy cortos (llamados sprints) y obteniendo retroalimentación para mejorar al final de cada ciclo.
SCRUM define varios roles clave para el buen funcionamiento de un equipo de desarrollo. Son el propietario del producto (que representa al cliente y mantiene la cartera de productos), el Scrum master (que actúa como organizador y coordinador del equipo mediante la realización de reuniones de scrum, el mantenimiento de la cartera de pedidos y los gráficos de quemado) y otros miembros del equipo. Un equipo puede constar de roles tradicionales, pero en su mayoría son equipos autogestionados. Los artefactos principales de Scrum son la acumulación de productos/la acumulación de lanzamientos (lista de deseos), la acumulación de Sprint/la acumulación de defectos (tareas en cada iteración), los gráficos de quemado (trabajo restante frente a la fecha). Las principales ceremonias de SCRUM son la reunión de acumulación de productos, la reunión de Sprint y la reunión de retrospectiva.
¿Qué es la programación extrema?
La Programación Extrema (abreviado XP) es una metodología de desarrollo de software que pertenece al modelo Agile. La programación extrema realiza fases en pasos continuos muy pequeños (en comparación con los métodos tradicionales). El primer pase, que toma solo un día o una semana, está intencionalmente incompleto. Para proporcionar objetivos concretos para el desarrollo del software, las pruebas automatizadas se escriben al principio. Luego, los desarrolladores hacen la codificación. La atención se centra en hacer la programación en parejas. Una vez que pasan todas las pruebas, la codificación se considera completa. La siguiente fase es el diseño y la arquitectura, que se ocupa de la refactorización del código por parte del mismo grupo de programadores. Al final de esta fase, el producto incompleto (pero funcional) se presenta a las partes interesadas. Justo después de esto, comienza la siguiente fase (que se centra en el siguiente conjunto de características más importantes).
¿Cuál es la diferencia entre Programación Extrema y SCRUM?
La programación extrema y SCRUM son metodologías comprensiblemente muy similares y alineadas. Sin embargo, existen diferencias sutiles pero importantes entre estos dos métodos. Los sprints de SCRUM duran de 2 a 4 semanas, mientras que las iteraciones típicas de XP son más cortas (últimas 1 a 2 semanas). Por lo general, los equipos SCRUM no permiten cambios en los sprints, pero los equipos XP son un poco más flexibles a los cambios dentro de las iteraciones. Por ejemplo, después de la planificación del sprint, el conjunto de elementos de ese sprint permanece sin cambios, pero una función en la que no ha comenzado a funcionar puede intercambiarse en cualquier momento con alguna otra función en XP. Otra diferencia entre XP y SCRUM es que el orden de las características desarrolladas en XP es estrictamente priorizado por el cliente, mientras que el equipo SCRUM decide el orden de los elementos (después de que el Product Owner de SCRUM prioriza la acumulación de productos).
A diferencia de XP, SCRUM no establece ninguna práctica de ingeniería. Por ejemplo, XP está impulsado por prácticas como el desarrollo basado en pruebas (TDD), la programación en pares, la refactorización, etc. Sin embargo, algunos creen que exigir un conjunto de prácticas en equipos autoorganizados podría tener un impacto negativo, y esto puede considerarse una deficiencia de XP. Otra deficiencia de la programación extrema es que los equipos sin experiencia pueden tender a refactorizar sin pruebas automatizadas o TDD (o simplemente pirateando). Por lo tanto, algunos sugieren que SCRUM es mejor para comenzar (ya que brinda grandes mejoras simplemente a través de iteraciones enfocadas en un período de tiempo) y XP es adecuado para equipos un poco maduros que han descubierto el valor de las prácticas mencionadas anteriormente (en lugar de usarlas porque se les ha pedido hacerlo).