« You Can’t Motivate People | Book: Inside Apple »

Learning JavaScript With Code Year

  • Comments (-)

Six weeks ago I saw a tweet about a new thing from Codecademy called Code Year. It promised to teach you how to code in 2012. I signed up right away and am now one of 396,103 people who have signed up as of this moment.

Like a good MIT graduate, I’ve procrastinated. When I was an undergrad, I liked to say things like “I want to give all of my fellow students a four to six week handicap.” Yeah – I was the dude that blew off too many classes at the beginning of the semester. I did read everything so I eventually caught up pretty quickly, but fortunately MIT drop date was late in the semester so I had plenty of option value on bailing if I’d left things too long.

Every week for the past six weeks I’ve been diligently getting an email from Code Year saying my next lesson was ready. Tonight, after dinner, I decided to tackle week 1 and see if this was an effective way to learn JavaScript. While I’m able to program in PHP and Python, I’ve never learned JavaScript. I’m not really proficient in either language (PHP or Python) since I don’t write any production code anymore, but I’m comfortable with the syntax and have done my share of simple little things. JavaScript – not so much. And that seems silly to me since so many people that I hang out with eat JavaScript for breakfast.

Week 1 was trivial. I liked the Code Year lessons and the Codecademy UI is very good. I’ve scored 350 points, have completed 42 (simple) exercises, and have four badges, I only did the lessons for week 1; I’ve left the problems for another time to see if the syntax actually sinks in.

I been spending some time with friends in Boulder talking about different approaches to teaching people how to program. One of the initiatives, which is starting to pick up speed, is called the Boulder Software School. Within the group we’ve been pointing at things like Code Year, but I don’t know if any of us have actually given it a shot. So – in the spirit of experimenting, I’m on it. It’ll be interesting to see if any real proficiency with JavaScript emerges, or if I just learn the syntax for another programming language that puts angle brackets in funny places to delimit conditional statements.

