Xuaps

Silla oxidada

CRUD driven design

Estábamos sentados en el exterior de la biblioteca general en la universidad de Málaga. Álvaro quería saber cómo empezaba yo a diseñar una aplicación. Acudía a mi, supongo, porque como yo estaba estudiando la carrera se suponía que debía haber adquirido conocimientos secretos. De aquella yo ya había construido mi primer producto. Un catálogo web para inmobiliarias implementado en PHP con todo el spaguetti que estaba a mi disposición. Como veis, un referente.

La respuesta era clara, había que empezar modelando la base de datos. Formas normales y luego desnormalizar hasta hacerlo encajar con el código que le pondríamos por encima, todo un festín.

Eso fue lo que me enseñaron en la carrera y así es como empecé. Hoy tengo una profunda aversión por las tablas, por mezclar conceptos, por contaminar mi dominio, por modelar todo como un CRUD. La influencia de las bases de datos ha calado tanto que los usuarios de una aplicación no pueden emitir una oferta a un cliente sino que tienen que CREAR el cliente, LEER las opciones, CREAR una opción, CREAR la oferta, LEER la opción, ACTUALIZAR la oferta. Llevando esta metáfora a la interfaz, redefiniendo así el lenguaje y las reglas del dominio. ¿Y qué pasa cuando la aplicación crece en complejidad? Pues depende, he hecho y visto de todo: todo a la base de datos, todo al controller o ¿por qué no? todo en la interfaz. Lamentablemente no todo el mundo comparte esta forma de pensar y aunque creen que lo hacen, es fácil descubrirlos pensando en añadir una propiedad “id” a toda entidad. Los frameworks “a la rails” y la sobrecarga sobre el concepto del modelo no han ayudado mucho a eliminar esta brecha. Tampoco me da la impresión de que la universidad esté haciendo su trabajo. Ya sabéis que la universidad no es el único sitio donde adquirir conocimientos y, con frecuencia, tampoco el mejor.

Sea como fuere necesito vuestra ayuda. Voy a seguir escribiendo algunos post sobre cómo diseño software y me gustaría saber cómo lo hacéis vosotros.

Y, si mientras alguien dibuja un diagrama de secuencia, escucháis decir “y aquí ponemos una tabla”, ¡huid insensatos!.