In realtà la frase “programming pornography” la ho sentita da Greg Young durante il DDD Day, ma si allinea ad uno degli altri importanti concetti che sono emersi durante il campus DDD. In questo caso Alberto ha sottolineato il fatto di come nelle discussioni nei gruppi DDD troppo spesso si parla di tecnicismi e nella maggioranza dei casi si parla quasi sempre di ORM.
Il concetto in questo caso è che il vantaggio maggiore del DDD è il metodo di approcciare il problema, ovvero cercare di sviscerare le logiche ed individuare le Entità che possono meglio modellare le logiche del dominio reale. Naturalmente, dato che l’approccio è principalmente teso alla “scoperta”, il primo modello difficilmente sarà quello giusto, per cui è necessario per lo meno nelle fasi iniziali farne più di uno e scegliere quello che “ci soddisfa maggiormente”, capendo poi che molto probabilmente verrà comunque cambiato. Il vero valore quindi è nella stesura del modello e non nella sua implementazione, per cui bisognerebbe cercare di dedicare più tempo alla modellazione, cercando di non farci “traviare” dagli aspetti tecnici.
Purtroppo questo accade perché la community DDD è giovane, non esiste ancora da nessuna parte una “reference implementation” e difficilmente ne esisterà mai una, per questo bisogna accettare che in realtà il vero valore è nel modello e la realizzazione tramite codice è “programming pornography”, che probabilmente verrà rifatta per ogni progetto. Debbo dire che io sono il primo che lamento la mancanza in rete di “codice di esempio”, che possa aiutare a parlare concretamente di DDD con del codice sottomano, ma negli ultimi tempi sto realizzando che la parte implementativa è sicuramente importantissima, ma troppo spesso diventa dominante, quando invece la parte dominante dovrebbe essere il modello e la parte implementativa un corollario.
Questo coincide con un raffreddamento del mio entusiasmo sugli ORM, che inizio a considerare talvolta degli “antipattern” che troppo spesso spostano la nostra attenzione lontano dalla ciccia. Nondimeno avere in rete delle implementazioni concrete e funzionanti di Event Sourcing, Domain Events e quant’altro, sicuramente gioverebbe a tutto il movimento, perché permetterebbe di poter dire “ok mi concentro nel modello, dato che comunque un paio di implementazioni con cui iniziare ad implementare il modello ci sono”.
Gian Maria.