Are jQuery Users Fools?

Are jQuery Users Fools?

We should get this out into the open. There seems to be a commonly held belief that jQuery users are ignorant, and, more often than not, designers. Where did this come from, and is it true?


Roots

The JavaScript community wasn’t nearly as vibrant and passionate as it is today.

Let’s take a trip down memory lane; we’ll rewind the clock several years – pre jQuery days. The JavaScript world was a very different scene back then. The community wasn’t nearly as vibrant and passionate as it is today. Sure, back then, there were a few libraries, like Prototype; but they never managed to grab the regular user spotlight the way that jQuery soon would. At that time, JavaScript was a widely hated language. Sometimes, it’s easy to forget that there were times when developers refused to take the necessary time to …ya know… learn JavaScript! Instead, they’d simply copy and paste their way, hoping to keep from getting that nasty JavaScript stain on their pants.

The DOM

What you mean is, “I hate the DOM API.”

What these copy and paste addicts (I was one of them) didn’t realize is that, when you say, “I hate JavaScript,” what you really mean (whether you realize it or not) is, “I hate the DOM API.” No one can be blamed for feeling that way. Especially back in those days, when even IE5 support was in effect, things could get a bit nasty. Browser implementations of the DOM were the culprit; not the JavaScript language. This is due to the fact that there really wasn’t any DOM specification. As a result, browsers sort of winged it as best as they could! We have innerHTML not because of a specification, but because the Internet Explorer team decided to just throw it in there (at which point the other browser vendors reverse engineered it, and implemented it into their own browsers). But the JavaScript language, as a whole, is solid.

In fact, many folks, including myself, would go as far to say that, as a language, JavaScript is really quite beautiful.

jQuery

Around that time, jQuery entered the atmosphere, and began taking the development community by storm. While other libraries like Prototype still retained a certain level of complexity and confusion for newcomers, jQuery was ridiculously easy to grasp, thanks to the fact that everything is accessible, via the jQuery object (something that it’s, ironically, often criticized for).

Need to apply a class? Easy; doing so is tailor made for designers. jQuery allows you to use the CSS selectors you already know to query the DOM.

$('#container').addClass('ahh-yeah');

Fun Fact: Technically, though jQuery popularized the idea of a CSS selector engine, it was largely based on work by Dean Edwards.

And then, at some point, the timeline skewed into this alternate reality…

It literally couldn’t be simpler. By abstracting away complex code and browser quirks, developers could get back to doing what was important: creating websites and applications.

While jQuery’s community grew in leaps and bounds, the library, itself, also continued to mature and take shape. The world was peachy.

And then, at some point, the timeline skewed into this alternate reality (okay, not as Doc Brown as that), where, suddenly, if you labeled yourself as a proud jQuery user, certain members of the JavaScript community would consequently feel the need to stereotype you as an ignorant “designer” (regardless of whether you were or not) – certainly not a “JavaScript Developer.” How did this happen? JavaScript developers don’t use jQuery?


The Burden of Popularity

Everyone has an opinion about the spotlight.

It’s only natural that, once you reach a certain – for lack of better words – popularity, you open yourself to incredible amounts of scrutiny. Everyone has an opinion about the spotlight, it seems. For example, you’ve no doubt heard endless criticism of Catholicism. “They worship statues.” Is that the only religious body with questionable history? Surely not; but it’s the largest. The United States is one of the most powerful countries in the world. Naturally, everyone has an opinion. “Americans are ignorant and fat.” Ignore the good, and spotlight the bad.

jQuery is the most popular JavaScript library, by a landslide. Again, everyone has an opinion. I’ve read countless criticisms – everything from what it doesn’t do, to the structure of the code base. However, perhaps the biggest criticism of jQuery comes from a simple truth: its users, as an average, are less experienced with vanilla JavaScript, when compared to, say, Mootools. While some consider this to be a downside, I honestly view it as a strength – in an odd way.

The fact that jQuery has many less-experienced users is not its downfall; it’s a testament to its appeal.


jQuery Users Don’t Know JavaScript!

This is the argument you’ll hear more than any other. Again, a testament to jQuery, many people learn jQuery before vanilla JavaScript. There have been countless debates on whether this is a good thing or not. In fact, these sorts of discussions extend to all abstractions.

  • Should designers use CSS preprocessors and frameworks, like Sass and Compass, respectively, before learning the ins and outs of CSS?
  • Is it okay for a Ruby developer to use CoffeeScript without first learning JavaScript?
  • Should you use Modernizr before learning how to write a single feature test?
  • Is it okay to use CodeIgniter if you’ve only just learned PHP?

Personally, I feel that those who demand that newcomers first learn JavaScript before moving on to jQuery are missing one thing: JavaScript and the DOM are scary! If you throw the ES5 specification at them, they’re going to have a heart attack, unless they have a real interest in becoming a JavaScript developer. Many people simply need to add a few effects to their websites. We can’t always master everything. Are they bad people for choosing their priorities? Of course not.

JavaScript and the DOM are scary!

