Por una metodología
Suele ser bastante complicado trabajar para la web, tomando en cuenta el ritmo en que están evolucionando las tecnologías y lo exigente que se pone el mercado ante la vorágine de Internet. Es en momentos como éstos que se necesita poner orden en el gallinero, pausar un momento y sentarse a reflexionar en cuáles serán los pasos a tomar para enfrentar un proyecto web. Estimar tiempos, quizás transparentárselo al cliente a través de una Gantt y apoyarte con una metodología clara, robusta y que te apoye al momento de esa tan ansiada entrega final sería el ideal en estas instancias.
Scrum es una metodología ágil de manejo de proyectos digitales (generalmente software). Puede ser tomado como un proceso, lo que hace más interesante aún esta metodología. Algunos incluso se atreven a mencionarlo como capaz de ser utilizado en el desarrollo de cualquier producto; pero lo que más interesa es la capacidad de entregar un producto con un conjunto de funcionalidades específicas a cada iteración.
Algunas de sus características son:
- Es ágil ya que funciona con cortas iteraciones de tareas pre-definidas.
- Scrum no controla tiempos, sino que tareas de desarrollo.
- Envuelve prácticas ya existentes, por lo que su implementación no confiere un cambio radical en la manera de trabajar.
- Es basado en el trabajo en equipo.
- Al ser ágil, se incrementan en cada iteración funcionalidades y se adapta rapidamente a los cambios que éstos pueden sufrir.
- Aumenta la cooperación entre los integrantes del equipo y su comunicación.
- Scrum es una manera de detectar causas de conflictos y errores en la entrega de productos.
- Maximiza la productividad.
- Es escalable desde simples proyectos hasta organizaciones enteras.
- Puede ser implementado al inicio del proyecto, a la mitad o cuando esté con problemas y retrasos en su entrega.
Scrum es un set de prácticas y reglas interrelacionadas que optimizan el desarrollo, reduce la sobrecarga organizacional y sincroniza los requerimientos con prototipos iterativos. Basado en teorías de control de procesos modernas, Scrum permite que un desarrollo sea mejor abordado teniendo en cuenta los recursos disponibles y tiempos predefinidos.
Parece milagroso, pero no es la solución a nuestros problemas. Por mi experiencia, necesitas que se junten algunos factores para que puedas implementar Scrum en un proyecto con éxito:
- Un pequeño tiempo (hasta 2 dias) de implementación y/o adaptación.
- Un equipo ordenado y acostumbrado a cambios a mitad de un proceso.
- Un jefe de proyecto que sepa lo que está haciendo.
- Un cliente que acepte la propuesta de que es un cambio que será para mejor.
Bueno, y ¿cómo se utiliza?⌗
La clave del éxito de Scrum está en el uso de medidas que maximizen la flexibilidad y riesgo mientras mantienes el control. La mayoría de los proyectos tratan de evitar riesgos, aunque ésta sea una parte inherente del desarrollo web y de software.
Manten tus amigos cerca, y tus enemigos más cerca aún
Las variables de un desarrollo son: riesgo, funcionalidad, costo, tiempo y calidad, las que pueden ser estimadas al inicio mismo del proyecto. Cada variable comenzará a cambiar en el momento en que el proyecto comience, y pueden ser aumentadas o disminuidas de acuerdo al avance del desarrollo (aumenta funcionalidad por mayor tiempo y costo, por ejemplo).
El uso de controles es la espina dorsal de Scrum, y sirve para establecer, mantener y monitorear parámetros claves. Estos controles se tornan críticos cuando te encuentras con incertidumbres, comportamiento impredecible y el amargo caos (sabemos que siempre existen…). Los controles utilizados en Scrum son:
- Backlog (cartera)
- Una identificación de todos los requerimientos que deben cumplirse al final del desarrollo.
- Objetos / Componentes
- Contenedor de reutilizables
- Paquetes
- Grupo de objetos dentro del cual se desarrollará un ítem del backlog.
- Problemas
- Que deben ser resueltos por un miembro del equipo al implementar un ítem del backlog.
- Temas
- Que deben ser resueltos antes que un ítem del backlog sea asignado a un paquete.
- Soluciones
- A un tema ó problema.
- Cambios
- De actividades que son realizadas para solucionar un problema.
- Riesgos
- Asociados a un problema, tema ó ítem del backlog.
Estos controles son medidos y contínuamente mantenidos. Los mayores controles son backlog y riesgos; mientras backlog comenzará siendo grande, aumentará más aún cuando culmine la etapa de planificación pero disminuirá considerablemente mientras el proyecto avance y se vayan quemando cada uno de sus requerimientos. Riesgos por su parte irá en aumento a medida que se sumen temas y problemas, pero debe disminuir cuando se acerque la entrega del proyecto.
La clave: los Sprint⌗
Un sprint es un conjunto de actividades de desarrollo en un tiempo pre-definido que conducen en un ejecutable demostrable. El intervalo entre cada sprint está basado en la complejidad del producto, evaluación de los riesgos y el grado de control deseado. Dentro del desarrollo del proyecto existirán varios sprint; inicialmente sus duraciones serán largas (hasta 6 semanas) pero deben acortarse a medida que avanzan (1 semana). Al final de cada sprint, el Scrum Master (quien maneja y aplica la metodología) puede cambiar backlog y riesgo en respuesta a eventos externos al proyecto (nuevas tecnologías, competitividades, fallos en herramientas, etc.) lo que se traduce en productos cada vez más acabados y cuya funcionalidad se va incrementando en cada sprint.
En un equipo de trabajo pueden haber muchos sprints trabajando en diferentes funcionalidades de un mismo producto; se recomiendan equipos de sprint que incluyan: desarrolladores, especialista en QA y un encargado de la documentación. Cada equipo debe trabajar en sus paquetes asignados para resolver los problemas al implementar backlogs. La idea es que al final de cada sprint el equipo entregue un código ejecutable y demostrable.
Se recomienda crear una reunión diaria (Scrum Meeting) donde se discuten los avances, problemas y posibles soluciones por parte de cada miembro del equipo; así todos estarán al tanto de lo que cada uno está haciendo y pueden aportar con soluciones. Esta reunión no debe durar más de 15 minutos y ojalá se haga al inicio de la jornada laboral.
Finalmente, el cierre⌗
Cuando todos los factores determinados en el backlog están terminados y los problemas fueron completados, el encargado puede determinar que el proyecto está cerrado. Lo interesante en Scrum es que se asume que un producto nunca está completo y que constantemente se puede mejorar en cuanto a funcionalidades. A partir que aquí, se permite generar un nuevo ciclo y recomenzar Scrum.
Y ¿Cómo lo aplico?⌗
Primero, debes documentarte bastante y entender bien lo que involucra implementar una nueva metodología de trabajo dentro de un equipo ya consolidado. Recuerda que manejar personas suele ser complicado y debes tener un proyecto algo liviano para hacer un primer intento. En una empresa de desarrollo de software o de TI no debería ser complicado, pero implementarlo en una agencia multimedia puede llegar a ser doloroso y con una alta tasa de fracaso, debido al ritmo vertiginoso con que se trabaja y la poca posibilidad de manejar proyectos individuales por vez (si entra un nuevo cliente, se debe tomarlo con la misma gente que ya está trabajando en otros proyectos con sprints ya definidos). En ese caso, el Scrum Master debe saber manejar muy bien multiples proyectos simultaneamente y tratar en lo posible de mantener el orden con el cliente.
No deja de ser un buen desafío, es cosa de atreverse.