I've spent the better part of the last 2 months learning how to code with Codecademy, and though there are some issues that need working out (yes, answer feedback can be erroneous and the crowd sourced tutorials can lack flow) I've found it a phenomenal resource. I didn't want to read a book. I didn't want to be deterred by configuring and downloading new software. I wanted to learn basic syntax and be able to go to my browser, pick up where I left off, and feel like I was building something, and toward these ends (oh... and it's free) I've found it extremely helpful.
In short, I am the ideal user of Codecademy and have really enjoyed the experience relative to other resources available.
I have to pry...what is the most useful thing you've been able to do with what you've learned so far? I've taught Ruby to beginners and though it hate the configuration process, at least I can show how to do useful things pretty quickly, like writing a loop to pull down a set of webpages. I want to teach JS to beginners but can't think of useful things to do...there are neat things, of course (such as JQuery animations)...but I'm looking for practical tasks.
How about using parse.com's new javascript database layer to abstract the requisite server-side dependencies. (disclaimer, I've never used it myself). Then you'll be able to teach a user how to setup a simple one page web app, maybe a todo list, that used jquery's xhr requests to set and get data from the database.
Alternatively you can do this entirely with localStorage, problem there is that you need to provide an extra lesson about why localStorage doesn't work "online" (across the network).
I definitely think javascript is at a state where it's actually easier to understand the underlying principles of programming, i.e. why design decisions are made and how each component is integrated with the next component. Contrast this with rails where everything is magic, and I would much rather learn from a bottom-up kind of approach. When the front-end logic is all taken care of, Your next lesson will be to build "the part that parse.com is taking care of". So you throw up a sinatra app maybe, provide 2 REST endpoints etc. Thinking about applications as a composition of integrated services (database, database api, UI, application logic, etc) proves a lot more understandable and also has the benefit that it's a very mature way to look at things actually!
Just writing this get's me excited to start teaching my friends again. The problem is it's very hard and very exhausting (in a good way but I only have so many hours in the day!)
The biggest problem for me keeping the iceberg manageable. I should let them know just how many TONS of stuff they will eventually need to know, but ideally I want to do that in a procedural fashion so that it makes elegant sense.
That's a cool idea but I wonder if this is too complicated for the average beginner? I did COmsci in school but I did not easily understand how the DOM and xmlhttp API related...I was a perfect example of the programmer who Crockford says is wrong for hating JS because all we did was run to jQuery (and he's right)
I can't imagine how frustrating it is for a total beginner to understand the mechanisms, even if they are web desires with some experience with the DOM.
The good thing about teaching a language like Ruby or Python is that you don't have to build a webpage. In fact, most people are very content with not publishing on the web...and so they are reluctant to study JS because they think it's only for web development.
But with Ruby, you could write something that sucks in Craigslist results and reformat it so that you don't have to click through to see the pics...and then store it as a local file that is written to every 5 hours...I did this plenty of time when doing a furniture search...
I know you can hack Google tables/fusion to do some of this, but that's a whole new layer of things to learn...whereas everyone gets basic text files existing on the HD
It's funny you say that actually because I would fall into the category of being all about the web. I'm self taught and learned 100% in a web environment. I actually didn't have any experience with pure scripting (data-mining and processing) until my job required it a couple years back.
I think it probably just comes down to preference. I'm positive that a large portion of people that "want to learn to program" really mean "make a web application", but that's not to say that scripting isn't equally rewarding/fun. HN is filled with cool posts about how to make little command-line utilities that do xyz -- yes very nice indeed!
Lastly, FWIW, I sure am glad you say "ruby" as opposed to "rails" because I can't imagine the DOM being harder to learn than everything that rails is taking care of for you under the hood.
Yeah...I'm not saying they shouldn't be about the web...as I fit in that boat too. But when I think of most of the web creations I've produced, virtually all of them have come from being able to crunch/gather data (even if it's just spitting out HTML for every row in a dataset) at an efficient speed...when you have that much info, the incentive to publish is greater :)
But yeah, ruby != rails. That is most definitely something I clear the air about right away.
In short, I am the ideal user of Codecademy and have really enjoyed the experience relative to other resources available.