# ¿Qué Es Waterfall?

*¿Qué hace que Waterfall sea inadecuado para el desarrollo de software moderno?*

2024-08-01 | `agile` `software-design` `team-management` `productivity`

> 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 retroalimentación 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.

---

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 retroalimentación 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:

![Waterfall img from Comic Agile](/images/blog/2024-08-01/waterfall.jpg)

## 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.

---

![agile vs waterfall](/images/blog/2024-08-01/footer.jpg)

## 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 la retroalimentación 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 retroalimentación 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 la retroalimentación.
- **Mejora continua**: Siempre busca formas de mejorar.

> Lee el [Manifiesto Agile](https://agilemanifesto.org/) original.

### ¿Por dónde puedes empezar?

Como desarrollador, puedes impulsar tu agilidad sumergiéndote en [pair programming](/es/blog/effective-pair-programming/) y [TDD](/es/blog/test-driven-development/).

- Con pair programming, dos desarrolladores trabajan lado a lado, lo que significa que obtienes retroalimentación instantánea 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í](/es/readings/extreme-programming-explained/#practices).

> La clave es colaboración, pequeños pasos y retroalimentación rápida en todo lo que trabajas.

## Mi experiencia con Agile

He [hablado](/es/talks/) 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](https://phpconference.com/mixed/update-your-team-to-be-more-extreme/) [Berlín, Alemania] (EN)
- 2022-09-16 | [Code Talks](https://codetalks.de/speakers#speaker-985?event=7) [Hamburgo, Alemania] (EN)
- 2022-10-26 | [International PHP Conference](https://phpconference.com/mixed/update-your-team-to-be-more-extreme/) [Múnich, Alemania] (EN)
- 2022-12-21 | IES Ginés Pérez Chirinos [Murcia, España] (ES)
- 2023-01-19 | [devm.io](https://devm.io/update-your-team-to-be-more-extreme/) [Remoto] (EN)
- 2023-07-28 | [WeAreDeveloper World Congress](https://www.wearedevelopers.com/world-congress) [Berlín, Alemania] (EN)

### WeAreDevelopers World Congress en Berlín

{{ youtube(id="dqtAyl-SvaY") }}
