Los Procesos Ágiles: SCRUM y eXtreme Programming

¿Qué es SCRUM?

Scrum, el grito clásico del rugby, deporte ágil y dinámico donde el equipo tiene que colaborar de una manera extremadamente eficiente para alcanzar la meta rápidamente antes de recibir el castigo de los oponentes.

Scrum, nombre que toma prestado el proceso ágil de mayor éxito, actualmente utilizado a nivel mundial en las empresas que llevan la punta de lanza en TI. SCRUM ha demostrado desde hace casi dos décadas que es factible alcanzar metas rápidas en las entregas de productos de software valiosos para el usuario.  El que pega la primera vez pega dos veces, y los que están usando Scrum de forma vanguardista están comprobándolo.  ¿Y tu empresa, ya lo usa?

Dónde me capacito en Scrum

Obtener preparación formal y de calidad en este proceso, hasta hace muy poco, requería invertir grandes sumas en dólares o en libras esterlinas y en viajes al extranjero.  Y por supuesto, dominar inglés para aprovechar dicha capacitación.  

Afortunadamente llega ahora a México y Latinoamérica la capacitación ideal para aprender y vivir este proceso en carne propia.   Ahora las empresas en México y Latinoamérica pueden obtener los grandes beneficios que este método ágil ofrece; incluyendo la reducción de costos.   Característica que, en estos meses de recesión, ha tenido un auge impresionante, pues hoy más que nunca las empresas buscan la eficiencia para optimizar sus recursos. 

Un proceso fácil de implantar en las empresas

La necesidad  de implantar un proceso formal que permita reducir costos, al tiempo que eleve la moral del equipo, es cada vez mayor.   Para muchas empresas, gerentes y líderes de proyecto no hay una segunda oportunidad para demostrar resultados. 

¡Es ahora o nunca!  Por lo que las alternativas de modelos de procesos se reducen.

Implantar modelos como CMMI o el Proceso Unificado no es una opción aceptable, por lo menos en estos tiempos de recesión,  para muchas de estas empresas.   No cuentan con el presupuesto y los meses (o incluso años) necesarios para obtener un resultado demostrable en sus proyectos; los resultados tienen que ser visibles en semanas, ya no en meses.   Las empresas no están dispuestas a invertir un peso más de lo mínimo necesario.   Y la elección de donde asignar los recursos  tiene que demostrar un retorno sobre la inversión al corto plazo.

Los procesos pesados no son para cualquiera

El temor a apostarle a un proceso que traerá resultados al largo plazo impide, cada vez con mayor frecuencia, obtener la autorización de su presupuesto para el plan de calidad y mejora.   Pocos son los interesados en contratar consultorías que les ayuden a implantar un proceso costoso. Y dificilmente pueden darse el lujo de sacar a su personal de los proyectos para definir e implantar un proceso formal.

Un plan de mejora factible y económico

Scrum se presenta como una alternativa probada para quien desea reducir incluso los costos del plan interno de mejora de procesos, pues la curva de aprendizaje para que los equipos lo utilicen se reduce drásticamente en comparación con otros procesos.  Y finalmente ¿quién quiere llenarse de documentos y actividades burocráticas? 

Las empresas están buscando, más que nunca, mantenerse competitivos y aumentar su eficiencia para hacer mucho más con menos.

Proyectos y empresas donde conviene utilizarlo

Proyectos desde un sólo integrante hasta nueve son ideales para aplicar este proceso.  Cada quince días es un tiempo normal en SCRUM para hacer entregas de productos útiles para el cliente.  Las grandes empresas que manejan desarrollos internos son ejemplo de las que han elegido este proceso como la opción a seguir en este momento.   Empresas pioneras en el uso de las mejores prácticas, como Google™, Amazon™ y Microsoft ™ ya le están apostando a este proceso.  

¿Qué es Extreme Programming?

Extreme Programming (XP) surgió a finales de los 90s, cuando la industria del software estaba bajo dos grandes influencias, el cambio de paradigma de programación estructurada a programación orientada a objetos, y el boom de internet enfatizando speed-to-market y el crecimiento de las organizaciones como factores de competitividad para los negocios.

