En la entrada anterior argumentaba acerca de diseñar toda la base de datos al inicio del proyecto, y expresaba que esta aproximación no es muy adecuada bajo un enfoque agil, entonces ¿Cómo se debería hacer esta tarea?
Hace un tiempo, la empresa para la que laboro invito a Ivan Vallejo (Es uno de los pocos en el mundo, que ha escalado los picos mas altos sin ayuda de un balón de oxigeno), para que nos diera una conferencia. Hasta ese momento no sabia mucho (o nada) acerca del montañismo.
Él nos explico como hacía para escalar una montaña tan grande como el Everest, nos conto que el esfuerzo que se requería era muy alto, y que cada vez que tenia que escalar alguna montaña, tenía que prepararse cerca de un año, subiendo otras montañas, corriendo, etc.
Hasta ese momento yo pensaba que escalar una montaña implicaba una vez que se estaba lo suficientemente preparado, se iba a la montaña y se escalaba en un solo tramo hasta llegar a la cima; lo que nos mencionó ese día fue diferente, él nos contaba el proceso que se seguía, primero se hace un asenso hasta un punto en el que se quedaban un tiempo para aclimatarse, luego bajaban. Pasaban unos días y subían nuevamente acampando en el primer punto y luego subían aún mas alto acampaban y se aclimataban, luego volvian a bajar y repetian el proceso para poder aclimatarse, hasta que finalmente atacaban la cima. Como puede notarse, todo esto demoraba bastante tiempo, y no era (como yo creia) prepararse e ir a atacar directamente la cima.
Bueno, y todo esto que menciono ¿que tiene que ver con el diseño de base de datos?, pues mucho, me parece que el software en general y la base de datos en específico se deberían desarrollar utilizando esta aproximación.
Primero, antes de afrontar un proyecto de software nos deberiamos preparar (no me refiero a la Universidad), en la tecnología que utilizaremos (o que utilizamos). Podriamos hacer esto asistiendo u organizando dojos (de programación, integracion continua, administración de base de datos, etc), asi nos aseguramos que tenemos los conocimientos frescos y vamos entrenando para afrontar el proyecto. Y no solamente hacer los entrenamientos antes de iniciar el proyecto, tambien cuando el proyecto esta en marcha.
Al comenzar la construcción del software (y por lo tanto de la base de datos), se debe hacer de a pocos, subir un tramo (y aclimatarnos), para luego seguir sabiendo que estamos haciendo las cosas bien. Esto lo hacemos con las revisiones constantes del producto (reviews). Una vez que sabemos que el tramo que hicimos esta correcto y cumple con las espectativas del cliente avanzamos.
Luego de haber avanzado correctamente es bueno descender del lugar en el que estamos y revisar que es lo que el equipo hizo correctamente y lo que se puede mejorar, esto seria hacer retrospectivas, luego subir nuevamente pasar por el punto que entregamos y construir mas software valioso para la empresa.
Debemos repetir este proceso hasta que llegue el momento de atacar la cima (finalizar el proyecto) y ver que en realidad nos faltaba un tramo pequeño, porque todo el software que hicimos lo entregamos y los usuarios dieron su conformidad.
No estoy diciendo nada nuevo, simplemente estoy haciendo recuerdo que existen muchas herramientas que nos ayudarán a construir software de calidad.




