Modelo de desarrollo de software clásico o contemporáneo?
¿Qué modelo de desarrollo de software de los clásicos o los contemporáneos es mejor? ¿Por qué?
Se ha mencionado ya, en los trabajos de otro autores, que los modelos de desarrollo son aplicables a diferentes situaciones y unos funcionan mejor que otros en determinados proyectos. Por el motivo anterior resulta complicado etiquetar a un modelo como mejor que otro, ya que todo depende de la situación y de las preferencias de los equipos de trabajo o en su defecto, del líder de proyecto.
A pesar de lo anterior, en mi opinión y preferencia, el modelo Waterfall es realmente el peor modelo que puede existir, ya que es demasiado susceptible a fracasos. La idea de esperar a que una fase sea completada antes de iniciar la siguiente, es totalmente ridícula y me cuesta creer que fuera popular por tanto tiempo en la Ingeniería de Software.
A mi me gustan mas las metodologías ágiles contemporáneas. Estoy más familiarizado con Scrum y lo prefiero porque se centra en las personas y sus interacciones, en lugar de los procesos o herramientas. Scrum promueve el trabajo en equipo, la colaboración, la constante comunicación, así como la respuesta al cambio. Saber que cada iteración en Scrum genera un producto funcional que puede ser presentado a las partes interesadas, me resulta motivante, ya que en cortos periodos de tiempo se pueden ver los resultados del trabajo del equipo. El conjunto de ceremonias que se emplean en Scrum aportan gran valor al proyecto en general ya que se incluyen diferentes reuniones como las juntas diarias cortas para compartir los avances de cada miembro del equipo e identificar y resolver los impedimentos; las juntas de demostración donde se presenta a las partes interesadas lo que el equipo ha logrado la iteración; las juntas de retrospectiva donde se obtiene retroalimentación y se tomas decisiones para ajustar la forma de trabajo del equipo; las juntas de planeación, etcétera.
En general, he visto grandes resultados al trabajar con metodologías ágiles como Scrum, y por lo tanto creo que es mejor.
¿Cuál de ellos has implementado en tu ámbito laboral y comparte tus resultados?
Cuando inicie mi carrera profesional trabajé en un par de proyectos pequeños con una metodología iterativa. Realmente el proyecto salió en tiempo y forma, dejándome una buena experiencia en general con dicho modelo. Logre observar que, a pesar del éxito del proyecto, los individuos y sus interacciones nunca fueron una prioridad. Se daba preferencia a los procesos. El cliente no estaba participando activamente en las decisiones del proyecto, sino que su aportación estaba limitada a las reuniones al final de cada iteración.
En mi segundo empleo participe en un proyecto que utilizaba una metodología ágil, aunque nunca supe exactamente cual era, ya que aprecia ser una combinación de varias. La colaboración en el equipo era mucho más evidente, y la participación del cliente era esencial. Teníamos varias ceremonias como en Scrum:
- Iniciabamos el ciclo con una junta de planeación donde el equipo revisaba junto con el cliente la lista de funcionalidades que estaban pendientes de implementar (backlog). Normalmente durante esta junta se priorizaban las tareas de acuerdo a los intereses del cliente y a las sugerencias de nuestro líder de proyecto. Posteriormente se acordaba la siguiente fecha de entrega, que solía ser de 2 a 4 semanas (la duración cambiaba según las expectativas del cliente). A continuación se asignaba a cada desarrollador las funcionalidades que debía completar, tomando en cuenta sus comentarios y estimaciones.
- Una vez repartido el trabajo, el equipo tenía juntas diarias de aproximadamente 30 minutos, donde el cliente estaba siempre presente. Se discutían los avances, impedimentos y se resolvian las dudas o ambigüedades.
- También contábamos con juntas de demostración donde se presentaban las funcionalidades desarrolladas y se obtenia la aprobación del cliente para liberar el código, posponerlo o cancelarlo en caso de no cumplir con las expectativas.
- Al finalizar la iteración, el equipo asistía a una junta de retrospectiva en donde se revisaban las estrategias que funcionaron y deben seguirse aplicando, así como las que deberían eliminarse. También se obtiene la retroalimentación del cliente.
Después se iniciaba la siguiente iteración.
Como puede verse, era una metodología ágil adaptada al equipo. Se incluian varios valores, ceremonias, rituales y artefactos parecidos a los usados en Scrum, pero no se seguía al pie de la letra.
En mi trabajo actual utilizamos la metodología ágil Scrum, con todas sus ceremonias y rituales. Ha probado dar grandes resultados en diferentes situaciones. La hemos empleado para proyectos de desarrollo así como para proyectos de mantenimiento. Lo grandioso es que realmente fortalece al equipo y su integración, así como la participación constante del cliente. Facilita la recepción de nuevos requerimientos, o cambios en los existentes. Las iteraciones de 2 semana que utilizamos nos permiten agregar valor constantemente a las aplicaciones de nuestros clientes. También es posible experimentar nuevas técnicas o tecnologías en cada una iteración, y conservarla en las siguientes si funciona o retirarla. En resumen Scrum es mi metodología favorita hasta el dia de hoy.
Comentarios
Publicar un comentario