Makin Maki


Desarrollo iterativo

Posted in Sin Categorizar by Yon on the 7 julio 2010
Tags: ,

Esa es la traducción mas cercana a “lean developing” que he podido encontrar y que descubrí con la lectura de Getting Real de 37 signals, aunque la idea tiene mas de 10 años. Significa establecer ciclos cerrados de trabajo a corto plazo, con pocas funcionalidades. Al terminar el ciclo se prueba con usuarios lo realizado y se establecen las funcionalidades del siguiente ciclo.

De esta manera, se enfoca el trabajo en dar las funcionalidades clave que dan valor a tu plataforma y no se pierde el tiempo con una cantidad abrumadora de funcionalidades, alguna de las cuales nadie va a usar. También se logra tener una plataforma funcionando desde el final de la primera iteración, aunque tenga pocas funcionalidades (lo cual es especialmente importante en el caso de una start-up en internet).

Una ventaja frente al clásico modelo de desarrollo en cascada, es que al final de cada iteración se han tenido que resolver todos los problemas de la misma para darla por concluida, con lo cual se detecta cualquier punto de bloqueo antes y se detecta de una manera mas clara donde se produce y a que afecta.

Otra ventaja es que los programadores son mas eficientes cuando la meta está cerca.

Desarrollar para un ciclo corto no significa perder de vista a largo plazo para donde se quiere llevar el proyecto. Se puede plantear una lista tan grande como se quiera de funcionalidades al principio del proyecto con ideas mas o menos complicadas y se irán seleccionando las que son prioritarias de este listado.

Una parte sorprendente del desarrollo iterativo es que NO hay que pensar en como se resolverán problemas/funcionalidades futuros/as. En cada iteración puede haber cambios en cualquier parte de la aplicación: diseño, modelo de datos, controladores… Por ello, habrá que buscar las herramientas que: 1) permitan una abstracción de las distintas capas para que los cambios se propaguen de manera sencilla; 2) tengan una buena batería de pruebas para comprobar que cambios en las siguientes iteraciones no estropean algo realizado anteriormente.

Mas sobre desarrollo iterativo y programación extrema: