Yeah, I’m going there. I want to talk about frameworks again. Bear with me…

I know I’ve discussed this topic at great length before, but it keeps coming up, and I still don’t have a very good understanding of all the positions people have taken on the topic. Last time I discussed this, I jumped to my own conclusions about why some people don’t like frameworks. This turned out to be a horrible idea, because people got on the defensive instead of trying to answer the simple questions I had asked. Let me be perfectly clear: I don’t care what your position is. If you don’t like frameworks, that’s fine. I’m just sincerely curious about why you don’t. I’m in no way trying to sell you on frameworks or tell you you’re wrong for not using them. I’m just trying to understand all sides. That’s what I do.

So, with that out of the way: if you’re not a fan of frameworks, I have some questions for you. I hope you’ll take the time to answer.

  1. In your own words, why do you dislike frameworks and libraries?
  2. Do you dislike the concept of frameworks, or just the implementations of individual frameworks?
  3. Do you like frameworks for some languages, but not for others (for example, maybe you like frameworks for Ruby and Javascript but hate CSS frameworks)? If so, what languages are frameworks appropriate for, and why?
  4. Do you come from a computer science background? Have you done programming besides web programming? What languages have you used? Did those languages have frameworks available (Struts, .NET, CoreWhatever, etc.)? Did you use them?
  5. If one of your reasons for disliking frameworks is along the lines of, “they don’t help you learn the language,” (i.e. you learn to write jQuery, not learn to write Javascript) do you feel that’s a universal fault of the framework concept, or a problem of individual frameworks?
  6. If one of your reasons for disliking frameworks is along the lines of, “they’re bloated” or “they provide more than I need,” how do you justify using any software package? Do you use every function PHP provides? Do you use every feature of Photoshop? Of Mac OS X?
  7. Do you do client work or other work that has short timeframes and budgets? Or do you usually have as much time as you need to finish a project?
  8. Do you have your own library of code snippets that you re-use from project to project?

These are a few questions I have for those who aren’t a fan of frameworks. Feel free to answer as many or as few as you like. Like I said, I’m sincerely curious. You can think of this as research for a project I’m considering undertaking.

Thanks, yo.

