So yestereday I'm reading my daily RSS feeds when I encounter Ted Neward's post on a comment that Scott Hanselman made during the p&p Summit in Redmond.  After reading this post, I shot Nick a message asking him to read it and see what his toughts were on this...you can find his response here.

I couldn't agree more with Scott, Ted and Nick.  Here's why

...

In my old Java dev days, we utilized a lot of open source technologies (Http Commons, log4jBouncy Castle, etc.) to help speed up our writing of code (just as Scott did with log4net).  The company I worked for was not a software shop, so we had to make due where we could.

Because of the heavy usage of different technologies and always wanting to have the option of changing them as we pleased, we created something we called the onion: a code framework with so many layers that everytime you peel one off, you cried a little.  To put into perspective, it's a factory that creates factories that creates factories (an abstract abstract-factory factory?).

Was this the right approach? ... maybe...Could have done a simpler design (YAGNI)?  ... maybe ... Can this be repeated in .NET? ... maybe ...

Remember bad design practices can be platform agnostic.

...

At the end of the day we have to remember that when writing an application you need to keep in mind it's long-term vision (new features, maintenance and delivering business value).  If it means using abstraction and introducing (a) layer(s) into the picture so be it.  However, make sure you don't go too crazy with it.