When I first encountered CSS Frameworks, I was a little intrigued, but dismissed the whole notion because it looked overly complicated and the whole code structure was (at first) very difficult for me to grasp. Add that to the fact that the general concept of designing using a grid for some reason escaped me, and you can see why I rejected the whole idea.
But bordom being what it is, I decided to one day do some experiments to see what all the commotion was about (by now, CSS Frameworks were gaining in popularity and many people used them). All I can say from the experience is that I was impressed!
I tried a few frameworks out, among them Blueprint CSS, YUI Grids CSS, and YAML. The one that stuck with me, however was 960.gs. I was never before able to create basic layouts so rapidly. Adhering to the grid made everything look balanced and nicer, it seemed, and I was soon churning out designs left and right.
It was a while before I realized, that using a framework imposed certain limits on how I created my websites. As I became more adept at web design and was aware of semantic naming conventions, it’s obvious that a framework cannot allow you to have HTML that actually has any meaning. Well, I guess you could add extra classes to add that semantic meaning that’s missing from frameworks, but that just adds more to your code. You might as well add inline CSS styles to your HTML because essentially, that’s what you are doing.
Also the bigger downside of using frameworks is that most of the time, you wont need to have all that extra CSS that is included in the framework. A framework is written to accomodate every possible layout you can think to create. A simple two-column site, will never need 5.4KB of CSS.
Despite all the negatives, frameworks helped me become a better designer/coder. I was able to look at the CSS and see how others write CSS and how they solve those difficult problems. For me, it was a very good learning tool, especially when it came time to wrap my head around grid concepts and vertical rhythym.
Frameworks are thus a starting point, both for learning about CSS and grid-based design and for rapid prototyping of a project. It should never be used as a final solution.