Comments

  1. 001 // Jay // 09.06.2008 // 7:03 PM

    I’ve starting using 960 grid and I really like it alot. YUI is good for the reset. Otherwise, I think frameworks are great in general. They are there to save time and provide tools, and most frameworks allow the flexibility to use some of the features while leaving out the ones you don’t.

  2. 002 // Dylan // 09.06.2008 // 7:46 PM

    I have no objections to using CSS frameworks or any other types of frameworks for that matter. One thing I don’t like about them though is the lack of “intimacy” with your site that comes from dropping in a ton of code that does all the work. I understand that some people don’t care or don’t have the time to make their own code sometimes and either do I.

    Frameworks done right, though, can teach people a lot about web standards that they might otherwise not have known about.

    If CSS Frameworks weren’t meant to be as successful as JS frameworks then it will all work itself out in the end. I do suggest having an open mind when it comes to a new, well thought out, way of doing things when it comes to weg technology.

    On a side note. Jeff, I think it’s all your fault people get so angry about CSS Frameworks in the first place. You sound somewhat critical through your writing sometimes. haha. But knowing you through twitter, boagworld interviews, your blog, and meeting you once at World Online now Mediaphormedia I know you aren’t trying to be so critical. Keep up the good work.

  3. 003 // Eli Van Zoeren // 09.06.2008 // 8:45 PM

    It seems to me that there is a fundamental difference between CSS “frameworks” and jQuery, Django, Rails, etc. The difference is that CSS is not a programming language, per se—just a list of data—so Blueprint or 960 are not really changing the way you style a page, they are just doing some of the work for you. A true framework abstracts out a way of doing particular tasks and actually changes the way you interact with the language. Does that make sense?

    So I use JQuery every day, because it makes JavaScript useable for me by taking care of differences between browsers automatically, but I would never use a CSS framework (aside from a basic Reset stylesheet, which doesn’t count) because it is not changing the way I work with styles, but rather enforcing it’s own constraints on what I would be doing anyway.

    I think a better comparison would be between the JS or server-side frameworks and Shaun Inman’s CSS Cacheer, which actually does abstract the creation of stylesheets.

    I know this doesn’t really answer your original question, but it is something that has been bothering me whenever I read articles that lump all web-related frameworks into one category.

  4. 004 // Joe Dolson // 09.06.2008 // 8:52 PM

    Great question, Jeff - and well phrased. Since you’ve asked for responses very specifically, it seems only polite to respond! Although I’m not a perfect example of the questions you’re posing, I’m going to go ahead and answer your questions regardless. I’m not a fan of frameworks, although I don’t actually have anything specifically against them.

    1. In your own words, why do you dislike frameworks and libraries?

    I wouldn’t say that I “dislike” frameworks and libraries; however, as it happens I never use them. The issue has nothing to do with whether or not I like them, however. The question has entirely to do with the learning process, as I’ll address below.

    Questions 2 and 3 are not meaningful for me, so I’m skipping them.

    1. Do you come from a computer science background? Have you done programming besides web programming? What languages have you used? Did those languages have frameworks available (Struts, .NET, CoreWhatever, etc.)? Did you use them?

    No, I don’t. I’ve never done any programming outside of a web context.

    1. If one of your reasons for disliking frameworks is along the lines of, “they don’t help you learn the language,” (i.e. you learn to write jQuery, not learn to write Javascript) do you feel that’s a universal fault of the framework concept, or a problem of individual frameworks?

    I do feel that frameworks create a limitation of scope, forcing you to take your time to learn the framework rather than learning the language. It’s not to say that learning a framework isn’t valuable, but it does reduce your overall flexibility. The fault does lie with all frameworks, in my opinion, as I feel it’s inherent to the nature of a framework to be less complete than the language it uses.

    1. If one of your reasons for disliking frameworks is along the lines of, “they’re bloated” or “they provide more than I need,” how do you justify using any software package? Do you use every function PHP provides? Do you use every feature of Photoshop? Of Mac OS X?

    No. The capability offered by frameworks is usually very appropriate to general purpose needs - and I certainly don’t ever use every function of a given language or software package.

    1. Do you do client work or other work that has short timeframes and budgets? Or do you usually have as much time as you need to finish a project?

    Never have enough time to finish a project the way I’d ideally like to.

    1. Do you have your own library of code snippets that you re-use from project to project?

    Yes.

  5. 005 // Daniel Craig Jallits // 09.06.2008 // 9:24 PM

    I know this post was seeking comments from those those that disapprove of frameworks, but I have something to say. Programming and Scripting languages have saved me tons of time in the past and have cut project costs for my clients. CSS frameworks like Blueprint and 960 have now greatly reduced the time I spend creating site structure.

    I typically work on 4-5 projects simultaneously with another 6-9 in the “chute”. I love the fact that all my code is exactly the same from site to site. I now can look at a site I did in Blueprint and know exactly what the span is, or what the span is and how it was appended or prepended. LOVE IT!

  6. 006 // Josh Nichols // 09.06.2008 // 9:34 PM

    At first, I didn’t like CSS frameworks. I thought they had too much bloat and if you needed something different, you were repeating a lot of code, but once I got a handle on it, I was able to streamline the process to suit my own needs.

    I do think that you should be able to do your own markup without frameworks before you start using them. Otherwise, you can’t use them well. That isn’t the fault of the framework, though. It’s the problem of the programmer.

    Yes, I’m constantly on deadline, but I’m almost always given enough time to do the job right. I know it’s a luxury, but even with that job perk, I still use frameworks.

    What really sold me on BlueprintCSS is the speed in which I can build a working site wireframe. I was able to use Blueprint out-of-the-box and create a Dreamweaver template/library system that our info. architect and writer could use to build a working wireframe prototype of a site. It took me less than an hour and worked in just about every browser. It was freaking fantastic!

    I’ve settled into a nice mid-ground with the BluprintCSS framework when building a finished site. I keep the parts I like (reset, ie and typography styles) and throw out the rest (all the grid stuff). Then I fill in the blanks with the site’s custom grid (similar to Blueprint’s) and styles. It works pretty well for me and my co-workers can easily modify things later because everything’s consistent.

    So, I like frameworks as long as I understand how to do the job without them and don’t rely on them completely. They save time and keep things consistent so colleagues (and myself) can easily pick up where I left off.

  7. 007 // Torbjørn Lunde // 09.07.2008 // 2:21 AM

    I’m not using CSS-frameworks since I don’t really completely understand them or the point of them. Heard very little of them, but this article and attached comments has made me curious.

    @Josh Nichols: I’m in the process of learning webdesign, and I can’t really claim to really master CSS yet. Would you recommend me putting off using frameworks until I master CSS properly?

  8. 008 // Ben Bodien // 09.07.2008 // 3:26 AM

    Frameworks have their place when there is a specific and significant set of problems that using the native language directly would otherwise raise.

    In the case of MVC frameworks, this problem is the separation of data, logic and presentation code into isolated containers, and the introduction of ORM mechanisms which save a huge amount of time when building database backed applications (plus a number of other benefits too).

    Typical javascript frameworks deal with differences between code interpretation across browsers, while providing much easier tools for tasks such as AJAX, DOM traversal, manipulation, and element selection.

    With both of these cases the problems are clear, and avoiding frameworks in either case will leave you open to wasted time and a lot of extra hard work tackling the issues that a framework would have taken care of for you.

    In CSS land, I think the word “framework” has been adopted for a different meaning, and it’s a bit of an apples and oranges situation comparing CSS frameworks to those for javascript or MVC. From what I’ve seen of CSS frameworks, they don’t amount to much more than libraries of code snippets - default resets, basic form styles, basic typography setup, etc. I use reset sheets in every project, but I already have my own snippet files to draw from, and I don’t really think of any of that as a framework.

  9. 009 // Ben Bodien // 09.07.2008 // 3:31 AM

    @Torbjørn Lunde

    I think you’d be better off learning the basics of CSS before diving into a framework for it, because you need to know and appreciate what the framework is actually doing for you.

    You’re still going to have to write your own style code at some point even with the framework in place, and if your starting point is a mix of framework code and your own, learning the ropes will be a lot harder.

    Having said that, the best way to learn CSS is by studying working examples, so maybe by looking at what the framework is doing and trying to figure out how and why it works could be a good approach.

  10. 010 // Jeff Croft // 09.07.2008 // 4:08 AM

    Thanks for all the great responses, guys. I’m sort of shocked at the focus on CSS frameworks. I actually wrote this post as a response to a Twitter conversation in which a handful of people expressed an oposition to Javascript frameworks.

    A couple comments, though, on the CSS front…

    1. Sure, CSS is not a programming language. That is a huge difference. However, it’s still code, and I still find myself writing the same code over and over again. When I first wrote what I called a CSS “framework” (you can argue the semantics of whether or not that was a good naming choice), the repetition of code was one of the main problems I was trying to solve. The other main purpose was to create a shared set of class and id names that could be used across a team of web designers, which made us much more efficient.
    2. In my mind, the only real difference between a “framework” and a “library of code snippets” is the organization of it. I think of a “library of code snippets” as something you copy and paste from, into each project. On the other hand, I think of a framework as something you “import” into the project (whether by using your favorite language’s import statements, using script tags for Javascript, or link tags for CSS). In other words, a "framework" is intended to be used directly, whereas a "library of snippets" is more intended to be selectively used, little by little. That whole process of copying and pasting little bits of code into each new project is tiresome, to me. You're always copying the same bits, anyway, so why not just turn it into something you can import?

    As a sidenote, the “did you come from a computer science background” question was thrown in because of a suspicion I have. I suspect that many of the people who are bothered by the framework concept did not come from a computer science background. The reason I suspect this is that frameworks and libraries have been being used in programming forever, and a proliferation of them for a given language is usually a sign that language is healthy and thriving. Python, for example, is often cited as being especially useful because of the incredible number of available (and built-in) libraries. Java always has had a bunch of frameworks associated with it. Mac OS X’s Cocoa has a bunch of frameworks associated with it. Most languages do. And I guess having worked in Java shops and gotten used to the concept of frameworks and libraries, I was surprised when there was a negative reaction to applying it to front-end languages like Javascript and CSS. But, I’m now starting to realize that most of the folks who have this negative reaction haven’t ever worked with languages that have always made frameworks and libraries a regular part of their ecosystem.

    Frankly, I think web designers need to learn a bit about programming, if they’re going to be writing code. Javascript is pure object-oriented programming, and while HTML and CSS aren’t programming, they certainly are coding, and programming teaches us many lessons about coding. Proper use of frameworks and libraries is one of those lessons. Just the same, web developers ought to learn a bit about design, if they’re going to be making design decisions for web sites. :)

  11. 011 // Andrew Ingram // 09.07.2008 // 4:55 AM

    Well, I have a Masters degree in Computer Science and I do support the use of software frameworks, however I think there is a difference between snippets for a styling language and a conventional software development framework (even if it’s very difficult to define).

    A good software framework provides you with a methodology and structure for writing your software, it might give you useful code snippets akin to a css framework (usually in some utility library) but you can get the full benefit of the framework without touching a single method in the utility libraries.

    I view a CSS framework as the web equivalent of a print style guide. If you are working on numerous projects for the same overall company or brand, it’s useful to have a style guide to save you having to re-solve the same problems on each project. When you switch to a completely different project under a new brand (more common in agency and freelance compared to in-house) the style guide could be completely different, if it’s similar enough you could borrow some work from your previous project as a starting point but ultimately you’re starting over.

    Having a library of CSS for taking care of your company’s preferred grid and type is perfectly fine, but if you start every independent web project planning to use 960.gs it means you’re likely to be trying to fit every client into 960px and 12/16 columns. 960px width is a good choice in many cases but if you use a single CSS framework as policy eventually you will produce a layout inappropriate for the client.

    Another problem I’ve noticed with many CSS frameworks is that it puts you back in the old tables-layout problem where you have to put the first column first in the markup and the last column last, rather than in the order which is most appropriate. There may be CSS frameworks that solve this problem, but for the ones that don’t this is frankly a step backwards.

  12. 012 // Mark Hibberd // 09.07.2008 // 7:05 AM

    I don’t do frameworks due to their poor implementations. If a framework actually adds some value I can be convinced. But I continually see buggy, inconsistent code bases that give you an initial boost, and being generous, this can be a big boost, but the boost rarely outweighs the technical debt you take on for the lifetime of what ever you are writing.

    Given this, I do build up my own libraries overtime. I am not entirely sure of you definition of ‘framework’; i generally take it to mean lots of hand-holding, configuration (explicit or conventions); but the libraries I build up over time tend to be useful sub-systems or components that provide stand-alone functionality rather than the hand-holding approach.

    Cheers Mark

  13. 013 // Jeff Croft // 09.07.2008 // 9:41 AM

    I view a CSS framework as the web equivalent of a print style guide. If you are working on numerous projects for the same overall company or brand, it’s useful to have a style guide to save you having to re-solve the same problems on each project.

    That’s a good analogy, and perfectly defines our reasons for creating the web framework we did at The World Company, where we had to create several similar-but-different news websites.

    Still, I think there are certain problems that are universal to designing for the web, and not exclusive to projects under the same brand umbrella. It is my opinion that Blueprint CSS, and a few of the others, are too heavy-handed. While they offer some useful tools, they also tend to force you into certain things you may not want (their 24-column grid, for example…to be fair, you don’t have to use it, but if you don’t, you don’t gain anything from the grid component of Blueprint).

    …if you start every independent web project planning to use 960.gs it means you’re likely to be trying to fit every client into 960px and 12/16 columns…

    I completely agree with this, but two points worth noting:

    1. 960 pixels is pretty universal, and 12 or 16 columns are good, solid choices for flexible grids within that width. While I agree that design decisions need to be made on a case-by-case basis, let’s not forget that sensible defaults are also a good thing — and the 960.gs defaults are definitely sensible.
    2. Most of the opposition to CSS frameworks seems to focus on the grid components of those frameworks that have one. I wonder what people would think of a framework that didn’t offer a grid component? In other words, I sort of thing people are typing the framework concept to the particular implementations of a few CSS frameworks. We need to be careful not to throw the baby out with the bathwater.

    Another problem I’ve noticed with many CSS frameworks is that it puts you back in the old tables-layout problem where you have to put the first column first in the markup and the last column last, rather than in the order which is most appropriate. There may be CSS frameworks that solve this problem, but for the ones that don’t this is frankly a step backwards.

    Agreed. And yes, there are definitely CSS frameworks that don’t have this issue. Again, there are several CSS frameworks that don’t dive into layout at all.

    Also: while I agree that markup order is important and we should look for solutions that don’t force a particular markup order on us, I also think that this sort of thing is no where near as offensive as tables for layout. Remember that the top problems tables for layout were/are accessibility and rendering speed. While Blueprint and its ilk may not solve the markup order issue, they do solve the accessibility and rendering speed issues.

    I don’t do frameworks due to their poor implementations. If a framework actually adds some value I can be convinced. But I continually see buggy, inconsistent code bases that give you an initial boost, and being generous, this can be a big boost, but the boost rarely outweighs the technical debt you take on for the lifetime of what ever you are writing.

    Can you give some examples of the frameworks you’ve tried and found “buggy, inconsistent code bases.” I fully admit that I haven’t tried that many, but I’d hardly call Django buggy and inconsistent (even thought it just went out of beta), and in limited use I’ve not found jQuery or YUI to be problematic, either. I have no doubt there are some buggy, inconsistent ones — which ones have you found to be so?

    …but the libraries I build up over time tend to be useful sub-systems or components that provide stand-alone functionality rather than the hand-holding approach.

    I definitely feel like this is a better approach — at least for me — than the hand-holding. It’s one of the reasons I love Django so much. Even if I build a project without Django, I tend to end up using bits of Django here and there, for the stand-alone functionality they provide. Very good point.

    Thanks again for the great comments, guys. I think I’m starting to see a general trend of “frameworks might be cool, but most of the ones I’ve tried haven’t worked out for me.” That’s good news. It means people are actually investigating these things and giving them a fair shot, rather than just deciding they couldn’t possibly have a use for a framework.

  14. 014 // Kyle // 09.07.2008 // 10:07 AM

    …but if you start every independent web project planning to use 960.gs it means you’re likely to be trying to fit every client into 960px and 12/16 columns.”

    You could make the same argument about the printed page… but your argument would fall apart. Just look at the diversity of layout in magazines, newspapers and books—all constrained by factors like page size, number of colors, etc. Having a grid (or constraints in general) — is freeing for designers.

    I was well-versed in CSS before I discovered CSS frameworks and now that I’ve used them on my own and in a team environment, I’m sold. In my experience, they do require some degree of customization, but the speed and consistency a good framework can deliver can’t be beat. They’re especially useful in a group where you’re faced with the reality of varying levels of CSS mastery and different approaches to coding.

  15. 015 // Andrew Ingram // 09.07.2008 // 10:28 AM

    Kyle, how would the argument fall apart? Not every newspaper and book uses the same grid which was precisely my point. Within a single publication or publisher you may find that every page uses the same grid, which again was precisely my point.

  16. 016 // Jina Bolton // 09.07.2008 // 1:25 PM

    Hehehe. Timely post for a timely topic for me.

    http://www.sushiandrobots.com/journal/2008/09/06/researching-javascript-frameworks

  17. 017 // Nathan Smith // 09.07.2008 // 4:43 PM

    I guess I’ll chime in here. As the creator the 960.gs framework, I by no means think people should try to fit things into the pre-made dimensions, if it will be to the detriment of the project. If you are already considering a layout with up to 16 columns, then it might be worth considering. However, if the site will be something totally unique (not on a grid), then there’s no sense trying to make it fit, where custom CSS would be better suited.

    That being said, on the topic which prompted this article - that of JS frameworks, I think that using something like jQuery is fine, as long as you understand the fundamentals of what is being abstracted away from you. Such as, knowing that $(‘.foobar’) returns an array, and therefore that $(‘p.foobar’) will be faster performance wise, because you’re only evaluating <p> tags for the presence of class="foobar", rather than all tags in the page.

    At my day job, we use the YUI library, which definitely reads a lot more like raw JavaScript. But, with the upcoming YUI version 3.0, they are changing the syntax to look much more like jQuery, and adding support for chaining. This will no doubt encourage more design minded people to try it, since it will look closer to CSS, but the same caution must be taken, to fully understand what is being abstracted away from you.

    Some purists would say not to use a JS framework before learning JavaScript, but I see no problem with trying out various frameworks as a doorway to learning more about JS itself. Anyway, that’s my two cents. Frameworks are fine, as long as they’re saving you some work, but you’re not relying on them as a crutch.

  18. 018 // Jeff Croft // 09.07.2008 // 5:14 PM

    Jina: That wasn’t by accident. This post actually started as a comment on your site, but then I realized I was off on too much of a tangent, so I decided to just post it here. :)

    Nathan: Good points. :)

  19. 019 // Jeremy Heslop // 09.07.2008 // 5:55 PM

    Thanks to Nathan for pointing to this post in twitter and for all the great comments so far. I’ll answer all the questions like those above even though I’m not a framework hater. I think its good to get both sides:

    1) When I first started programming I disliked frameworks like I disliked OOP style programming. Linear and procedural coding was all I needed even for the web (back in the IIS 1/2 days with .idc/.htx files ewwww!) Now as I learn more about design patterns and developing code faster with faster methods (agile methods, MVC, etc) I prefer frameworks that can help speed up the process and offer objects that can do 50 lines of code in 4-5 lines. Because I’ve done code in the past the long/hard way I appreciate a faster way to code even if it means harder to learn up front.

    2) If I had to dislike something I would say some of the individual framework implementations could use some more rounding out or have a key weakness that would keep me from using them.

    3) I try and find a framework for most everything I need to code accept CSS so far. I use JS frameworks, PHP, .Net etc

    4) Computer Science and Math major. I’ve worked on plenty of desktop, server side and web applications over the last 11 years. C++, C, Java, PHP, VB (yuk), .Net and so on. Most have had frameworks available and I use them as often as I can. I’ve used CakePHP, .Net and JQuery most recently.

    5) I think frameworks if done right can open up a whole new realm to new coders and web developers. If you think about it programming languanges are just frameworks on top of Assembly which is a framework on top of machine code. We don’t seem to be complaining about whether to use a high level language vs assembly so why complain about frameworks?

    6) I agree that you will never use every function of a framework, but again we can use the same analogy of a programming language in general. Just like you said we don’t use every function PHP or photoshop provides. However if a framework does not keep itself optimized we will see speed issues in the short term. In the long term computers will get faster and non optimized code will be less of an issue. This is a fact of computing.

    7) I work on client work and almost everyone has a deadline of “asap”. So churning out a project in a short period of time is essential. Some projects can be stretched out awhile but they are few and far between.

    8) I haven’t collected an official library of snippets. I’ll just re-use small parts of other projects if they are similar enough to work. Most frameworks I’ve used though eliminate the need to collect to many snippets though.

  20. 020 // Kenny // 09.07.2008 // 6:53 PM

    Personally, I feel the fact that we are using languages to be too much. I don’t think you really are great at programming unless you can write machine code.

  21. 021 // Stefan // 09.08.2008 // 2:34 AM

    Whenever I talked to developers who dislike frameworks I noticed they are often frightened of loosing control. Some developers like the “magic” and “witchcraft” of creating everything from scratch. The like to say: “Yeah, you know, I did this line of Ajax-Code”. Or maybe it’s the fear some framework could replace a super-duper programmer with a less good programmer. I think there is no other industry, which doesn’t use some kind of framework. It’s NOT cool to reinvent the wheel on every project (or copy-paste old code).

  22. 022 // Jason Porritt // 09.08.2008 // 6:03 AM

    Excellent questions, Jeff. My coworkers and I are in the midst of evaluating several Java web development frameworks and there are a few things I’ve noticed related to your questions.

    First, there are so many frameworks (especially for Java) that it’s hard to get a list small enough to even start the evaluation process. This may not be true for every language, but to some degree the proliferation of frameworks makes it difficult to select one — what if you make the wrong choice? Will you be able to migrate from one framework to another if you regret your decision?

    To further compound the first issue, most of the time I find only trivial examples among the documentation and tutorials. That is a problem — I don’t write trivial software, and I’m going to venture a guess that neither do most other software developers. It’s often difficult to determine best practices for large applications based on small examples. One notable exception I found is the Spring framework, which bundles a nice tutorial that, while fairly simple, takes the user through several iterations to show how a larger application would be structured.

    Finally, I am a perfectionist, like many other software developers. That makes it difficult to select a framework that might not let me achieve perfection. Thing is, I don’t think software is ever perfect, and using a framework might get me to the “good enough” point more quickly. So, it just makes the choice more difficult.

  23. 023 // Nate Klaiber // 09.08.2008 // 7:11 AM

    JavaScript frameworks, CSS frameworks, Application frameworks…they are all for script kiddies! Everyone should write their own Operating System and Browser first!

  24. 024 // andyw // 09.08.2008 // 8:41 AM

    Strangely, i learnt Javascript after learning JQuery.

    I had tried to grasp javascript for years, but never really managed to get very far. I found the implementation of selectors and the like in JQ made interacting with my standards compliant page that much easier.

    At the same time, it may just be because the book I bought to learn JQ was better than the book I bought to learn plain old Javascript.

    I can’t say I’ve ever bothered with CSS frameworks at all, but that’s just because CSS is second nature to me and I don’t really need to think to hard even to create a complex layout. I also really enjoy writing CSS and the challenges it presents - a framework would take that away from me. ;)

  25. 025 // Vladimir Carrer // 09.08.2008 // 8:55 AM

    People are still not used to the idea of CSS Framework. As author of Emastic CSS Framework I have some things to say:

    They say they are bloated. Emastic weights 4kb. They say that have only fixed columns. Emastic support fluid columns. They say they have default fixed-width. Emastic has not default width and support (px,% and ems) They say that they are not semantic. They are probably right.

    I think that people are afraid of new stiff. I remember i was very sceptical about all PHP Frameworks. Now I have impression that everyone uses PHP Framework or CMS.

  26. 026 // Joshua Lane // 09.08.2008 // 3:58 PM

    Frameworks are shortcuts that help you avoid spending a lot of time on something you don’t want to spend a lot of time on.

    For me, I hate writing javascript, so give me a framework for that. However, I like writing CSS, so I’d rather not work with a framework in that situation.

  27. 027 // Jeff Croft // 09.08.2008 // 6:54 PM

    Joshua, I think your point is spot on. And frankly, I don’t really like writing any code, so I’ll take a framework for everything, please — then I can focus on design. :)

  28. 028 // Janson // 09.08.2008 // 8:19 PM

    What Eli said.

    A JS framework is more akin to Rails or Django. CSS frameworks are more akin to a Word or Pages template.

  29. 029 // Garrett // 09.10.2008 // 9:36 AM

    I’ve struggled with my thoughts on the framework debate. All of my programming has been in the web-space. My (people) problem with frameworks: everyone thinks they have found the next best thing - about every other month. Everyone is a web developer now, I just wish some would have more discretion and look at frameworks with a slightly more skeptical eye.

    I started and still do most of my work in ASP.NET, framework question solved for me… Which makes me think less about what framework - and lets me focus more on what I’m actually trying to accomplish. However, I like php and I am excited to try some things like CodeIgniter to make it easier on me as I’m not a php whiz yet.

    MY MAIN THING: Server Side - go nuts! Use every framework known to man, who cares. BECAUSE IT DOESN’T AFFECT THE USER.

    JS/CSS frameworks - I see so many sites (most corporate level) who have 3-4 js frameworks at the SAME TIME. I don’t have issue using one js framework at a time, because it saves the developer time and isn’t hard up on the users browser(I still wish more people would write their own js). Frameworks are great, just use them correctly, not everyone browses the web using a MacBook Pro!

  30. 030 // Jeff Croft // 09.10.2008 // 10:15 AM

    MY MAIN THING: Server Side - go nuts! Use every framework known to man, who cares. BECAUSE IT DOESN’T AFFECT THE USER.

    Good point, Garrett. :)

  31. 031 // Tim Stanley // 09.10.2008 // 4:25 PM
    1. In general, I dislike about 90% of the frameworks I come across (internal and public). Most frameworks I have seen (public, open source, as well as company internal) are about someone trying to make other people work the exact same way they do but the often the requirements are different and that causes conflicts. I’ve been on both sides of this (both builder and consumer). The successful frameworks I’ve seen adapt to the way people work. People take the parts that help with what they are doing at the moment and ignore or shun the rest. Sometimes for the better far beyond what the original founders anticipated. The next time, it may be a different set of base functionality for a different client. The good ones save time and adapt to people and how they work, not people adapting their work and processes to a framework.
    2. I dislike the fact that most implementations of frameworks are difficult to understand, complex, fragile, and not easily adapted to work and do not play well with other frameworks or approaches. If I end up spending time trying to troubleshoot something in the framework, the value the framework provides diminishes greatly.
    3. I can’t say that I like frameworks for some languages and not others. I like systems that are simple and fundamentally sound when using the particular technology. I balk at frameworks (even in-house ones) that are complex to setup, complex to configure, and are not based on the key simple fundamentals of the technology. I use jQuery. I can’t say it’s because I’m particularly fond of it, just that it saves time for particular features. I like the “concepts” behind 960.gs, but I don’t use the underlying CSS framework. I do use reset.css.
    4. I come from a computer science background (~23 years). Actually BSEE with minor in Comp Sci. *nix, C, Windows forms, WPF, *.Net, including ASP.Net. I use .Net (if you call that a framework) extensively. I love .Net, but I hate WCF. I didn’t like DotNetNuke. I do like BlogEngine.Net (parts).
    5. An effective framework / library /technology is really about just a few things. It’s a tool. Does it save development time? Does it save support time? Is it quick to learn? Is it supported? Is it going to be around in 3-5 years? Any no answer lowers the value for what I’m going to get from it.
    6. Bloat of a framework (server or client side) is only a factor if it diminishes the user experience or the user perception of performance.
    7. Client work is always about short timeframes. Work with short timeframes is really about managing the complexities of the feature requested compared to what the underlying technology and dwhat evelopment tools can support within a cost effective time frame.
  32. 032 // Manir // 09.11.2008 // 5:12 AM

    Yes, Garett took hold of it delicious :)

  33. 033 // Joseph Taylor // 09.12.2008 // 6:14 AM

    Ah, frameworks - they’re great! I started coding VBScript/ASP back in 2000 and by the time I had discovered frameworks as they exist today, I had naturally collected my own work into a basic framework I would start with.

    At the time, it would fall into ASP scripts that handled database connections, javascripts that handled XMLhttp Requests, and stylesheets that performed resets and then sensible defaults. Sounds familiar doesn’t it?

    For me, the existings frameworks I use right now: Code Igniter (PHP), jQuery (javascript) and sometimes 960 (CSS) basically do all the things I wanted before, but they’re written by better programmers so I don’t have to go back and rewrite things because I didn’t think to counteract form spam, or sql injection etc…same for cross browser javascript.

    Sure, I wrote my fair share of extended document.this.that or document.getElementById etc etc….any good web guy should have.

    I certainly agree that you should spend time learning the language so you understand what your light and easy syntax is actually doing, but, I never would have learned PHP or MVC procedures and patterns if I didn’t use the Code Igniter framework to launch myself into PHP to escape classic ASP.

    In the end the frameworks are only a simple collection of pre-written usefulness that you can use if you like.

    In the case of a CSS frameworks, I still have to hack a little in 960 to get my columns just right in IE6.

    Honestly, I ended up ditching 960 for my last couple projects so I felt more free with my layouts.

    I understand grid systems and enjoy creating my own as well. Again, if I have to whip up something fast I know its out there. Its a project by project call for me.

    Having frameworks available has never meant religiously using them 100%. The exist to help make basic things easier.

    Like $(‘element’) instead of document.getElementById(‘element). Should I feel bad about the syntax I use to grab the element? Heck no!

  34. 034 // Cooper // 09.15.2008 // 9:25 PM

    @Jeff - Frameworks are a ‘great’ idea. As told ‘css is presentation and should be the presentation layer. Since css frameworks are as debatable as naming conventions I will state my ‘opinion’.

    PROS: 1. Quicken workload. 2. Can lessen css bloat. 3. Eliminate most browser bugs. 4. Can help beginners learn the ropes. 5. Help teams work in coordination. 6. ‘If good’ can help aid accessibility. 7. On the whole are tried and true.

    CONS: 1. Naming conventions are not semantic. 2. Markup is sometimes not meaningful. 3. Values presentation more so than semantic markup. 4. Abuse Divs.

    I do see your point and where you are coming from on css frameworks.

  35. 035 // Jeff Croft // 09.15.2008 // 9:57 PM

    Cooper, I’d say that’s a very solid rundown of the pros and cons of CSS frameworks. In general, I totally agree. I will say, though, that the “abuse DIVs” bit is not a fault of CSS frameworks on the whole, but rather a downside to a handful of popular CSS frameworks. I know the original CSS framework we wrote at the Lawrence Journal-World didn’t abuse DIVs. :)

    I also think 1, 2, and 3 on your cons are all basically the same thing. :)

  36. 036 // COOPER // 09.16.2008 // 7:32 PM

    @Jeff - Also, I think that a majority of people who do not know about frameworks ‘disrespect them’. The people that have used them for workload appreciate them. I do agree that 1-3 for cons are redundant (sleepy post).

    I think a lot of the time people ‘argue’ that frameworks are bad and are arguing more about the popular frameworks instead of the concept. The concept is priceless as the popular ones need some fixing.

    Anything good can turn sour but, with that right people behind them that will never be the case. Sorry to rant on but one last thing :-d

    html/css is a great thing but a invalid coder can make it look bad as some of the people behind the latest frameworks have.

    I do see your point Jeff and frameworks are a great thing!

    Cheers

  37. 037 // Ferienwohnung Sizilien // 10.01.2008 // 1:39 PM

    The ajax experience will definitly be fun…but sadly without me… i think i´ll just have to wait for the report here! hehe cheers, flo

  38. 038 // Unternehmensberatung Russland // 11.09.2008 // 1:03 PM

    I find it very nice article.Thanks!

  39. 039 // sukru // 02.25.2009 // 3:27 PM

    think about this for a second. all frameworks are must be only some helper structures. A good design of an app is not about its framework. It must be encaplulated. And good design is not about code reuse its about experience reuse naturally. I thing most of you missing some important point. Question

    What is a good html structure about?

    1.Is about presentation 2.Or is it about semantics 3.Or both

    semantics totally about expreience reusing.(Like design patterns). There are some great articles about how you could entegrate your design with semantics and how css frameworks brake some rules(Code smells:)). With microformats or some htm5 specs ect… i thing it is a good discussion but in wrong direction. Carefully think about that

  40. 040 // how to remove virus // 04.17.2009 // 2:01 PM

    very good article, great to know someone out there knows what there talking about. :)

  41. 041 // Michael Kozakewich // 05.21.2009 // 5:15 AM

    I figure I’ll add my voice in with the rest:

    1. (null)

    2. I dislike some individual frameworks.

    3. To me, the CSS frameworks don’t hold any allure. CSS is fairly simple, once you find those odd rules you need to take into account, and it’s mostly a matter of “I want a brown background: so set background-color to brown.” Something like javascript, meanwhile, has a billion different pieces. It’s easy to make something that doesn’t quite work, and there’s a lot to do when you want to get something advanced done.

    4. I’ve gotten a diploma in a computer field, and have programmed with C++, Java, Javascript, PHP, .NET, PowerBuilder, SQL, and maybe a couple others. I suppose .Net is a framework, which I found to be easy, but which didn’t stick with me. Something about its ease-of-use just made it hard to learn, for a student. PowerBuilder had a framework (or library, rather), which we took a whole course to learn. After coding straight PowerBuilder, it was interesting and felt a lot more put-together.

    5. If a framework takes out something like document.getElementById and document.getElementByTagName and document.getElementByClassName and replaces them with $(), it’s a lot easier but you’re missing a chunk of learning. Any good, proper framework, therefor, will hinder the learning experience, unless the actual language is hard enough that it would turn you away completely. In that case, a framework could make it easy enough that you’ll stick with it and learn something.

    6. I think the only people saying “It’s bloated” are web developers. When you’re designing a webpage, you have to take into account that a certain percentage of visitors will be on dial-up (I was there all of last year, and still know people like that), for whom 60KB of jQuery can be a great deal to download. Most pages want to load their page within half a minute, which would mean an upper limit of 60-100KB. Even 12KB/s is relatively common, and that would take a few seconds just to download the framework. I’m on a cellphone uplink, at the moment, which has a very high latency. That means frameworks made of many parts take as many server requests, which means up to a minute of waiting on my end. There’s an acceptable limit, but it does have to be watched.

    7. At the moment, I’m in that mode where I’ll work as fast as I can, but if I’m feeling lazy I can wait for the next day. I’ve just started the whole Web Design life, so I’m doing most of my coding by hand. I’ll end up meandering through a coding task, which lets me learn a lot but takes me a great deal of time.

    8. I’m too young for that, at the moment, but I do tend to reuse certain things (the doctype declaration, for example). I’ve recently been kicking myself to type it all out by hand, though, because recopying everything over again only takes an hour and makes it fresh in my memory. I don’t need to type out <head></head><body></body> and such, because I already know it, but I wouldn’t be able to put a doctype together if I was on my own and had to do it (that kind of thing has happened before).

    Other notes: I use jQuery a lot, because javascript has just had that messy feel, to me. Unless you’re very good at it, javascript would be full of a million kludges to get things working, and each codebase will be completely different between projects. jQuery allows me to keep everything semantic and clean, and makes it so I don’t have to code the entire animations bit from scratch every time I wanted to use it. (And if I recopied it after I had made it… that would be a framework of itself). I’ve downloaded Django, but I’m still in the process of learning it. I wouldn’t touch a CSS framework, until I’m working with some team where communication and efficiency is necessary. I’m not sure if graphics frameworks exist, but I’m not using that, either; I would create completely new graphics for each site I make. I’ve looked at Joomla, I’ll be looking more into Drupal, I’m using Wordpress (as if I’m going to code my own blog from scratch, right in the beginning of my career), and I’ll be looking further into CakePHP when I’ve learned more about PHP (I’m feeling messy like I was with javascript, but I feel challenged to come up with my own way to paginate and etc). I couldn’t imagine using an HTML framework, though the idea has been seen drifted around in the dark recesses of my mind. Is there such a thing? I’ll have to search it up.

Post your comment