Molti i team hanno l'abitudine di iniziare a sviluppare un'applicazione partendo dalla progettazione del database e costruendo su di esso le classi partendo dal DAL e risalendo fino all'interfaccia utente. Questo approccio (Bottom Up) porta a due conseguenze:
1) L'interfaccia utente è relegata alle fasi finali e la sua realizzazione viene compiuta in fretta secondo le logiche e i meccanismi dettati dagli strati inferiori. Questo vuol dire che spesso per compiere un'operazione anche semplice l'utente deve fare diversi "giri" poco naturali solo perchè sotto il metodo che riceve l'input ha una certa firma e cambiarlo vuol dire modificare tutti gli strati dalla UI fino al DAL.
2) Gli strati più bassi, DAL e Business Layer, sono composti da una moltitudine di metodi spesso inutili, non indipendenti e difficili da usare. Questo perchè durante lo sviluppo del DAL non si hanno ancora le idee chiare su come l'utente opererà al livello della UI e quindi i metodi scritti risultano essere di basso livello e poco "usabili" anche per il programmatore.
Invito tutti a provare a ribaltare l'approccio partendo insieme all'utente a disegnare l'interfaccia (anche su carta va benissimo) e progettare gli altri strati dell'applicazione sulla base delle richieste dell'utente. In questo modo tutto ciò che andrete a scrivere è orientato a ciò che deve essere fatto evitanto la proliferazione di metodi inutili e difficili da usare.