Hace un tiempo que @jjfalcon me viene hablando de una nueva metodología, una nueva filosofía para el desarrollo de software de una forma ágil para satisfacer las necesidades de software de los clientes. Debido a lo rápido que vamos siempre, nunca tenemos tiempo para pararnos a ver nuevas formas de desarrollo, reconocer si realmente estamos haciendo bien nuestro trabajo. Pero lo cierto que es bueno pararse a pensar si de verdad estamos haciéndolo lo mejor posible.
Para iniciarnos en este nuevo mundo es conveniente conocer el Manifiesto firmado por un grupo de eminentes gentes del sector del desarrollo del software y como no nativos del otro lado del charco, norteamericanos en su gran mayoría.
Manifiesto por el Desarrollo Ágil de Software
Estamos descubriendo mejores maneras de desarrollar software tanto por nuestra propia experiencia como ayudando a terceros. A través de esta experiencia hemos aprendido a valorar:
Individuos e interacciones sobre procesos y herramientas
Software que funciona sobre documentación exhaustiva
Colaboración con el cliente sobre negociación de contratos
Responder ante el cambio sobre seguimiento de un plan
Esto es, aunque los elementos a la derecha tienen valor, nosotros valoramos por encima de ellos los que están a la izquierda.
Kent Beck Mike Beedle Arie van Bennekum Alistair Cockburn Ward Cunningham Martin Fowler |
James Grenning Jim Highsmith Andrew Hunt Ron Jeffries Jon Kern Brian Marick |
Robert C. Martin Steve Mellor Ken Schwaber Jeff Sutherland Dave Thomas |
La tendencia en el desarrollo del software se está invirtiendo. Está claro que frente a la rigidez del proceso de desarrollo anterior, debiera anteponerse un proceso ágil para que junto a la colaboración intensiva con el cliente éste nos dé las claves exactas para alcanzar la excelencia en los desarrollos.
Después de leer algunas cosillas sobre este tema y sobre lo que me he propuesto investigar mucho más, resumiría que el desarrollo ágil consiste sobre todo en los siguientes puntos:
- Evitar tomas de requisitos iniciales muy largas y complicadas, que consigan sobre todo ponerse excesivas barreras. Este tiempo se deberá reutilizar en el proyecto de cara a documentar exhaustivamente y a adecuarse a las necesidades del cliente. Cuantas veces nos hemos dicho: es que el cliente no sabe lo que quiere! Ese también es nuestro trabajo, descubrir qué es lo que realmente necesita.
- Poner en marcha cuanto antes una primera versión de la aplicación para que todos los agentes interactuen los unos con los otros. Si tenemos un punto de partida y sucesivos puntos de partida ya hemos avanzado mucho.
- Colaboración una vez más es la palabra el software queramos o no lo desarrollamos para el cliente para sus usuarios y ellos nos ayudarán en el proceso sabiendo que es su Software. Debemos hacerle sentir participe y creador del mismo.
- El proyecto se cerrará seguramente antes, puesto que el cliente ha ido constatando que es exactamente lo que necesita y le estará sacando partido ya antes del cierre. Así como también la resistencia al cambio de todos los usuarios será casi inapreciable.
Pensar que estoy aprendiendo así que necesitaria «grandes» aportaciones, pero como muchas veces he mencionado en lo que se convierte este blog es, en una plataforma para el aprendizaje. Muchas veces me sirva más bien de bloc de notas a las que recurrir en cualquier momento ;=)
De todas forma tras la aportación de los cuatro valores anteriores, los principios que posteriormente describían son los siguientes:
- Nuestra principal prioridad es satisfacer al cliente a través de la entrega temprana y continua de software de valor.
- Son bienvenidos los requisitos cambiantes, incluso si llegan tarde al desarrollo. Los procesos ágiles se doblegan al cambio como ventaja competitiva para el cliente.
- Entregar con frecuencia software que funcione, en periodos de un par de semanas hasta un par de meses, con preferencia en los periodos breves.
- Las personas del negocio y los desarrolladores deben trabajar juntos de forma cotidiana a través del proyecto.
- Construcción de proyectos en torno a individuos motivados, dándoles la oportunidad y el respaldo que necesitan y procurándoles confianza para que realicen la tarea.
- La forma más eficiente y efectiva de comunicar información de ida y vuelta dentro de un equipo de desarrollo es mediante la conversación cara a cara.
- El software que funciona es la principal medida del progreso.
- Los procesos ágiles promueven el desarrollo sostenido. Los patrocinadores, desarrolladores y usuarios deben mantener un ritmo constante de forma indefinida.
- La atención continua a la excelencia técnica enaltece la agilidad.
- La simplicidad como arte de maximizar la cantidad de trabajo que no se hace, es esencial.
- Las mejores arquitecturas, requisitos y diseños emergen de equipos que se auto-organizan.
- En intervalos regulares, el equipo reflexiona sobre la forma de ser más efectivo y ajusta su conducta en consecuencia.
Traducción extraida de la Wikipedia
Como veis son principios muy simples pero eso sí que con esfuerzo parece que traerán grandes beneficios en el desarrollo de cualquier software, puesto que siempre se necesita mucha evolución, todo cambia muy rápidamente.
Seguiremos avanzando en todo esto pero os adelanto un vídeo que aunque tiene un calidad pésima está bastante bien sobre la metodología SCRUM, que como se menciona en el vídeo es la metodología utilizada por Google y Microsoft entre otros.
[youtube=http://www.youtube.com/watch?v=N5gcr8B-xoc]
3 respuestas
¡Únete a la revolución tecnológica en Internet, participa! http://ping.fm/cq3YK
Cuando quieras cuentanos más sobre este proyecto
Ser agil es una actitud en la vida, que luego puedes aplicar al software, a los hijos y muchos otros campos de la vida…
Lo mas importante es practicar la teoria, y aprender rapido de los fallos para entrar en el circulo de la mejora continua.
Ya has hecho lo mas dificil que es comenzar!
Juanjo