Algunos pensamientos personales y experiencia:
- use nhibernate como orm, o espere por EF v4. Tekpub.com tiene un buen tutorial sobre el uso de NH. L2S y EF son una especie de caja negra: están haciendo muchas cosas, tienen buena documentación, pero no tienen un punto de extensibilidad. Si desea agregar alguna funcionalidad nueva o cambiar el comportamiento, puede hacerlo solo con NH. EF en v4 estará en un estado donde NH fue 2 o 3 años antes.
- explore todos los ejemplos de aplicaciones MVC que pueda encontrar. Muchos de ellos puedes encontrar en codeplex. Por ejemplo: CodeCampServer, WhoCanHelpMe, Storeddd
- si está pensando en construir framework (o helper) para resolver algunos problemas de infraestructura, primero busque google; es muy probable que alguien más inteligente que usted (bueno, más inteligente que yo en mi caso) ya haya tenido los mismos problemas y haya escrito una buena pieza de código en forma de marco (mapeador de objetos, validación, mensajería, ...), o simplemente blogueó sobre eso.
- usando una arquitectura nítida o fubuMvc resuelve gran parte del trabajo de infraestructura, pero el resto de la aplicación depende de su modelo de negocio.
- TDD te obligará a escribir un código bueno y fácil de mantener. Intenta usar patrones de diseño de Gang of Four y principios SOLID tanto como puedas.