Desarrollo iterativo. Construcción incremental. Como quiera que lo llames, el modelo de cascada del desarrollo de software es ampliamente adoptado porque permite una mejora continua a través de ciclos repetidos sin depender de una línea de meta establecida.
Pero como señala Ogi Kavazovic, en el B2B, aunque tengas una gran tecnología subyacente y una gran experiencia, todavía puedes perder frente a un competidor que esté haciendo un mejor trabajo en la venta del futuro. En otras palabras, tus clientes no están comprando tu proceso. Están comprando tu producto. Y quieren saber qué esperar del producto con el tiempo.

Necesitas que los desarrolladores de software efectivos piensen como los arquitectos. Pero sólo pueden trabajar con la dirección que se les da.
Esencialmente, se necesita que los desarrolladores de software efectivos piensen como los arquitectos. Los constructores de casas no se limitan a saltar y ver cómo resulta una casa con el tiempo. Tienen que considerar los cimientos y el marco y dónde deben ir las ventanas. Pero sólo pueden trabajar con la información y la dirección que se les da.
Por eso vamos a mostrarle los peligros de confiar en la iteración, y también cómo convertir la iteración en una ventaja para su equipo.
El problema
Este es el asunto con la planificación iterativa y la implementación iterativa son dos bestias muy diferentes. Y los problemas surgen cuando esas dos se mezclan como igualmente beneficiosas para su equipo de desarrollo.
¿Quieres la distinción en una cáscara de nuez roma? La iteración a nivel de implementación es una herramienta poderosa, mientras que la planificación iterativa es altamente destructiva para el proceso de ingeniería.
Su equipo es capaz de completar proyectos a gran escala y de implementar cambios a gran escala. La implementación iterativa les permite alcanzar un objetivo final en un proceso productivo y funcional. La planificación iterativa, sin embargo, lleva a un arrastre de alcance y a un objetivo final eternamente cambiante. Y puede desmantelar la moral de sus ingenieros.
Así que vamos a ver cómo puedes diseñar un camino de desarrollo más inteligente para tu equipo a través de la implementación iterativa.
La interminable construcción
Hablando de arquitectos: desarrollar software es muy parecido a construir una nueva casa por etapas. Digamos que quieres construir una habitación básica de cuatro paredes en la que puedas vivir inmediatamente. Mientras vives allí, estarás expandiendo la casa con nuevas adiciones y características: nuevos dormitorios, plomería y cableado, un segundo piso.
Hay muchas maneras de abordar la construcción de esa casa. Y probablemente querrás la estrategia que maximice la fluidez entre las etapas tanto para los constructores como para los residentes, mientras se minimiza el trabajo duplicado y el desperdicio de recursos. Es una planificación inteligente.
Las «ciudades fantasma» de China – arquitectura sin el futuro (o los usuarios) en mente
Continuemos con la analogía de la construcción. Con la construcción de una casa, la iteración a nivel de planificación podría verse así:
- Ronda 1: Construir una casa.
- Ronda 2: Construir una casa con dos dormitorios.
- Ronda 3: ¿Sabes qué? Una casa con dos dormitorios debería tener dos baños.
- Ronda 4: Me gustaría tener tragaluces en los baños. Incluso en el que ya has construido abajo. Mueve los baños a otro lugar si es necesario.
- Ronda 5: Una cocina estaría bien. Añadamos una.
- Ronda 6: ¿Por qué no está terminada esta casa todavía?
Con cada nuevo paso, el arquitecto tiene que rediseñar toda la casa para adaptarse a las nuevas adiciones. Vemos este problema en el desarrollo de software, también – cuando se trabaja con directivas de tamaño de mordisco, es fácil para alguien de marketing o ventas (o incluso el personal de ingeniería) decir, «Oh, tengo una idea. Añadamos la Característica X a la próxima generación en lugar de lo que habíamos planeado hacer».
Y nunca llegas al final.
Eso no quiere decir que su producto no pueda evolucionar. Pero emplear una implementación iterativa en lugar de una planificación iterativa significa que todo el proceso de desarrollo puede depender de la inteligencia, las habilidades y la visión de su equipo. Y eso, a su vez, valora las habilidades de su equipo y aumenta su sentido de contribución.
Plantilla para un camino de desarrollo más inteligente
Esto es lo que puede hacer para capacitar a su equipo: abogar por una visión completa de sus proyectos desde el principio. Tener el panorama general a su disposición es una excelente manera de que entiendan el resultado que su compañía quiere.
Por ejemplo, en lugar de empezar con «Construir una casa», su equipo puede empezar con la directiva de «Construir una casa de dos habitaciones, dos baños con cocina, cuarto de juegos y patio exterior».
Incluso si empiezas con cuatro paredes y un techo de paja, los arquitectos saben desde el principio que un dormitorio se añadirá a esa pared, y un baño se adjuntará desde allí, y así sucesivamente. Así que no pondrán una viga de soporte donde estará una futura puerta. Seguirán adelante y completarán el trabajo de fontanería. Están planeando con antelación para mejorar la eficiencia más tarde.
La «Mansión Redneck» (en realidad un escenario de teatro al aire libre) nos recuerda varias características enlazadas construidas sin un plan escalable.
Por eso es clave para tu equipo saber cuál es el objetivo final de un producto en términos claros y tangibles. Entrégales un documento que diga lo que quieres al final. De esa manera, los desarrolladores tienen un punto de referencia para la visión final del proyecto. También ayuda a evitar el deslizamiento del alcance. El objetivo es siempre alcanzar el objetivo, en lugar de ir en espiral en direcciones nuevas y no deseadas.
La planificación iterativa tomaría este proceso y lo dividiría en micro trozos, dos semanas, un mes cada vez. Cuando tus objetivos de diseño son tan a corto plazo, tu equipo pierde de vista el final del juego.
En su lugar, dibuja una línea en la arena con la especificación. Su esfuerzo de desarrollo es entonces lo que sea necesario para alcanzar esa línea. Claro, el proceso es una negociación con el producto y las empresas sobre la rapidez con que necesitan el producto y lo que están dispuestos a sacrificar para conseguirlo a esa velocidad.
Pero una vez que tienes esa negociación, el producto sale cuando está listo. Toma el tiempo que sea necesario – dentro de un marco de tiempo aceptable – y luego sale por la puerta como estaba previsto, no reimaginado en el olvido. En cambio, se pule y se refuerza a través del proceso de aplicación iterativo.