Update: Chris Williams (one of the organizers of JSConf.eu and the speaker in the above talk) posted this today and I thought it echoed well some of my own sentiments. It’s a great watch for anyone interested in hearing more about this topic.
My Letter:
Today I wanted to write about a topic I’ve been contemplating on quite a lot lately, something inspired by the PromoteJS campaign – I feel there’s a general lack in understanding of JavaScript fundamentals in some parts of our industry…and we need to address it.
Over the past few years, the introduction of easy-to-use JavaScript frameworks and libraries have had an undeniably huge impact on how widespread JS is now used – we all know this and on the whole it’s a really good thing.
Projects such as jQuery (MooTools and Dojo) have lowered that barrier of entry for people who previously feigned exploring JS just because of some of the difficulties previously experienced in getting their code to work consistently well cross-browser. Indeed, using these projects make life a lot more stress-free for the everyday coder wanting to enhance their web apps with some JS powered functionality.
The big issue now is that because developers are getting so used to using abstracted code – they’re not spending that much time learning about what JavaScript is really about nor how having a knowledge of this can actually improve the code that they write (even if they’re using the abstracted form). This is a problem.
Limited numbers understand fully the concepts behind JavaScript development patterns, event propagation, prototypal inheritance, closures etc and I’m finding (as someone that interviews and hires people) that a few believe the notion of understanding how to use a JS library or framework to be ‘good enough’ for them to get the job done. If you’re a designer it probably is, but not if you’re a developer.
The reality is that as a JavaScript developer, not only should your knowledge extend beyond the use of jQuery, but you need to be able to think like an engineer. If a project you’re working on requires you to do something beyond the capabilities of what a framework or library offers, you may actually be asked to go in and improve on it. If you don’t understand some of the complexities behind vanilla JavaScript, you’re not going to be able to make those changes.
I feel that this is a problem which isn’t just down to beginners and intermediate developers not investing the time to learn JS fundamentals, but we in the industry that already understand these concepts are also to blame (I include myself in this group).
Why do I say this? If you’re new to this industry, doing a quick search on Google or Twitter will likely result in you finding 1000 new articles about jQuery plugins. What you won’t find is people who regularly advocate and use jQuery explaining to beginners why they absolutely need a good base understanding of JavaScript. Better yet – you won’t many articles that teach them these fundamentals which are written in 2010.
‘But the content is already out there. They just need to google it!’. If the industry is new to me and I look-up JavaScript, I’ll find tons of useful pages from 1998 explaining all the things I can do with it, but if 80% of the recent content out there implies that it’s more important for you to focus on learning about abstracted code, I’m not going to know otherwise. You can blame this on naivety, but it’s a reality we need to tackle.
I guess what I’m asking is that we in the industry try to encourage learning regular old JavaScript a little bit more – not just the language, but the development patterns and everything else that goes with it.
I’m not asking that people stop writing about jQuery – I contribute to the team and my site is pretty much dedicated to it, but what I ask is that we as bloggers, developers and enthusiasts try to remind developers that JavaScript is worth spending time learning properly in the long run.
This won’t just benefit new developers – at the end of the day, it’ll benefit us too because this will increase that pool of solid talent we have to draw from when building the solutions of tomorrow.
Feel free to agree/disagree or be ambivalent ; – )
Addy.
PS: If you’re a beginner and you’re looking for an excellent piece of reference material that covers both JavaScript and jQuery, I recommend Rebecca Murphy’s jQuery Fundamentals book.

I agree. I started using JQuery in 2006, I believe, and I didn't know a bit of Javascript. I was using it to enhance the user experience of a project using the Django Server framework. I really disliked the work I was doing in Javascript until I finally took the time to read some books and learn about Javascript itself in 2009. JQuery helped me to move the project forward without almost any Javascript knowledge (albeit I had C, C++, and many others as background) – this is a good thing. But, now I am enjoying Javascript development, because I have learned some fundamentals, and techniques to help with cross-browser issues.
Timely… I jumped into javascript by using Scriptaculous and then jQuery. The more I used these libraries, the more I wanted (and needed) to understand Javascript and am now studying and writing my own JS. I think these libraries are great at getting people, especially those who aren’t hardcore programmers to use JS. But, somewhere down the line you’ll have to learn JS…
You' right, in my personal experience, I began to learn jQuery, because it's very easy, but I didn't have the knowlege in javascript to understand how it's works and improve my way to code.
Greetings from Veracruz, Mexico
Yeah, and we should all write programs in assembly language, because if we don't understand assembly then how could we possibly write good programs in Python?
It's a disingenuous argument that industry professionals have been making since the dawn of time. "All these new tools that make life easier — everyone would be better off if they understood how to do it the old way!" Well, yes, understanding the fundamentals makes you a better developer. But almost everyone has neither the time nor the need. Anyone who calls themselves a JavaScript developer should obviously have a background in JavaScript itself. For anyone else, including almost all web developers, jQuery (or MooTools or Dojo) is more than good enough.
Assembly is to Python as JavaScript is to jQuery? Utter foolishness, jQuery is a JavaScript *library* not a programming language! It provides a layer of compatibility over the different JS implementations and simplifies a number of operations but it's *still JavaScript!*
I would also like to mention that Assembly Language and Python have nothing to do with each other on a conceptual level. So knowing Assembly Language, while commendable, will not do *anything* to help you write Python programs; you have to *know* Python if you want to do that. The same goes for JavaScript you cannot claim to know the language if you only know the library.
I started learning JS from Prototype then there was Mootools, jQuery and now Dojo. Due this time I read few books (JS Patterns, High Performance JS by N.Zakas and Crockford's Good Parts) on plain JS and my conclusion is there are many different ways to solve the same problems, but there aren't well explained complex RIA. Only experienced developer can actually decide how the project should look like as a whole.
WOW, great post but I think the battle mm……. this is not the first time with flash, DHTML, XHTML, Ajax, Javascript, jQuery, there is a lot of competitors in the past, present and future, and flash is what it is, an amazing tool for create amazing media experience. A lot of clients request from me flash websites, flash applications, flash animations, it wont stop, and if we check theFwa and others galleries, we will see that flash is the same acroos all these years, but there are other technologies that can help us to do the job the right way, excellent, but Flash is flash and nothing will change that, not even mr.jobs.
This is exactly the topic of a javascript conference I'm organising for early 2011.
Javascript is a fantastic language, and the developers need to know how to leverage it properly.
As always, another great article. Checking your blog daily for the latest posts has become a routine for me now. I am practically addicted to your blog.
May I ask what the difference between blogengine and wordpress platforms is? I have been visiting a number of blogs lately and note that some are blogengine and some are wordpress. What’s the difference between these two and which platform would be better for a celebrity related blog? I am planning on starting one.
I really disliked the work I was doing in Javascript until I finally took the time to read some books and learn about Javascript itself in
I am pleased that I detected this blog , exactly the right info that I was looking for! .
I am really impressed with your writing skills and also with the layout on your blog. Is this a paid theme or did you modify it yourself? Anyway keep up the excellent quality writing, it’s rare to see a great blog like this one these days..
You’re welcome!
The theme is bits and pieces really. I wanted to make sure that the next version of my site was completely responsive and that was the driving force behind the approach taken to reworking it.