Compare this to simple Math. When you first learned how to add 2 + 2, did you do it the official way? I sure didn’t; I used my fingers. I bet you did too. Though it’s a huge simplification of the issue, is jQuery not the same way? It provides new JavaScript users with a simple and exciting entry point. Do you honestly expect them to learn about closures and objects and global variables before they even learn how to do something fun? Come, come, now.

The strict, “Learn it the right way, or you’re a fool” viewpoint is naive, and doesn’t take into account the various learning styles that we all have.

I view jQuery as bait. Hold it over the user’s head, get them really excited by it, and then, when they feel ready, they almost always move on to learning more vanilla JavaScript.

jQuery Users Write Poor Code

Once again, this is a massive generalization. Some of the biggest and most influential companies in the world use jQuery. But yes, there are lots of beginners who are still in the process of learning. Oh well; it happens. Poor code exists in every language. I’ve written a good bit of it myself, I’m proud to say! The best we can do is, rather than scorn them publicly, offer advice and tips when we can. We’re all learning. Do we really need to attack some, because they have different priorities and skill-sets?

With popularity, comes the potential for bad advice.

jQuery managed to generate this incredibly passionate community – from the hardcore JavaScript developers down to the designers who were amazed by how easy it was to get the job done. This passion subsequently lead to countless jQuery tutorials by community members – both good and bad. While still learning jQuery (something I’m still doing), I can guarantee that I offered some terrible advice at one point or another. It’s not too dissimilar to the PHP community. With popularity, comes the potential for bad advice.


The Ruby Community

This sort of pointless teaching almost hurts the community.

In the Ruby community, there’s an interesting dynamic. Tutorials are, to generalize things, written by the veterans. In other words, if you’re going to write a Ruby on Rails article or book, you should fully expect extreme scrutiny. If you don’t have a massive level of experience, don’t you dare write about it. In some ways, this is a strength. As a student, you can more easily rest assured that what you’re learning is correct. On the other hand, PHP tutorials are all over the place. Writers sometimes focus on the insignificant, and ignore the important. You’ll often find best practice PHP tutorials, which describe whether or not it’s faster to use single quotes or double quotes. Of course, this sort of pointless teaching almost hurts the community.

What Do You Prefer?

It’s an interesting thing, I must say. What do you prefer? A smaller, passionate base, or an incredibly popular one, consisting of all skill levels? There’s certainly pros and cons to each.

It’s undeniable that many of us feel a need to be trail blazers. Remember when parents began signing up for Facebook? Critics widely declared that the end of Facebook was near. Once you sacrifice exclusivity for wide appeal, people instinctively begin searching for the next thing. But that didn’t happen. The same is true for jQuery. Sure, some users have moved on to more comprehensive frameworks, like Dojo. But that’s to be expected, and should be a badge of honor for jQuery. For many, the learning cycle goes like this:

  • Learn jQuery; get excited.
  • Realize that you have no clue what this refers to in different situations. Learn JavaScript, and incrementally improve your old jQuery code.
  • (Optional) Advance your skills to the point where you need a more comprehensive framework for building large applications. Begin reviewing additional tools, such as Dojo.

Is that so bad?


Real Deadlines

It’s not like we’re coding in binary here, folks.

There will always be the advocates who suggest that you shouldn’t use a library – period. Given the current state of JavaScript and the DOM, though, I honestly feel that this is bad advice – particularly for newcomers. They shouldn’t be expected to wrestle with frustrating browsers inconsistencies so early in the learning process. And, many times, abstractions are a very good thing! It’s not like we’re coding in binary here, folks. When you use jQuery, or any other popular library, you’re benefiting from countless tests, bug fixes, and the best minds in the industry.

Now, certainly, you’re not required to use somebody else’s framework. Create your own library, if you have the ability; that works too! The goal is to:

  • Normalize browser quirks
  • Write less code
  • Benefit from as many minds as possible
  • Meet real deadlines, and get the job done

jQuery is not “a designer’s library,” but it appeals to designers. It’s not as class-based as other libraries, but this makes the entry point for newcomers far more painless. So what we end up with is a library that helped reignite the JavaScript community. It’s simple enough to appeal to first-timers, and powerful enough to be used by the largest companies in the world. Why exactly is it being criticized again?

