Rebecca Murphey: An Online jQuery Class
blog.rebeccamurphey.com
blog.rebeccamurphey.com
When I first learned to use jQuery, I went hog-wild, running circles around fellow devs who didn't use it. I got so into JS, that I started writing more logic in the client, because I could, and because JS, with it's loose typing and object notation was just a fast place to write code.
Now, two years later, I've embarked on a large project, an HMI in an industrial sector, and I of course made heavy use of jQuery. After 4000 LOC, the program needed some serious re-factoring in order to handle the next level of complexity.
To handle the complex demands of the application, I decided to use the Closure Compiler, which is great! The only problem is, that now, I'm writing typed code, in a non-typed language, and there's not much to really like about the language, besides the fact it's on all web browsers and has a ton of third-party support.
I guess my point is: I think tools like Closure Compiler and others which produce "compiled Javascript" are the future, if anything is. Maybe we'll see Python, or Java get JS like support in the browser, but if I could talk to the me from two years ago, I'd tell him: "Start using the Closure Compiler, and use less jQuery."
It's never the case that the shiny new technology blows away the busted old technology; more like the new stuff becomes another blade in your swiss army knife.
What's the learning curve for Closure like and how did you come up to speed on it? It is like an API or more like a tool like gcc?
It sounds like you said (1) you had a great experience with jQuery, (2) writing Javascript is a much worse experience with Closure Compiler, (3) therefore use the Closure Compiler and not jQuery.
Could you please explain why you like the Closure Compiler, so I can understand the jump to (3)?
(1) "running circles around fellow devs", "JS, with it's loose typing and object notation was just a fast place to write code" (2) "now, I'm writing typed code, in a non-typed language, and there's not much to really like about the language" (3) "Start using the Closure Compiler, and use less jQuery"
If you're going to make a big project, I recommend CC from the start.
I also wonder if (runtime-checked) pre/post-conditions could bring much of the benefits you speak of, with the option to use them sparingly and avoid the "drag" part. In other words, make the type annotations optional and only put them where it looks like the extra safety is important enough to be worth it.
In any case, I'll cross that bridge when I get to it. Thanks for the heads up.
As well, if you are doing large apps with jQuery then you should take a look at Backbone. It helps organize the JS application architecture. In saying that though there really are better toolkits for large JS apps that are designed to provide the frameworks of application architecture in your app.
Dojo is the one that I use and recommend, once over the learning curve you will find that it is designed to handle large JS application is an intuitive manner and not just by making it look like Java in the browser. It exploits the best parts of Javascript while bringing in language constructs from several schools of thought to provide a very robust toolkit.
I have used most all of them and it is my choice when the webapp surpasses a certain point in complexity. I always tell people that I can save them a lot of time when it comes to JS toolkit selection and then I tell them if it's small use jQuery and if it's large use Dojo. It is meant to be slightly humorous but there is a grain of truth to it.
There is nothing faster to learn and more intuitive that jQuery but it comes at the cost of reduction in it's robustness. There are tools to address this but to me they always feel like bolt on's.
Dojo on the other hand trades up front intuitiveness for robustness. A trade off that toolkits like Closure make is to make JS more like Java to bring back some of that intuitiveness but at the cost of some of that robustness. Dojo is unapologetic a JS toolkit and uses JS concepts as first class citizens. It then borrows best of class language constructs from other areas of language progression.
Anyway, my long winded point is, if you are having issue with growth of your jQuery application you may want to give Dojo a try. Rebecca did and was pleasantly surprised:
http://blog.rebeccamurphey.com/2009/11/12/dojo-confessions-o...
I am of course not speaking towards the instructors ability, time, or guidance. Granted, $350 is a steal compared to formal education; but if teaching 20 people how to AJAX is worth upwards of $8,000... I need to move on to teaching.
(I'm more interested in Clojure, and would have gladly paid the $1k in expenses to attend the Clojure Conj if my employer hadn't offered to cover it. http://clojure-conj.org/ That was just a two-day event, rather than a whole month of training.)
More arguably: this information is information that is not only documented thousands of times- but there are even plenty of human resource available for free as well (consider stackoverflow). I'm certainly not suggesting Rebecca value her time at nothing. But of all professions, I'd expect programming to be the first of which you can truly learn for free.
I don't mean to be argumentative, I am just being idealistic.
You can actually learn anything for free today -- assuming that your time is worthless. You might not be able to learn it well or very quickly, but you can certainly learn it for free.
CodeLesson's biggest competitor is Google. Google can get you all the information you need about how to do pretty much anything -- bake a soufflé, sire a baby, write a compiler. But it won't tell you where to look for the information you want, it won't tell you exactly what you don't yet know, it won't evaluate your work, it won't tell you when you've learned enough to do what you want, and it won't validate what you've learned. That's where a human instructor comes in.
If you think that paying to take a course is expensive, then great -- read the online text for free and get what you can out of that. That's what it's there for. But taking a class is really about getting access to the knowledge and experience of an instructor. That's what people pay for.
2) The feedback I have received from students in past classes is that they have found the classes anything but worthless. If you learn well by looking things up on Google, more power to you -- no one's making you take the class. On the other hand, plenty of people benefit from a more guided approach that includes the one-on-one attention of an instructor. Such an approach may expose them to valuable information they didn't know they didn't know, or it may let them make a connection that they wouldn't have arrived at for months or years otherwise.
3) While you may not value training from a subject matter expert, plenty of people do. Companies routinely pay hundreds of dollars per student per day for in-person, on-site training. The cost of the training is expensive; I can only assume that companies consider that cost -- thousands of dollars per day -- quite reasonable relative to the cost of poorly written, unmaintainable code.
4) Finally, if you would like to try your hand at leading trainings for thousands of dollars a day, do it! To find students/clients, expect to spend the next several months traveling to and speaking at conferences; writing detailed, researched blog posts; helping out in support channels; networking at local and regional events; and maybe writing a book or two -- all for little or no money, and perhaps even at a cost to you. Point being: there's a lot more work that goes into becoming someone capable of leading a training than just showing up and cashing a check.
CodeLesson courses are taught online; there are weekly assignments but no set meeting times for classes, which works well if you have a day job, as most CodeLesson students do.
That said, there is plenty of structure, including weekly readings, message board Q&As, and several hands-on assignments each week that are evaluated by each course's instructor. Most courses have screencast videos and some have live chats.
Another thing we're planning are free courses -- our first one (on programming the Etsy API) will take place in December. Taking a free course might be a good entree to what CodeLesson is about if you're unsure as to whether it's for you or not.