Codecademy and the Future of (Not) Learning to Code
hackeducation.com
hackeducation.com
Educational tech pundits are so quick to judge new ways of learning based on the content they have right now. I'm incredibly excited by things like Codecademy (and obviously Khan Academy) because what we're seeing is the very beginning.
From the article: "If you were to sit me down in front of a blank IDE and ask me to build something, I wouldn’t have any clue how to begin. (And the fact that I know what an IDE is probably sets me apart from a lot of novice would-be programmers.)
I can set a variable..."
Go find either A) a bunch of college freshman who just took their first couple programming classes or B) a bunch of self-learners who just read their first chapters of a programming book, and I bet you'll find similar feelings.
I don't know if it'll be Codecademy or any other product that exists right now, but I do know that a tool that helps anyone learn how to program is something that's worth the chase. Let 'em get started.
It's good to hear Zach's commitment to advancement, and we're all looking forward to it, but the Author is spot on.
I’m glad you’re learning to code. In fact, I was in the same position a few years ago. Since then, I’ve tried everything - books, college classes, videos and more. For me, and for hundreds of people we’ve talked to, none of these traditional approaches, though useful for learning history or literature, helped it ‘click’ for us in learning to program. My cofounder, Ryan, has spent the past couple of years helping developers at Columbia learn how to apply their theoretical computer science skills to actually programming. He’s taught hundreds of Columbia students the basics (and beyond).
Before I start, I just want to point out that Codecademy is new. We started working on the project in the middle of August and released it a few weeks later. The money we raised is not just a show of support for what we have - it’s a sign that people are excited about the future.
I’ve been very upfront with everyone we’ve spoken to so far about what you can learn on Codecademy. At the moment, the “Getting Started with Programming” course is indeed very basic. It’s meant to show people that programming can be fun. As you said, you won’t come out of one course as an awesome developer (as I can sadly attest). Then again, you won’t come out of a freshman computer science course with the ability to be an awesome developer. It’s a long road, and that’s why developers are a hot commodity nowadays.
We only have three courses up right now. We’re working on hundreds more in other languages and at various skill levels. While you can’t learn the full stack from Codecademy now, you will be able to shortly.
Lastly, our experience has been that the badges and other aspects are a crucial part of the experience we’re creating on Codecademy for most of our users. If you ask most people what stopped them from reading their entire programming book (and we’ve talked to hundreds of people), it’s almost always that they aren’t motivated enough. In school, learning is motivated by report cards and teacher expectations. We hope we can build a motivational experience that pushes anyone to program - not just the stereotypical developer. We’ve made a conscious effort to reach out to underrepresented demographics who are interested in learning to program. You’ll see the fruits of those efforts in coming months.
Above all, we’re open to feedback as we grow. I just hope you’ll look at what we’re doing as a first attempt - not the final one. Please let me know if you have any other feedback.
I've had a play with codecademy and I think it is a promising start. As someone who fairly quickly falls asleep whenever I have to read or watch videos for extended periods of time, this sort of (guided) learning-by-doing definitely appeals.
Of course, education is fiendishly difficult to do well at scale, and you are definitely right to be focusing on what motivates people to learn... However, I don't envy you having to figure out what are the best bits to adopt from the sum of all the research done in this area!
Take notes, Mr Khan.
Sal Khan has already had millions of every kind of everyday students young and old chose to set aside their video games and sat down and work their math at KhanAcademy.org. Some nuns are starting sainthood talk for Sal at some Catholic schools.
Badges and achievements are awesome when done right, but will only go so far with motivation. Real, intrinsic motivation will come from realizing that you can create something with the skills you've learned. If you could somehow capture this in Codecademy I think you could score a decisive advantage against the traditional tutorial/book learning model of learning to program.
Context: I'm currently working on a spaced repetition app that schedules Japanese vocab/sentence flashcards for you. While it has achievements/badges for behaviour that's conducive to your Japanese learning, it also finds native content on the internet that you're likely going to be able to read 90% of (based on the vocab cards you've done well on). Realizing that you can actually read Japanese content for native Japanese (i.e. you can actually _use_ the skill you're learning here) is the biggest rush of motivation I've experienced. It pushes you to go on and see how much more you could do, way more than any badge or achievement could.
I recently started taking Stanford's CS106A class online, and its the only thing that's really clicked for me so far. The first few weeks teach you the same thing as other guides, but they create an introductory program for you to test out the basics, and help you learn the methodology of programming.
From there is where I realized what's lacking in most "learning-to-code" intro courses: they'll give you the tools to code, but don't help you learn the methodology of coding. I realize now its a very different mindset, and if you don't actually solve problems with those tools, its difficult to learn conceptually.
Hopefully CodeAcademy can crack this issue of helping people learn how to think like a programmer, and not just show the tools that programmers use essentially.
If you're interested in web applications, check out http://ruby.railstutorial.org/ It's free and an excellent resource for a curious learner like yourself. At the end of it, you will have created a tangible web application that you could even show your friends.
Best of luck!
I would say that JavaScript is (Not) essential, not essential at all.
The building blocks of web software are the agnostic components of LAMP (operating system + web server + database + backend CGI processor.) And, we're even removing some (all?) of those building blocks. For the front-end apps on the web browser platform, maybe start by painting, then learning HTML, then CSS, then JavaScript. Use JavaScript sparingly for special effects and extra help, but not as the main line of your story.
The most useful code, is code that is not even written because you don't need to (especially if you're not sure how to code in the first place), and code that gets removed is even better. And, interfaces that don't show themselves are a big improvement too.
My advice would be learn how (Not) to Code. Still, be persistent and learn how to code, but go even further and learn how not to code.
I'm trying to teach myself how to program for Android and find that pretty difficult. I do know HTML and CSS but when it comes to finding current, good information on Android I'm having trouble. I've ended up having to resort to purchasing books.
With HTML and CSS I learned at the P2PU http://p2pu.org/en/groups/all/?school=school-of-webcraft which I think is terrific if you get a good group and instructor.
mentorship, tools, and pedagogy (and badges!) probably make up the other 20% of the battle, though. codeacademy fits there. i don't know if what they have is effective or not, but surely they are smart enough to know that whether their courses are effective is very important to their business. hence, they will tweak, iterate, and improve to enhance that.
Reading about a new technique is great. Applying that technique is how a surgeon would learn to do it.
So now I'm torn. My girlfriend is a graphic designer who wants to learn to code, and I'll probably have her give CodeAcademy a shot. And then maybe CodeSchool, since I have a subscription.
How have the non-CS/programmers of HN learned to code? I learned programming in a CS context, so I don't really know how to tell people where to start.
I distinctly remember following a basic HTML & CSS tutorial and not being able to work out how to get the CSS to style the HTML. The example code worked fine, but the relationship between the two wasn't explained so when I wrote my own it didn't work.
I only learned of semantics 12 months after starting with HTML + CSS. It would have made a massive difference if someone had pointed me to a beginners guide (online & free, of course) that explained the way the web was born and how HTML is a way of assigning meaning to a document.
I think a lot of the problem is the people writing the tutorials and resources for this kind of stuff want to teach people something, while the people looking for this stuff want to learn it. Perhaps this is why a lot of Google's results for these kind of things are forum threads and other discussions (usually filled with outdated or plain wrong information, I might add).
I think the author's idea to "learn some javascript because later maybe i can take some node.js jobs" will turn out not that easy, because she/he doesn't have a context to apply it to, or better, he/she should have an idea/problem that javascript would solve, and THEN try to learn bits around it.