El objetivo de XP es reducir el costo del cambio, usando principios, valores y prácticas básicas, por medio de las cuales un proyecto debe ser mas flexible al cambio.
Los objetivos que XP plantea en detalle son:

  • Un intento de reconciliar humanidad y productividad
  • Un mecanismo de cambio social
  • Un camino a la mejora
  • Un estilo de desarrollo
  • Una disciplina de desarrollo de software

XP mejora un proyecto en cuatro formas esenciales: comunicación, simplicidad, retroalimentación y coraje, las cuales se establecen como valores.

Valores XP

Comunicación: La comunicación de los requerimientos de un proyecto a los desarrolladores en un proyecto bajo una metodología formal se hace por medio de la documentación, en XP el objetivo es dar a los desarrolladores una visión compartida del sistema, alineada con la de los usuarios del sistema, favoreciendo diseños simples, metáforas comunes, la colaboración entre usuarios y programadores, comunicación verbal frecuente y retroalimentación.

Simplicidad: XP fomenta el iniciar con la solución mas simple y desarrollar a partir de esa versiones mejores. La diferencia con las metodologías convencionales es diseñar y codificar para las necesidades actuales en lugar de las futuras. XP plantea que el riesgo de codificar sin considerar cambios futuros compensa el trabajo de invertir en posibles futuros requerimientos que podrían cambiar antes de ser relevantes.

Retroalimentación: La retroalimentación se da en varios niveles.
Retroalimentación del sistema al ejecutar periódicamente pruebas unitarias e integrales los programadores conocerán el estado del sistema después de implementar cambios
Las pruebas de aceptación elaboradas por el cliente y pruebas, realizadas cada dos o tres semanas permiten al cliente retroalimentar el desarrollo.
Cuando el cliente tiene nuevos requerimientos, la retroalimentación del equipo de trabajo se da al entregar una estimación del tiempo que estos implican.

Coraje: El coraje es un valor que se aplica a varios aspectos, al diseñar y codificar para las necesidades actuales en lugar de las futuras, al alentar a los programadores a mejorar el código sin afectar el comportamiento externo (refactoring), al reconocer cuando alguna parte del código ya no sirve, al ser persistente al buscar la solución de un problema.

Respeto: En XP los miembros del equipo de trabajo deben respetarse entre si, para nunca incorporar cambios que hagan fallar las pruebas o retrasen el trabajo de otra persona. Una forma de respeto al trabajo propio es siempre buscar la mas alta calidad y las mejores soluciones al desarrollar el producto. Nadie en el equipo de trabajo debe sentirse despreciado o ignorado ya que esto mejora la motivación de todos para conseguir los objetivos del proyecto.

Principios de XP

Los principios planteados se basan en los valores establecidos para ayudar a la toma de decisiones en el proyecto. Los principios son mas concretos que los valores y mas fáciles de seguir en situaciones practicas.
La retroalimentación realizada rápidamente es mas útil, el tiempo entre una acción y su retroalimentación es critico para aprender y realizar cambios. El contacto constante con el cliente y su monitoreo en el sistema en desarrollo le permiten guiar el desarrollo de acuerdo a sus necesidades. Las pruebas unitarias indican rápidamente si los cambios realizados funcionan correctamente.
Suponer la simplicidad es tratar cada problema como si su solución fuera extremadamente simple, XP opta por cambios incrementales en lugar de muchas modificaciones al mismo tiempo.
Adoptar el cambio es aceptarlo y planear la solución de nuevos requerimientos para una nueva iteración, aun si estos han cambiado dramáticamente.

Actividades

XP considera cuatro actividades básicas en un proceso de desarrollo

Codificar
XP argumenta que lo mas importante para el desarrollo del producto de software es codificar, actividad que definen en un concepto mas amplio que la definición tradicional. Codificar en XP es hacer diagramas que generaran código, scripts para una aplicación web o código para una aplicación que necesita compilarse. Cuando se presentan varias alternativas a un problema, deben codificarse todas para elegir la mejor con pruebas automatizadas. Comunicar soluciones codificándolas es mas claro y conciso ya que no esta sujeto a interpretaciones.

Probar
No se puede asegurar que algo funcione a menos que se pruebe, las pruebas unitarias automatizadas aseguran que el desarrollador elimine esta incertidumbre si todas las pruebas son satisfactorias. Las pruebas de aceptación aseguran que el cliente tiene el producto que necesita de acuerdo a los requerimientos planteados.

