Ruby is the language: Rails, Camping and Merb are frameworks.

Java is the language: Spring/Struts/Velocity are frameworks.

PHP is the language: CakePHP, Kohana, Drupal, Joomla, WORDPRESS, CodeIgniter  (might as well chuck Moodle in there too while we’re on the case) are frameworks.

There’s a load more, Wikipedia has a handy list.

I can create an application in Ruby On Rails, deploy it and have it working.  I still don’t know the language to the level that I know Java.  It’s good but it’s nowhere near to the level of some who I know.

Learning the language and learning a frameworks are two completely different things. Over the last five years I’ve noticed a lot of reliance on frameworks to take the grunt work out of the time consuming, boring and seemingly unrequired.

There’s a trade off, control.  Once you place your development cycle within the constraints of a framework you are playing by another set of rules.  It’s usually at this point where tightening up a production environment becomes a big issue.  We read books telling us that “SELECT *” is bad in SQL. So why are we happy to let frameworks dictate the queries? If the core code was put together well (decent data access objects (DAO) anyone?) then there shouldn’t be any major headaches.

Frameworks also start to fill the gaps of knowledge and that’s where things come unstuck very quickly.  I can normally start to see the true level of a developer once I start asking the horrid questions at interview level. Filling the gaps of poor SQL knowledge is usually starting point. Not know design patterns is usually another.  It’s all very well you say you do MVC but if someone actually asked you to write your own MVC could you actually do it?

There are some guys I know in various corners of the world that just know the language so well that they don’t need frameworks. They do use frameworks but have the full knowledge of what to do, what to tweak and how to get the best out of things.  That’s the true talent of using frameworks….