February 17th, 2012     Categories: Programming     Tags: , , ,
  • http://cynthiaschames.tumblr.com/ Cynthia Schames

    As a totally novice programmer (and a fairly nonlinear thinker with no MIT heritage), I was disappointed to find Codeyear’s lessons to be shockingly dull and opaque.  I slogged along and completed lesson 1 and lesson 2, but wasn’t enjoying the process.  I was completing actions, but I felt like a trained seal going through rote motions without understanding why, as opposed to participating in a learning experience. 
    I asked a very smart friend for an alternative learning channel and he suggested Eloquent Javascript: http://eloquentjavascript.net/  For me, the Eloquent JS experience has been far preferable.  It tells a story about WHY you’re performing a specific action and gives the context in which this action will become meaningful in the future.  To me, that made all the difference.  Now I’m enjoying myself and actually learning. 

    I write this comment in hopes that others for whom Codeyear’s presentation format was less than ideal will know that there are other options out there for those of us wired to think a little differently.

    • http://www.feld.com bfeld

      Super interesting feedback. I’ve only gone through the first lesson so far so I’ll reserve judgement on the rote nature of it. I’ll also go take a look at Eloquent JavaScript and see how it compares / whether it reinforces things for me.

      • http://cynthiaschames.tumblr.com/ Cynthia Schames

        @bfeld:disqus Let me know what you think, if you remember to circle back here.  It’s a totally different experience. It may not work for you, but I sure love it. (And BTW it was @FAKEGRIMLOCK:disqus  who told me about it. Smart dino.) 

        • http://www.feld.com bfeld

          He is indeed a smart dino.

          • FAKE GRIMLOCK

            ME, GRIMLOCK, NO CAN ARGUE WITH FACTS LIKE THAT.

          • http://cynthiaschames.tumblr.com/ Cynthia Schames

            @FAKEGRIMLOCK Hurr. Stalker.

  • http://byJess.net/ Jess Bachman

    I signed up for codecadmy just two days ago and already I find it much better than a previous service I was using, Treehouse.  Codecademy really nails the “in the experience” UI where as Treehouse was more “watch this video and regurgitate”.  I don’t learn well that way.  I do wonder about retention tho, as Cynthia points out.  It will be interesting to see how it goes.

    Stepping back a bit, I do question how effective the whole learn-on-you-own interactive thing is.  If I were in chicago I would definitely be in codeacademy.org/

    • Anonymous

      No one is going to learn how to program just through Code Academy. I don’t know about retention, either, but I know that it takes hours a day for years to be really good (as it does with many other activities).

      If you don’t have any of your own projects to code, Code Academy will be pointless for you. Figure out something cool you want to do, like a simple mobile web app or something, and make that your goal.

      • http://byJess.net/ Jess Bachman

        I’m pretty sure codeacademy.org won’t let you in unless you are motivated and have something you want to do.  They have a limited number of seats so they have to be selective.

        I don’t think this is really a replacement for 10,000 hours of practice.  I know my motivation to code is to better understand the developers I work with.  I’ll never be as proficient as them, and that’s ok.

        • http://cynthiaschames.tumblr.com/ Cynthia Schames

          Nope, they let anyone in.  Even me. 

        • FAKE GRIMLOCK

          LEARN CODE REQUIRED FOR TALK TO PROGRAMMER. NOT REQUIRED YOU BE ONE. 

          • http://byJess.net/ Jess Bachman

            uh yeah.. thats what i was saying.

          • http://petegrif.tumblr.com/ Pete Griffiths

            It can give you some appreciation of and respect for the nature of programming.  That is valuable.  But I don’t think it can provide much else.  It’s like spending a few hours on the violin so you can talk to a violinist.  ”Gee- what you do is really hard.  Harder than I thought.  Good job.’

            I suspect the most valuable thing a manager can learn from trying to learn to program is to not interrupt programmers when they are working.  ’Flow’ takes time to attain and getting all the moving parts back in your head takes time after a question that so often could have waited.

        • Anonymous

          Learning to code to talk to programmers seems like 
          learning grammar to talk to novelists.

          I guess it’s a start.

      • http://www.feld.com bfeld

        I’ll respectfully suggest a modification to what you said. I think you should have said “no one is going to become a good programmer just through Code Academy.” The nuance here is “good programmer.” And I think the Code Academy folks would probably agree.

    • http://www.feld.com bfeld

      This is exactly what we are exploring with the Boulder Software School. The online training / teaching / learning is very different than participating in a real software development environment.

      • Derek Scruggs

        Brad, as you guys iterate on teaching methods, take a look at Zed Shaw’s stuff like Learn Ruby the Hard Way - http://ruby.learncodethehardway.org/

        I can’t personally recommend it because I haven’t use it, but he’s a big believer in his methodology and has lots of street cred with the cool programmer kids.

        • http://www.samedaydr.com/ Rich Weisberger

          thanks! this ruby book looks awesome!

  • DaveJ

    Sounds like you’ve found a new avenue to procrastinate on writing your book.

    If it seems like Javascript is nothing special or interesting, that’s because it’s true.  It’s just another language.  The only thing unusual about it is that it has access (when running in a browser) to a whole lot of browser objects (also called the “DOM”), which enables you to manipulate or interpret the display.  When it’s not running in a browser… well, the only reason you’d do that is if you don’t know any better languages.

    • http://www.feld.com bfeld

      I have indeed found another way to procrastinate.

    • http://freepository.com John Minnihan

      Actually, nodes.js on the server is incredibly useful.  The non-blocking event driven model makes it super fast (from the browser perspective) and gives you access to the system thru first class objects whose returns you can pass across the wire.

      node.js on the server coupled w/ jQuery in the UI is incredibly powerful, lightweight + runs virtually anywhere the V8 Javascript engine is supported – 100% Javascript application development.

  • http://www.samedaydr.com/ Rich Weisberger

    Learning English doesn’t make you a great writer..but you’ll never know you could have been a great writer unless you learn English.

    I’d like to see programming classes be a part of the primary school curriculum, not to make students great programmers, but to start to click in that part the brain that programs.

    The new foreign language :)

  • http://twitter.com/fishnette sandra fish

    As a journalist who’s dabbled a bit in Python/Django and returns to programming in fits and starts, CodeAcademy seems fine, though i’m not sure my retention/understanding is all that great having been through about the first three weeks or so of it. 

    One of the things that helps me learn is the ability to relate the programming to real work i want to do. i’ve also been working through a bit of the Bastard’s Book of Ruby, http://ruby.bastardsbook.com/, created by one of the news technologists at ProPublica. Because it focuses the exercises on things that journalists would want to do, it all seems much more logical to me.

    The Boulder Software Schol sounds like a great idea!

    • http://www.samedaydr.com/ Rich Weisberger

      Thanks, sandra. 

  • http://www.myreci.com/ Vijay Nathan

    In the exact same boat as you, Brad.  6 emails and I’m 6 weeks behind.  Did you sit down and do all of Lesson 1 in one sitting?  Or did you break it up?

    I’m interested to know what your approach will be moving forward to make the most of the program (if you choose to continue).

    • http://www.feld.com bfeld

      I did it in one sitting. It took about an hour. I’ll try lesson two the same way.

  • Johuiom

    W3schools will teach you javascript in 15 minutes. It is my go-to-place.

  • http://freepository.com John Minnihan

    One of the first apps I wrote after learning javascript was the Ajax Logfile Tailer + Viewer:
    http://commavee.com/2007/04/13/ajax-logfile-tailer-viewer/

    I explain it, provide the code and have a working example there.  Given it’s liberal license (read it), it’s been widely used around the net.

  • FAKE GRIMLOCK

    BEST THING ABOUT LEARN TO CODE WITH #CODEYEAR IS… EVERYTHING! NO MORE SLACK! LEARN NOW!

  • Derek Scruggs

    Once you get past the basics, give jQuery a try. It’s a very expressive framework, and it does a good job of encapsulating some of JavaScript’s more advanced features like closures. You can start with simple DOM effects like showing/hiding stuff to get the hang of it, then dive into ajax.

    (BTW Disqus uses jQuery.)

  • http://johnbpetersen.tumblr.com John Petersen

    Thanks for this very timely post Brad. I too have hit the snooze button on my Code Year emails. I’ve been trying to teach myself Rails (with absolutely no programing background) and have let my Code Year slip. I’m going to dig into it now to see how far I can get. Will let you know how it goes…

    • http://petegrif.tumblr.com/ Pete Griffiths

      Rails is tough with no background.  Too much magic.

      • http://johnbpetersen.tumblr.com John Petersen

        Agreed. Tough but definitely worth it. And with a great community in NYC there are plenty of places to turn to for help

  • Keithlennonbv

    I started a course years ago doing HTML when “geocities” websites were still knocking about. I found the course fierce interesting. So yesterday I signed up “codeacademy” with my 9 year old daughter. She’s taking to “codeacademy” like a fish to water, they should introduce something like this to primary schools….

    Keitho…

  • http://www.facebook.com/vamsijkrishna Vam C Krishna

    God bless! You just made my day with this post. thanks.

  • http://www.facebook.com/people/William-R-Mosby/1176981657 William R. Mosby

    Hooray for Javascript. You can do amazing things with it compared to C. I’ve spent the last few months writing a modest drafting app in it (using canvas).

    I also got a baptism by fire in php and mysql when I volunteered to fix up my bicycle club’s creaky website. 24,000 files (of which probably thousands are out of production backup copies) written by a series of volunteers, a number of whom were no longer on speaking terms and none of whom seemingly talked to each other about the code they were building. Works fine again in its new mysql environment (the old mysql version was retired on short notice) but it took a lot of hours to get it done.

  • James Mitchell

    Given your programming background, I would be very surprised if you could not learn Javascript just by spending a few days with a good book and perhaps a tutor. It is not a difficult language to learn.
    The approach of spread learning out over a long period of time by studying something for an hour a week is not a good way to learn a subject that requires a high level of mental focus.
     

    • http://www.feld.com bfeld

      In general I agree. But I’m trying this as an experiment to see of it works.

      • James Mitchell

        Who needs to experiment? I am 100 percent certain that like me, you have tried many times both approaches (compact it in and spread it out) and I am 100 percent that the first approach worked a lot better for you (like me). This is like conducting an experiment, “If I throw a coin up in the air, will gravity bring it to the ground?” I can tell you the answer without your conducting the experiment.

        The less concentration a subject requires, the better the spread it out approach works.

        Another approach to learning a programming language is to wait until you have a specific task you want to perform and then learn what you need to learn to perform that task. It’s amazing how quickly one can learn something when there is a specific motivation. 

        • http://www.feld.com bfeld

          I’m not 100% this is true. Code Year (and Codecademy) is a new approach and given that I am very interested in this particular topic right now, I feel like an experiment is warranted.

  • Mike Briggs

    You should recommend a stress test to the site owners prior to mentioning in your blog. http:codeacademy.com has been down for the last hour and half. I can’t imagine they are doing routine maintenance during US prime time.

  • John

    This is great. Had a crappy morning and needed a little diversion – so I did 1 thru 8….

  • http://www.almirajbanqueting.com/conferences.html conference room hire

    I am in the process of adding Java to a moving companies site and this tool sounds very useful. Thumbs up!! 

  • http://www.colourflash.com/ Auto paint

      It’s a very expressive framework, and it does a good job of
    encapsulating some of JavaScript’s more advanced features like closures.

  • Kyle Kuczun

    You piqued my interest Brad. 

    After dinner last night I took on the initial set of Codeacadmy lessons. Impressive. Good UI and good introduction to the content. Nice to have the editor abstracted and added into the web browser.

    Week 1 lessons were a good self-paced way to get exposure to basic programming concepts. The lessons were bundled with good examples and helpful guidance. Each lesson built on from the last. This piecemeal approach works well.

    Is this leading the user to become a great developer or simply to understand a scripting language? The latter.

    I offer high marks to Codeacadmy on the quality of their course experience. The approach offers an excellent primer for learning Javascript. 

    If the objective is becoming a good developer the software school is the right approach and perhaps tools like Codeacadmy could be one part of the broader curriculum. 

  • Rich

    I want to toss out a thought…

    Anyone who wants to learn programming should first look at their reasons. If your goal is to make the computer do what you want. I would suggest you don’t learn programming but instead learn modeling. Modeling in UML (unified modeling language) using MDSD (model driven software development) methods is much closer to defining what you want than programming.

    If however, you really want to learn programming then get to it. Because, it takes a while to really learn “how to program” instead of just “how to hack some code”.

  • http://twitter.com/jlewku Jason Lewis

    For you who are local, Davinci Institute is hosting an open house on March 26th. They are taking applications for Davinci Coders, a 11-week program designed to take passionate, driven people from zero to programmer in less than 90 days.  

    http://www.davinciinstitute.com/events/593/open-house–introducing-davinci-coders-monday-march-26-2012

    As a “hustler” I’m applying simply so I can talk and communicate efficiently with developers.  After having my technical co-founder step away because of family health issues, the other founder and I were left trying to communicate to developers in a foreign language.  It has been a very rewarding but difficult process.  We found that developers get pitched ideas all of the time and they instantly discredit you and the idea.  It is your responsibility to validate yourself and your concept.  Not being able to talk their language and explain exactly what you need significantly hinders this much needed credibility. This item alone makes you just another “idea person.” 

    What developers, VC’s, incubators, mentors are looking for is a team of “doers.”  They want to see progress that proves your ”great” idea is in actuality, a “great” idea.  With each founder at least understanding the background of what the other does (hacker understand hustling, hustler understand hacking), the team will be that much more powerful.   

    If anyone is interested in going to Davinci Coders Open House, message me and we’ll meet up before or after the event.