Why Frameworks Suck (redux)
Last November, I wrote a post entitled "Why Frameworks Suck". The title was meant to be a little over-the-top but people took it at face value and the title alone isn't an accurate reflection of my feelings on the matter. The post was meant to describe why frameworks can suck and in what situations they don't. But that point got lost. Frameworks are, of course, very practical things.
So as not to confuse people any further, I'd like to clarify the key points:
Frameworks in any language can be a very useful thing but I'd never recommend using one without understanding how it works. All software is opinionated. In other words, if you use other people's code, know why things behave the way they do.
Like learning a new language
Because frameworks have a syntax all their own, you have to learn what the method calls and parameters are. It's not that you can't learn them or that it's a bad thing and you should never use a framework. It's simply that there is an inherent learning curve to them above and beyond the language it's written in.
Will it solve a problem?
This is somewhat in relation to my last point. If you've been chugging along doing your own thing and suddenly see the popularity of framework X, you might think to yourself, "Gee, I wonder if it will do what I want it to?" Will you necessarily get that from reading a FAQ or documentation? I'd suspect you'd really only discover the nuances during the actual development of a project. Problem is, you could be halfway through a project before you realize that the framework is becoming more of a hindrance than a helper.
I originally used Ruby on Rails as an example and called it the exception but I was inaccurate. The advantage Ruby on Rails has is that those currently learning Ruby are likely doing so because they are learning Rails. It's not like you're learning one and then deciding whether you need to learn the other. Does the case apply to Django? Possibly. But there's also .NET. Learning C#? Chances are, you're learning .NET.
PHP doesn't have that equivilant. Yes, there are frameworks but there doesn't yet seem to be that de facto framework.
So, do frameworks suck? Well, I suppose that's not for me to decide.