>>Logical n-Tier, deployed on one physical tier, leaves you much better positioned for flexibility.
>
>Like John said, not every project demands that flexibility. Besides 2 years down the road any flexible n-Tier app won't mean squat when its time to scale ite, simply because the code you wrote back then will be a joke compared to the avialable.. and uncompatiable.. technologies and methods of tomarrow. Keep that in mind when you suggest what is mandatory in each project.
Excellent point. Just look at all those people who built ADO application using ADO as their data layer to hold and persist the data states. With .net - out the window <bg>...
However, if you design your apps smartly you can usually re-tool pretty quickly even if the architecture completely changes underneath you, plus you have a clean blue-print to work with.
In general n-Tier means much less code where the business logic is concerned, which means you clean up the framework and the business layer probably can live on with little changes.
I've been down that road a few times, and it's definitely worth to go that route even for small projects because of the reusability and flexibility!
OTOH, it requires skills and understanding and unfortunately those things come more by experience than anything you read in a book or learn in a class...