Escuchar
Los programadores no necesariamente conocen el negocio del cual el sistema es una solución, la funcionalidad de este es definida por los expertos del negocio, y para entender como debe ser planteada y construida la solución, los programadores deben escuchar a los expertos del negocio.

Diseñar
En la practica, restringirse solo a codificar, probar y escuchar no basta para crear una buena solución, un buen diseño ayuda a evitar un sistema con muchas dependencias, complejo y difícil de mantener, facilitando de esta forma los cambios incrementales.

Practicas
XP considera 12 practicas agrupadas en cuatro áreas tomadas de las mejores practicas de la ingeniería de software.


Retroalimentación en detalle

Programación en pares
El juego de planeación
Desarrollo dirigido por las pruebas:
Todo el Equipo:

Proceso Continuo

Integración Continua
Diseño mejorado
Liberaciones pequeñas

Comprensión compartida

Estándares de codificación
Responsabilidad colectiva del código
Diseño simple
Sistema de metáforas

Bienestar del programador

Ritmo sustentable

Conoce el curso de SCRUM con Extreme Programming

Las organizaciones de software están volteando cada vez más, y en especial en este periodo de crisis global, a procesos ágiles que les permitan obtener resultados en sus proyectos que de una forma más rápida y económica sin sacrificar calidad. De manera interesante, esto se está logrando al mismo tiempo que se aumenta la motivación de los equipos de desarrollo debido al uso de las prácticas recomendadas en dichos procesos.

No por nada los procesos ágiles tienen un auge tremendo a nivel internacional. Desafortunadamente en los países latinoamericanos el progreso no necesariamente se da al mismo ritmo que en otras naciones, y las opciones que tiene la industria para preparar formalmente a sus desarrolladores en dichas técnicas son muy escasas.

Objetivo

Este taller busca transmitir a los participantes una manera práctica de aplicar SCRUM en su organización, que les permita implementar este modelo de proceso ágil en el desarrollo de software aprovechando sus ventajas en las tareas de administración de proyecto, complementando las actividades de ingeniería con el enfoque ágil de las practicas de Extreme Programming.

SCRUM es el proceso más utilizado para las actividades de administración de proyectos. Las actividades de ingeniería no son definidas en este proceso, por lo que el curso que presentamos se complementa con las prácticas ágiles de ingeniería recomendadas por otro proceso ágil bastante popular: Extreme Programming.

Audiencia objetivo

Este curso esta dirigido a todos aquellos los profesionales que participan en proyectos de desarrollo y deseen una alternativa probada para un desarrollo que responda a las restricciones de tiempo sin sacrificar el control o la calidad.

* Programadores interesados en desarrollo ágil
* Administradores de Proyectos que requieran utilizar prácticas ágiles de administración de proyectos
* Ingenieros de procesos que deseen agregar prácticas ágiles a sus procesos de desarrollo

Descripción

Se inicia con una breve introducción y antecedentes para después revisar las prácticas principales de SCRUM, esta primera parte le da al participante el panorama general. En cada práctica revisada de SCRUM se presentan ejemplos desarrollado por el instructor y que el participante deberá complementar para comprender los conceptos. Al final del curso los alumnos participan en una simulación de proyecto SCRUM donde los participantes utilizarán y madurarán las prácticas SCRUM + XP.

Estrategia

El curso utiliza un enfoque dinámico, ágil y entretenido, además de la aproximación descrita en la sección anterior, cada uno de los temas es acompañado de ejemplos y ejercicios diseñados para reforzar la comprensión y exponer al participante a los posibles escenarios reales de aplicación. De esta forma se pretende lograr que el alumno refuerce los conceptos y técnicas expuestas.

Habilidades previas recomendadas

Es necesario que el alumno haya participado en algún rol dentro de por lo menos un proyecto de software.

Este curso normalmente se programa de forma abierta en las principales ciudades de México, pero puede ser contratado para grupos cerrados en cualquier ciudad de Latinoamérica. Pide informes aquí…

Conoce el temario de este curso…

¿En dónde se imparte este curso?

El curso se imparte en México (D.F., Monterrey, Guadalajara y otras ciudades) y en Latinoamérica.
Pregunte por ubicaciones y fechas.
 
Todos los derechos reservados.