Ringrazio il mio collega per avermi suggerito i tre essays su Cose as Design di Jack W. Reeves. mi hanno dato alcuni spunti di riflessione e ne consiglio vivamente la lettura.
L'autore sostiene ed argomenta un concetto secondo me tanto semplice quanto vero: Il design è il codice. L'articolo è stato pubblicato nel 1992 sul C++ Journal, un periodo in cui era diffusa l'idea che il coding fosse un'attività di basso profilo. Un'idea passata quasi inosservata e poi ripresa da Ward Cunningham in questa pagina del wiki.
Alcune considerazioni:
Se il codice è il design, qual è il manufatto e chi lo costruisce?
E' il file eseguibile e viene costruito dal compilatore/linker (notare l'uso del termine build anche in VS)
I class diagram, UML, ecc. cosa sono?
Sono sempre strumenti di design, ma che danno una rappresentazione di più alto livello.
Ed il TDD come si inserisce in questa visione?
Il TDD serve a validare il design, cioè che il codice si comporti nel modo previsto.
In sostanza il codice è il design più dettagliato possibile quello che rende possibile la creazione fisica del nostro software. Questo spiega anche il perchè sia così difficile creare codice di qualità, non è un'attività di manovalanza, ma un'attività ingegneristica.