If you're a decent enough programmer (web development is really easy compared to other fields) and you really want versatility, coding from scratch without using a framework is still the best decision.<p>This is not necessarily true for non web apps. I love Cocoa for instance and the MVC pattern is great for most kinds of apps. But not for the web, IMHO. It's overkill.<p>There are too many unnecessary abstractions from the protocols. The LAMP stack already gives you everything you need. For instance, PHP with mod_php already is a template processor. There's no need to build another one on top of it. Unless you don't know what you're doing, which is bad anyway.<p>I still prefer to parse the query string myself, to define my SQL queries (and most of the times a single query can replace 4-5 queries generated from a framework so apps are much faster) and to keep the data as clean and separated from the code as I can (data is always much more important than code and it's much better if it is code agnostic).<p>With web frameworks there's a lot of magic and it's faster to have a web app up and running. But it's a pain as soon as you want to modify the default behaviors. At least in my experience.
This article could omit the words "PHP" and "web" until it starts listing the specific frameworks and still be valid.<p>I'm inclined to agree with the posts opposing the use of a generic framework for a very scalable or complex application; they're usually not for that. What frameworks ARE for is small to medium applications with low budgets.<p>I do some contract work on projects with budgets in the $500-2000 range. For projects like that, frameworks like Rails or Django save a lot of time over writing it in scratch (even in Lisp, which I've done a couple times).
It's amazing how all-over the place these comments are on frameworks! Maybe it's because frameworks vary so much in their goals, weight and architecture.<p>There are really 2 kinds of performance; latency and throughput. Latency is how fast a single request is served; throughput how many requests you can serve concurrently. A good framework has a noticeable but negligible effect on latency (which also goes down all the time as the framework improves and hardware gets faster), yet also makes scalability <i>easier</i> by helping you abstract out the parts that make it scalable. If the framework you're using makes it hard to scale horizontally, that's a failure of <i>that</i> framework, not of the concept of frameworks.<p>I also disagree on the size of web sites that frameworks are useful on. I see a lot of comments like "ok for small/medium sites but bad for large sites". Why would frameworks suddenly get bad on a large site? For performance reasons? Architectural reasons? If either of these happen to you then you've simply chosen the wrong framework.<p>The argument that "an organizational system and set of useful libraries for programming web-related tasks" all of the sudden stop working once a site reaches a certain size is bogus. It might be true for a framework, but it won't be true for all of them.<p>I ended up writing a php framework (<a href="http://phocoa.com" rel="nofollow">http://phocoa.com</a>) in order to write <i>less</i> code. Frameworks give you leverage. They only box you in or cause scalability problems if they're architected poorly. I have really enjoyed the experience of building a framework as well as using it. I have been writing web apps, mobile apps, and desktop apps of all kinds for nearly 15 years and so I have had broad exposure to a variety of development stacks, from nothing to rich frameworks. Of course it's just my personal opinion, but in my experience a well-written framework is always better than doing it yourself, and a poorly-written one is almost always worse than doing it yourself.
There's also NOLOH (<a href="http://www.noloh.com" rel="nofollow">http://www.noloh.com</a>), which allows you to create sophisticated web sites and web applications easily and intuitively in a single development language.<p>Disclaimer: I'm a co-founder of NOLOH.