Tags: jQuery
Note: Want to add some source code? Type <pre><code> before it and </code></pre> after it. Find out more
  • Luiz Roberto Meier

    jQuery is an excellent tool to gain speed = time = money. Period. If you have a job or a company you should use your time with creativity rather than lose time (money) with cross-browser issues and reinventing the wheel.

    • Selcuk

      Well said sir, well said.

  • http://www.opwernby.com Dan Sutton

    There’s no doubt that jQuery is pretty powerful, and one certainly has to learn JavaScript properly in order to take full advantage of it. However, I hate it — it’s a personal thing: I just detest the way it works… so I wrote my own, which works the way I want it to, and is less all-encompassing: it’s basically just a bunch of controls and things which do what I need them to do… and if I find I don’t have a control I need, I’ll just write it. Some of my JavaScript is a little wordier, as a result, but the upside is that I have total control over how my code works.

    The thing about jQuery (and, for that matter, all libraries) is that the programmer becomes a prisoner of the abilities of others (and of their bugs): many times, you’ll encounter something which nearly does what you want, but not quite: it’ll be missing a feature, or implementing something not quite the way you want, visually… as a programmer, I like to be fully aware of what my code is doing: with jQuery, unless you want to sit there poring through the entire codebase, there’s always going to be some hidden stuff going on that you just have to trust. If you’re using a library, then even if you do have all the source code for it, you can’t change it, because if you do, none of the upgrades you apply to it after the event will work for you unless you go back and change them all, too.

    On balance, I’m glad I took the time to recreate many of the jQuery features (and in some cases, create them before jQuery got them). The time I took is outweighed by the freedom I now have in terms of being able to get stuff to work exactly as I want it to, rather than having to say things like, “Yeah – I guess that’s close enough.”

    • Tony Porritt

      Dan Sutton’s right on the money… The one thing I keep having to stress to people is how jQuery isn’t a piece of magic. It is, itself, a piece of someone else’s code, written in Javascript. It does exactly what the author intended. For some things, I think it has its place. But… when it comes to writing optimal browser code, you simply cannot get faster than native Javascript. I’ve seen people mis-use jQuery selectors within loops to scan through objects in the DOM that are sat next to each other.

      I feel like I’m forever pointing out what jQuery’s doing (e.g. scanning the whole DOM for matches on, say, class names), and then point out that object.nextSibling would have been far faster.

      For me, jQuery certainly has its place and if used correctly can give your site a real lift… but use with care.

    • http://www.extollit.com Jonathan Neufeld

      Hit the nail on the head, I don’t think I could have said it better myself. I rely on jQuery a little-bit but to provide some background I’m also an experienced assembly programmer. I completely understand what it is to be held captive or enslaved (good word choice by the way) to someone else’s ideas. I also completely understand the need to have full control and 100% visibility over what your software is doing.

      Although I relied on jQuery for one of my projects, I also wrote my own cross-browser layout manager that was many orders of magnitude faster than the layout manager used in Sencha’s Ext-JS. One obvious reason for this is it is much simpler and meets my own requirements and not a billion other irrelevant requirements.

  • Mike

    “There seems to be a commonly held belief that jQuery users are ignorant, and, more often than not, designers.”

    There is? News to me…

  • http://martealdesigns.com bob marteal

    So, maybe an analogy to Garage Band is fair. It’s really easy to make good music, and really easy to make offensive music. The good thing about it is people are expanding themselves.

  • http://www.5limes.com.au Richard Hauer

    An equivalent argument would be forcing every developer to master assembler before moving on to a higher order language like C#. While jQuery isn’t really a higher order language per se, it’s definitely a half-step up from JavaScript, and a real time-saver.

    Anyone who makes web sites for a living will accept any help offered where normalising behaviour across browsers is concerned. It’s easily the biggest headache in web development.

    • http://www.davaodirectory.com Ronald

      you’re absolutely right.. developers will always create new ways to make things less complicated.. but at least it’s really good to understand how its predecessors work.. it’s very helpful because it’ll give you the idea whether to use a certain procedure or some alternative.. an example would be to decide whether to use $.fadeTo() or $.animate( { opacity: amount } ); the factors to consider would depend how different these methods work according to speed and memory usage.. you will only understand the small difference if you’re able to understand Javascript

    • http://hauntingthunder.wordpress.com/ Maurice

      Well forcing developers to actulay understand what they are doing rarther than cut and past some horrid Java OO obsenity withch destroys a sites performance – sign me up!

      • Chinese

        actually*

  • http://asecondsystem.com will

    This article would be awesome if people actually thought JQuery users are all fools / designers.

    • http://www.jeffrey-way.com Jeffrey Way
      Author

      I see it all the time on Twitter.

      • http://www.norge.no Ola Nordmann

        True that!

      • Chinese

        Tru dat*

      • Mariano

        This is just a simple case of people feeling the need to look down on others simply because they happen to have more knowledge than someone else! If you find yourself doing that, remember that 9 times out of 10, there will ALWAYS be someone else who knows MORE THAN YOU, and could humble you/make you look like a total beginner even in your specialized area/field! This applies to ANYTHING in life.

        Being an elitist prick is never helpful to anyone.

        Now on to my main point: jQuery’s fine as a starting point, but of course as with everything else in Web Design, it’s worth gathering as much knowledge on the actual language as possible to ensure that you are constantly ahead of the curve. Doing this, however, on a company’s time and money is stupid.

  • dean

    The problem I have with JQuery that this article doesn’t address is all of the spin off add-ins that for JQuery. I used one recently called jquerytransform. It works fine until you have to do something “really complex” like set a control value programatically. Then the wheels come off.

    Using untested open source in a major project is a Pandora’s Box. Your asking for trouble. I admit it added a slick look to an application but at a major cost of “will this thing continue to work?”

    While there are problems with javascript and the DOM API, it is a known quantity. I never know what I will get with JQuery.

  • Niklas Rasmusson

    I can imagine most of this is true. I fall into the category of people who use jQuery without greater knowledge of vanilla JS. I started in a school for web developers about 1,5 years ago and I think it’s quite amazing what jQuery lets me do fast and easily. I surely will learn more JS in the future when I start working but for now I don’t have the time since we focus on so much else than just coding.

    This is a big plus for jQuery I think. It’s so easy to make nice looking stuff that eventually you’ll want to learn how it does it. Which leads to you checking out the source and ultimately learning more JS.

    The people who don’t use jQuery solely based on the “fact” that people who use jQuery are less experienced (read newbies) are pretentious jerks. If you however don’t like the way jQuery works and go find another JS library or write your own, that’s awesome. The web developer world is great that way. There’s so much to chose from :)

  • http://www.netatlantis.com Ming

    “jQuery Users Write Poor Code
    jQuery Users Don’t Know JavaScript”

    Many open source and enterprise project using jquery.

    for example,
    TinyMCE has jQuery editon.
    The author of TinyMCE Write Poor Code?
    The author of TinyMCE don’t Know JavaScript?

    • Chase Adams

      Just because it works, doesn’t mean it’s well written or optimized.

      I think the most important part is that if you’re going to learn jQuery, also dig into JavaScript. LEARN. A lot of people just copy paste to get by.

      I was once that guy and I realized that there were issues of speed and performance that Vanilla JavaScript could blow jQuery out of the water on, even though it took a little more time to learn and more lines of code.

      Main takeaway: If you’re going to develop for the web, learn everything you can. Be passionate about it and share it with other people. I love sitting down with people who don’t understand/do jQuery and look at how to make it better, more efficient and stronger code just because it’s fun!

    • Jonathan Neufeld

      I decided against using TinyMCE for my online sports registration service because (like I’ve said before) it has way too many features that are completely unnecessary for 99% of the typical use-cases on the web. I wrote my own HTML editing widget in a couple of hours that did precisely what I needed it to do, wasn’t as cluttered as TinyMCE, and I didn’t have to invest time trying to figure-out how to turn-off TinyMCE features. It was also much lighter-weight and much faster than TinyMCE, so my page load times were significantly reduced.

      It may seem elitist to say this but the central point I am trying to make is that if you do it yourself your code will run much faster. As it stands far too many web developers treats advancements in processing speeds like a crutch rather than the gift it is, and the average user could be spending a lot less time looking at progress bars and hour glasses if more developers thought like this. But instead the easiest way to go is to make the computers do more work increasing variable costs rather than investing developer capital.

  • http://japaalekhin.llemos.com Japa Alekhin Llemos

    Saying jQuery users doesn’t know JavaScript is plain stupid. jQuery is written in JavaScript, used by developers inside JavaScript and guess what, it runs on JavaScript. jQuery and $ are actually variable JavaScript variable names that references and encapsulation of JavaScript objects that provide interfaces to JavaScript functions. All written in JavaScript. Did I forget to mention that jQuery users are actually writing JavaScript code?

    It’s like saying pencil users don’t know how to write, because they don’t know the underlying structure and manufacturing process of a pencil. From mining the lead, to cutting wood and all those stuff to make a pencil. How stupid can that be.

    In that case I don’t know how to type. Because I don’t light up the screen pixel by pixel to form letter-like figures. I don’t even know how much voltage (and other electronic stuff) this keyboard I’m [not*] typing on uses.

    Seriously…

  • Patrick

    Haters are always gonna hate… Playstation vs Xbox, Led vs Lcd vs Plasma, 8 track vs tape vs cd vs digital, Liberal vs Conservative.

    There are always 2 sides to the coin… and there are always going to be those who disagree

    • ZUBY

      Finally someone that understand what the noise is all about. Its always the case of us vs them (hardcore vs passive fanboy/fangirl programmers). At the end of the day, what clients pay you for is to get stuff done, quick, and cheap. if re-inventing the wheel all the time is the perfect way to do that count me out.

  • http://adamcrooker.com AdamTheGr8

    Lets reverse this 180 degrees. If a strict developer has to design a website (and by design / I mean it has to go through several revisions & a large chain of command… so large blocks of color won’t do) is he / she going to sit down, learn PHOTOSHOP, take a design history class, learn about negative space – dive into typography – then design the site? Or would he / she use whatever tools available to complete the job in the time frame a loted (such as templates)? What I’m getting at is, as a designer, I have to make my web designs function. I don’t have the time to sit down and get a computer science degree. Libraries such as jquery allow me to bring the end user a product / & and in the end its about the user. They don’t care if you used jquery / moo-tools / or strict java.

    • lafncow

      …true, but in your example, just as the developer can use Photoshop to bang out an ugly design, a designer can use jQuery to crank out some inefficient code. It’s no fault of the tools, these are great tools and we should use them, but having the right tools is no substitute for knowing how to use them properly.

  • david

    are jquery users fools because they can’t program javascript & use programming libraries instead?

    who cares. programming’s for geeks

    • Chinese

      Program does*

  • http://www.icvdm.com live webcasting guy

    Fools? Who wants to spend the time coding a Moving, Fading Circle (for example) in Javascript when you can do the same thihng easily with jQuery?
    Someone who is NOT being paid for their time, that’s who…
    Us “earners’ will use Jquery and thanh the incredibly clever programmers (yes they are programmers) that build these tools.
    Heck I buy JQuery code snippets as a way of making sure the coders know it’s worthwhile to continue their efforts!!

  • JoeAtWork7

    It all comes down to the right tool for the job. If I can (i.e. have the time and budget), I like to roll my own, it’s cleaner, quicker, and I know exactly what it’s doing without looking too far.

    Having said that, I’ve definitely used jQuery, MooTools, and DoJo…and likely will again. There’s a trade-off when using someone else’s code, but sometimes that tradeoff is required for a task.

    I agree, starting with some library like jQuery is an excellent way for a newb to get started. At that point, they can dive into the code, extend their jQuery a bit and find out what it’s really doing in the background…from there the sky’s the limit.

    I would also say I’m NOT a designer…at all. Not sure if I’ve heard a lot of disparaging remarks from any of my user groups…of course I typically steer clear of online discussions unless their in the scope of an interesting article…

    - Joe A. W.

  • http://www.blueicestudios.com Rob

    Whats next,

    HTML programmers saying HTML5 is for noobs?

    All in all, its the pissed off old guy next door that hates kids. jQuery being young, fresh and hip.. It scares the old guy.

    • andyrwebman

      You need to have a better argument for why something is good than “it’s new, therefore anyone disliking it is scared”

  • http://point4media.nl Wijnand

    A good programmer is a lazy one, why reinvent the wheel when you have excellent pirelli tires had your fingertips…

    • cir

      Agree 100%.

    • http://superdit.com/ aditia

      I’m too agree with you

    • me

      Thanks God Brendan Eich didn’t share the same opinion with you, otherwise we still stuck with VBScript… (and it’s indeed excellent one on those days of darkness)

  • adam

    What a bull shit.
    Totally wasted your own time and everyone’s time.
    Why Envato will publish such garbage?

    • Chinese

      Your shit is a bull.

  • marco

    What’s that of ‘real programmers’ vs ‘jquery users’ .. stupid thing. I agree.. wasting time article.

  • Sgt.Effer

    Write code don’t wax philosophical. There are noobs, we know, why should anyone read this article?

    • Chinese

      their*

  • ANTONIO LOSER

    lots of haters down here…

  • ikaw na magaling

    what can we do we are’nt programmers so we basically use jquery. i shud’nt read this article instead its non sense… *Yown* eh di ikaw na magaling lol!

    • Chinese

      English plz, fuck cunt.

  • http://www.youtube.com/user/izvarzone AntoxaGray

    When I started to learn javascript, I stuck on browsers inconsistencies and also was confused by DOM traversing.

    When I discovered jQuery, never used vanilla js since. Asked some people if I should continue learning js as well,but all they gave unconvincing arguments: «if you write on jQuery and not on js, you’re noob» or «users have to download 100Kb library». Of course I learned basic stuff like functions, arrays, cycles, and try to optimize my jquery code.

    • Chinese

      Cool story, bro. You should write a book about it.

  • Ian

    lot of people wasting time to tell you they think your article is a waste of time. smh… such a wasteful use of your time folks :-)

    I appreciate the article and agree that it needs to be said.

    I see insults and arguments all over various forums which take away from the helpfulness of the forums. It’s one thing to suggest constructive criticisms or corrections when someone is wrong but the arrogant jerky insults need to stop. I personally haven’t really been the target of such insults but have had to read through reply after reply of such nonsense to find the one reply that actually answers the posters question instead of attacking the poster for not being as knowledgeable as someone thinks they should be.

    I learned arrays, variables, loops, etc in javascript but then learned how to actually do visual things with my web pages and use ajax with my web applications with jquery first because that’s where I found the good learning resources and a centralized official documentation and language reference. After learning some jquery, I find it easier to figure out pure javascript for the occasional time when I need it because something might not be possible to do with jquery or it might be better practice to use pure javascript for whatever reason.

  • Dave

    There is a certain snobbishness that has been present in computing certainly since I started more than 25 years ago.

    Anyone remember BASIC = Bodgers And Simpletons Incomprehensible Cobblers?

    Before that it was kids in the playground arguing over whether a Sinclair Spectrum was better than a Commodore VIC20 or Atari 400!

    If you make something easier to use then you lower the bar for entry. This is a double-edged sword. Some people are incredibly creative but a high barrier for entry will deprive us of their contribution.
    Some people are perhaps better off pursueing other careers but a low bar for entry allows them to create havoc.

    I’m very much in the camp of “it saves time and therefore money and delivers business benefit”.
    I think the quality of websites using jQuery is for the senior developers in an organisation to police and govern.

    It is possible to produce rubbish in almost any language its just that some languages are more tolerant of rubbish than others.

  • James

    I hate Jquery.

    It seems like programmers now-a-days are getting lazy. All they want to do is bang out some quick code for clients using a massive bloated framework. The result of this is a script with inferior performance and a size well in excess of what it needs to be. I know plenty of programmers who use Jquery for simple things such as a fading effect, which can be done in less than 1kb in pure javascript, but about 92kb with jquery. In my eyes, that is pretty appalling.

    • Chinese

      Your face is pretty appalling.

  • NOSQRL

    First off, I must confess: I am one of those jQuery-Designer-Fools.

    I use jQuery for stuff a good javascript programmer would do with less code and better performance, I use it for random things that are obsolete and just appeal to the eye.
    I reached a point where I have enough understanding of it to go with the pure framework and no plugins for most of the stuff I do. And thats pretty much where I feel comfortable now and decided to stay.

    BUT! I don’t go around telling people I know how to program javascript. I don’t bill jQuery functions as “javascript programming”, nore do I pretend to offer such service. And that, imho, is the important point: Know your skill, and know where you are. And don’t start doing projects that are way off your skills just because you think you might be able to glue it together somehow with an awful jQuery mess!

    Because basically, – excuse the term – who the fuck cares if the slideshow and little fading effects are good, solid javascript, as long as they work?!
    And which small business/artist/freelance/whatever-client has the money to pay for different professionals working on a simple project?

    When it comes to this, I admit: I am no programmer. I am a webdesigner, who understands enough of programming to deliver a solid wordpress installation with a state-of-the-art theme that doesn’t completely suck on the code behind. If I encounter a project that requires professional programmers, I’ll team up with one or hand the project over as a whole. Period.

    —-

    If you’re stuck ranting about quality of such work, just because you can do more complex, stop a minute and think if “complex” is what a client who wants “fast and simple” asked for.

    • NOSQRL

      Or maybe take that analogy:

      There’s a similar issue in DJing subculture.
      Digital DJing has made things so easy, that to be a DJ nowadays you don’t need to be able to sync two vinyls to the same speed and beat. Program does it for you. That brings up three type of digital DJs:

      1) Those who know nothing about how to DJ but like to promote themselves as such, because it has become accessible to them, yet don’t know how to build a good set, select good music and make a good show.
      2) Those who have those basic skills but enjoy the ease of having a program do the rudimental work for them.
      3) And those who are skilled professionals that use old-school techniques, yet explore these new ways to create even more complex setups.

      Point 3 is remarkable, point 2 is acceptable and point 1 is just showing off with the light version of something you barely master. When it comes down to any tool that eases a task, it’s about knowing what you can and cannot, and not showing off with things anybody could do.

      • http://twitter.com/pushplaybang Paul van Zyl

        having actually been a DJ in a past life starting form vinyl and eventually changing to a digital setup for gigging ease and a far greater degree of flexibility I really love you analogy. Spot on.

      • Chinese

        I love you analogy too, duck.

      • andyrwebman

        As a DJ and programmer (over 10 years experience in each) I do like what you’re saying. Give people too many bells and whistles and they forget how to make a basic sweet tune. Also, the computer doesn’t always agree with you about what is good and if you can’t peer closely at what’s going on, you’re rather screwed.

  • http://www.webdesigntaiwan.com David

    Okay, I’m coming out of the closet –

    Yes, I too am a ‘copy and paste’ Jquery user that knows enough about Javascript to be dangerous ;-)

    Thanks,
    David

    • Chinese

      Nice to know you’re gay.

  • will

    Hi ho …

    While I have no great commitment to jQuery, I found this post a little too revisionary for my thinking. To me it reads a bit like someone telling Edison that, “Of course you should have used a metal filament in a vacuum tube.”

    Hindsight is clearly much easier for some than taking a leap to produce something simple. Design is about invisibility (imho), a post criticising jQuery for being “too easy” is high praise indeed actually.

    There will be alternatives to jQuery and improvements. Just like Visicalc is now almost universally replaced by Excel and OpenOffice — Back when, no one else had the idea to computerise a spreadsheet. Don’t take //too much for granted// folks.

    Cheers … w.

  • http://www.flashminddesign.com Matt

    I certainly hope its not, I am starting to really get into it :) much in thanks to Tuts Plus! However you make some excellent points….

    From an animation point of view:

    In the 90′s it was the animated GIF’s that was the latest trend…. I am shocked to say I miss those sites :)

    Early 2000 – today was and is Macromedia / Adobe Flash which people took a great interest in.

    And than spawned JQuery off of Javascript and several other libraries followed.

    Now on-to the dangerous part. People are hacking, and slashing code like its no bodies business. Turning what could be good looking sites, into an ugly montage of animated garbage in the background (source-code). This isn’t entirely their fault. The industry we ALL work in has become increasingly harder. Now employers post requirements that several years back would of been a 2-person gig and probably a high 5 figure salary. The new “rapid-release” strategy by Firefox is forcing designers to re-validate and even browser test sites every 6 months.

    We are play catch-up and its only going to get harder.

  • http://nath.is Nathaniel Higgins

    I learnt jQuery a couple of years ago (I wasn’t actually new to javascript), and I feel I’m a lot better at vanilla javascript, then I was prior to learning jQuery.

  • fadedreamz

    I totally agree with the writer.

    jQuery atleast giving everybody a chance to develop something.

  • John

    I am a designer that uses jQuery……if you have a problem with it your probably a JavaScript nerd! The bottom line is that I build sites for myself or my clients that are functional and aesthetically pleasing. I am the only person that I know that would ever “view source” of any website. Most real users of the innerwebs have a hard time finding where to login to a site. My point is that it doesn’t matter how you get to a final product what matters is that your final product works.

    • Physicsmazz

      While I agree that your statement is mostly correct…I’ve had a recent experience where I didn’t fully optimize things. Everything worked fine when I tested with around 100 users…however thing didn’t work so well around 1000+. Everything grinded to a halt.

      After learning the proper way to do things and hours of swearing and rewriting, things work much better!

      So, my point is, sure you might be able to cobble things together and make it work…just don’t assume that it’s going to continue to work.

      • Chinese

        No.

  • Adrian

    I use jquery for all my front-end needs. It’s quick to implement, simple to understand, and easy to learn and use. Of course, there is definitely a need to understand raw javascript and how the DOM works – but jquery helps the newbie and novice alike to get to that point.

    For all I care, the haters can keep hating while I continue to get paychecks.

  • http://gadpedia.com RIZE

    Can any one tell me how far can we go with Jquery ? I used it in two ways.. Applying plug-in and using it for ajax.

    • Chinese

      I use it to write codes for websites.

  • http://doman.art.pl kartofelek

    jQuery have one great disadvantage. Lots of plugins is very poorly written.

    • http://www.richardscarrott.co.uk/ Richard Scarrott

      This is very true which is where I’m hoping the rewrite of plugins.jquery.com will help separate the wheat from the chaff by enforcing the use of source control and making the package.json schema a requirement.

  • Physicsmazz

    jQuery has made me want to learn JavaScript. Without jQuery I probably would have steered clear of JS completely.

    Some people might just learn some jQuery and that’s all they’ll ever need…and that’s fine. You’ll get other programmers that can now see some potential in JS that they might not have seen before and they’ll begin their trip through JS.

    To me, it’s very similar to WordPress or CakePHP or similar frameworks. Sure you can use them without really knowing all the smaller details of PHP, but ultimately you’d be better of knowing the underlying technology.

    • Chinese

      I don’t like JS. Help?

  • Physicsmazz

    Quick question…to those of you complaining about jQuery allowing people to write shitty code:

    Why do you care?
    -There’s a pretty good chance you’ll never go on that site.
    -Oh goodness, you mean I have to download the whole extra 90kB??? I’m on slow satellite internet and that extra “bulk” don’t bother me at all.
    -If all that crappy code does break, they’ll have to hire someone that really knows what they’re doing…job security.

  • http://www.richardscarrott.co.uk/ Richard Scarrott

    I think jQuery get’s a lot of stick because too often people don’t recognise what jQuery is; a DOM, Ajax and Animation library. It doesn’t provide any way to organise and structure a code base so if you’re building anything other than the very basic and just using jQuery it’s going to end in tears.

    I feel it’s important to research other libraries, frameworks and tools to work out how to best architect a web site or app which might mean ditching jQuery and working with Sencha, DoJo or Mootools (i.e. libraries / frameworks that overlap jQuery’s functionality) but could also mean investigating frameworks (backbone.js, knockout.js, JavaScriptMVC etc.) and UI libraries (jQuery UI, Wijmo, kendoui, jQuery Tools etc.) which compliment jQuery as a DOM library.

  • http://www.jasonjnewton.co.uk Jason Newton

    Great article Jeff!

    I have to say that I have been trying to get my head ‘around’ javascript for some time now all to much frustration! I’m a designer by trade but I’m also trying to add some web development skills to my arsenal.

    HTML & CSS were the more easier solutions to start with and I then decided that it would be nice to add javascript as an ‘essential’ 3rd string to my bow. However as I seem to have a ‘creative brain’ and not a ‘logical brain’ I have found it sometimes difficult to work it out. This is where jQuery has saved my sanity, it seems a lot easier to get my head around, ad as mentioned in the above article, once I have mastered it I will turn to javascript to further my knowledge!

  • http://xu.sentsin.com sentsin

    I’m a Chinese web developer,I think rejection jquery is meaningless,It is just a tool,You can choose to use, or not.
    In China, there are many javascript superior, they don’t use jquery, because of their own writing class library. But they also does not despise those jquery users. There’s an old Chinese saying called every man has his hobbyhorse.

    My English is very poor, please understand

    ——贤心

    • Chinese

      Cunt.

  • http://jsweeneydev.net84.net/ Jeffrey Sweeney

    I’ll admit that JQuery’s great for browser compatibility, but I would never use it in a project unless a client demanded it.

    First off, the library itself encourages bad practices. The site documentation itself shows examples of injecting html via a string and mixing webpage logic with presentation with content. It’s funny that it’s mainly the JQuery devs that think injecting raw HTML from an AJAX request is a good idea.
    It’s a maintenance nightmare, and I’ve had to stomach through impossible-to-read code more than once thanks to JQuery’s “best practices”.

    What’s most ironic however is JQuery’s slogan “Write less, do more”. 90% of the JQuery code that I’ve come across is roughly the same length as vanilla JS, the 10% being code that relies on DOM selectors so heavily that the code is impossible to modify in the future.

    In addition, developers that rely on JQuery for everything can limit themselves to what Javascript is capable of doing. Everything Javascript does becomes something JQuery must be able to do. StackOverflow is filled with questions like “How do I check if a checkbox is clicked in JQuery”, or “How do I hide an element in JQuery?” This is of course easy to do (prop() and hide()), but developers just assume a framework is needed to do these things.

    Someone programming in vanilla JS will probably spend roughly the same amount of time programming functionality as a JQuery dev will spend scouring the web for plugins, attempting to integrate them, and making unnecessarily challenging minor modifications per client request. My old job had a mobile website that required over a MB of JS plugin code for a simple RSS feed (I reprogrammed everything it did down to about 30 lines of code).

    Libraries aren’t evil, but they certainly can make your life (or future developer’s) a lot more painful if they aren’t used intelligently and in moderation.

  • Ivan

    The overwhelming majority of jquery users do not have any degree in software development.
    For last seven years I interviewed hundreds of JS programmers. And for some reason, jquery fans usually do not known any of software design principles. But wait, to hell software design! They do not now even basic patterns and algorythms! Currently, in my company, js developers often get bigger salary than objective-C programmers. Because not you can not find even one! And we even have two definitions: jquery-guy and javascript programmer.
    That says it all.

  • good parts, bad parts

    jquery contains some good parts. the bad part is the developers. because there are tons of (not only jquery) plugins available, developers are getting lazier everyday. those plugins are big and most of the time bad.

    i guess 90% of javascript developers today use jquery and other libraries to do stuff that can sometimes be written in less than 50 lines.

  • reel2reel

    you people should become a real programmers and write stuff yourself instead of using boilerplates and libraries.

    • Chinese

      U mad, bro?

    • http://twitter.com/ruffocracia _R U FF O

      you must be millonaire, don’t you

  • fauxsoup

    The problem with JQuery and frameworks in general as learning tools is precisely what you describe as a benefit: the abstraction of “scary” details. Yeah, it’s easier to pick JQuery up and run with it than pure javascript, but without understanding the underlying implementation or how to write NORMAL javascript, you’re infinitely more liable to make scripts that are inefficient, sloppy, and ultimately unworkable.

    More importantly, it removes the imperative to learn these things.

    The fact of that matter is that programming is really, really, REALLY difficult to do at all, and even more difficult to do well. Learn how to program from scratch first, then learn to use the libraries.

    Honestly, I’d compare it to learning how to build a fire with a lighter before learning how to build one with sticks. Yeah, it’s a lot easier when you have a lighter, but eventually you’ll find yourself in a situation where you need a fire and all you have is a few sticks.

  • http://twitter.com/pushplaybang Paul van Zyl

    Awesome article Jeffrey.

    Libraries are fantastically useful – the learning cycle you describe is almost exactly what I’ve been through. Funny thing about all that library code is, I’ve probably learned more about practical Javascript and programming from inspecting the jQuery source than anywhere else.

    By creating lower barriers to entry and easy uniformity between browsers , jQuery is encouraging a community to grow because its accessible. Once you get past the “select some crap from the DOM and toggle its display” part of your learning (this is what generally gets people interested in my opinion) its pretty natural to start wanting to do more and therefore learn more.

    Personally, jQuery saves me a f**k ton of time, which translates directly to getting paid.

    Isn’t the beauty of open source projects that if you think something can be better and you’ve got the skills, you can jump in and get involved?

    We need to encourage better practices when using jQuery (Jeffery ways free tutsplus jQuery course is a pretty good example of that) not look down your nose because you think you’re some how better than all that jQuery mish mash. We all start somewhere, jQuery seems like a pretty good head start to me.

  • Dallin

    I disagree that jQuery users don’t know Javascript. That’s a gross over generalization. The truth is that it has almost the entire market. Thus, it has people using it of every skill level. But sense it has the majority of the market, it also has the majority of new javascript programmers. Other libraries might not have as many new users too because new users usually start with what’s most popular and easiest to learn, which jQuery is both. So while it’s true that jQuery has many newbie’s, what you have to remember is jQuery ALSO has the most of the javascript gurus and power users. Why? Because it has most of the market.

    All in all, I think that if a product has most of the market, especially being open source, it is probably the best on the market, and those who say people who choose it are idiots are probably idiots themselves who are attacking the product just because it’s popular. That’s not to say certain people won’t prefer other products because everyone is different, but preferring a different product and attacking those who use the popular product are two different things.

  • Abhishek Gahlot

    In Simple language-> No they are not fools.

  • andyrwebman

    Thanks to a fellow developer, I’ve finally seen some neat and understandable jQuery, and I now believe that it can be used to write nice code. Unfortunately, something about it seems to discourage people from doing so! Functions embedded several deep are – in my opinion -

    To a certain extent you seem to have to declare functions inline. But there’s no reason why you can’t just put a stub to a more complex function outside of the jQuery line

    e.g.

    //Do jquery to associate class

    $(“#myClass”).Change(function(){bigFunc()}

    //now writethe big function OUTSIDE of the associating line

    function bigFunc
    {
    //write lots of complex code here, maybe even use lines of jQuery in it

    }