¿Qué es Waterfall?

Waterfall es como seguir un camino recto donde te mueves de un paso al siguiente en un orden definido — como el agua fluyendo por una cascada a través de diferentes etapas.
El problema es que cada paso puede llevar mucho tiempo y recursos para completarse. Además, no recibes feedback hasta que toda la etapa está terminada, lo que puede llevar a mucho tiempo desperdiciado. Esto es especialmente complicado en el desarrollo de software, donde las cosas siempre están cambiando y evolucionando.
Usualmente sigue una secuencia directa como esta:

La realidad de Waterfall
Waterfall puede ser como el comunismo en teoría — parece perfecto en papel pero no funciona en el mundo real.
- Los clientes a menudo no saben exactamente lo que quieren.
- Los requisitos están constantemente cambiando.
- Los negocios necesitan adaptarse rápidamente a los cambios del mercado y las necesidades de los clientes.
- El software necesita ser flexible para mantenerse al día con estos cambios.
Entonces, en un mundo en constante cambio, Waterfall puede realmente perjudicar a un negocio. Tiende a frustrar a los desarrolladores y equipos, y también puede molestar a los clientes y a los negocios que pagan por el software. Esto usualmente lleva a retrasos y costos adicionales.
Por qué las empresas aún usan Waterfall
Incluso con sus problemas, muchas empresas aún usan Waterfall porque parece directo y lógico. Esto les hace reacios a tomarse el tiempo de aprender Agile. Además, conseguir que la dirección acepte cambiar a Agile puede ser difícil de vender, especialmente ya que requiere una inversión en tiempo y aprendizaje.
El gran problema es cuando los superiores dictan exactamente cómo deben trabajar los equipos, llevando a la microgestión. Esto arruina la flexibilidad que Agile aporta. Por lo que he visto, esto es un problema común.
Mirando hacia atrás, cambiar a Agile podría haber solucionado muchos problemas.

Por qué se creó Agile
Agile fue creado para superar las limitaciones del método Waterfall. Se enfoca en la interacción constante con clientes y equipos.
Agile construye equipos autónomos y responsables que manejan tareas de principio a fin, reduciendo tiempo y recursos desperdiciados. Enfatiza la flexibilidad, la colaboración y el feedback del cliente.
A diferencia de Waterfall, Agile usa desarrollo iterativo, dividiendo proyectos en pequeños sprints o iteraciones manejables que duran de 1 a 4 semanas. Cada ciclo incluye planificación, desarrollo, pruebas y revisión, con el objetivo de entregar valor rápidamente y recopilar feedback para mejorar.
Aspectos clave de Agile
- Desarrollo iterativo: Trabaja en pequeños fragmentos y ajusta sobre la marcha.
- Colaboración con el cliente: Mantén la comunicación con los clientes para asegurar que están satisfechos.
- Equipos multifuncionales: Equipos con diferentes habilidades trabajando juntos.
- Planificación adaptativa: Mantente flexible y ajusta los planes basándote en el feedback.
- Mejora continua: Siempre busca formas de mejorar.
Lee el Manifiesto Agile original.
¿Por dónde puedes empezar?
Como desarrollador, puedes impulsar tu agilidad sumergiéndote en pair programming y TDD.
- Con pair programming, dos desarrolladores trabajan lado a lado, lo que significa que obtienes feedback instantáneo y resolución de problemas compartida, llevando a mejor código.
- TDD, por otro lado, implica escribir tests antes del código, lo que ayuda a especificar lo que quieres hacer, enfocándote en pequeños pasos.
Juntas, estas prácticas hacen tu proceso de desarrollo más flexible, colaborativo y de alta calidad, encajando perfectamente con el enfoque de Agile en ajustes rápidos y mejora continua. Ve más prácticas aquí.
La clave es colaboración, pequeños pasos y feedback rápido en todo lo que trabajas.
Mi experiencia con Agile
He hablado sobre Agile en varios eventos tecnológicos y lo he explorado en profundidad porque me apasiona cómo puede potenciar a los equipos de software. Cuando se hace bien, Agile puede cambiar completamente cómo trabajan los equipos, haciéndolos más rápidos, más eficientes y mejores en entregar lo que los clientes y negocios realmente necesitan.
- 2022-06-26 | International PHP Conference [Berlín, Alemania] (EN)
- 2022-09-16 | Code Talks [Hamburgo, Alemania] (EN)
- 2022-10-26 | International PHP Conference [Múnich, Alemania] (EN)
- 2022-12-21 | IES Ginés Pérez Chirinos [Murcia, España] (ES)
- 2023-01-19 | devm.io [Remoto] (EN)
- 2023-07-28 | WeAreDeveloper World Congress [Berlín, Alemania] (EN)
WeAreDevelopers World Congress en Berlín
Posts relacionados
- ¿Qué mata la agilidad? ¿Por qué Agile si ya haces Scrum, Kanban, SAFe o Waterfall?
- ¿Ignorar Scrum para ser más Agile? Matando la agilidad con reuniones excesivas
- Actualiza a tu equipo para ser más extremo ¿Cómo puedes ayudar a tus compañeros a abrazar el cambio?
- Pair programming efectivo Abrazando prácticas de calidad en tu cultura de ingeniería
- Test-Driven (Development) ¿Qué tiene de desafiante?
Lecturas relacionadas
- Extreme Programming Explained por Kent Beck
- Clean Agile por Robert C. Martin
- Peopleware por Tom DeMarco, Timothy Lister