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.
I guess I don't understand the Author's sense of entitlement here. Someone took time to build a tool to help her learn to code, and she found it difficult. Different people learn in different ways. For some (many?), making it fun and adding badges is a way to keep the motivation going when things are confusing. I don't think the Codeacademy guys are trying to build the perfect tool for everyone, they're trying to build something that works really well for some people.
This "business" launched, it made a claim, and it failed to deliver. Simple. Who cares if it's a startup or well established business. A customer arrived at the business based on the claim, they had a poor experience, and now they expressing a need for improvement. Is that still allowed these days?
It's good to hear Zach's commitment to advancement, and we're all looking forward to it, but the Author is spot on.
What sense of entitlement? She's only expressing that she would like to be easier and clearer. Are these not valid wishes? I did not interpret her text like you at all... Oh well
I'm one of the cofounders of Codecademy. I posted this on Audrey's blog, but I'm posting it here as well. Thanks!
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.
Great response. Anyone using your site today and thinking that it is close to being the finished product... well, presumably they've never been in a startup office and looked at the massive roadmap of features, ideas, entire new sites, etc., scrawled on a big whiteboard.
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!
> 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.
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.
>>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).
Sorry, but students that get admitted to Columbia aren't real tough to motivate.
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.
I'm teaching myself to code right now, and have tried 3 different introductory courses/guides, including CodeAcademy. The problem I've faced with each one is I'd learn the same thing (methods, arrays, variables, conditional statements, etc) but was never able to piece together the practical use. I'd get what if/then clauses mean, and what arrays do, but never could grasp their broader functionality or use case in an actual program.
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.
Here's the little secret: Find something you want to create, and build it. It's as simple as that, bmahmood. You have to have that inner fire to build something.
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.
I’ve opted to learn JavaScript, mainly because I think it’s one of the essential building blocks of the Web.
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've given codecademy a try and must say while it's fun to get through the task as a non-programmer who's trying to learn it's confusing. Often I can complete a task but then not really understand what I just did.
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.
i mostly agree with this. the way you learn how to code is the same way you learn anything else: by doing it. that is, you want to know so bad that you try to do it or someone forces you to do it. that's 80% of the battle.
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.
I first seriously(?) learned how to code by finding a used Pascal book and reading it thoroughly. That was some time after getting my first computer and not knowing where to find a compiler! (I'm not counting forgotten Logo from summer class long ago or using elaborate triggers in a MUD.) I had serious learning problems getting far past that unguided. Finally learning C from some lecture notes was a growth spurt though I had looked at some C before that. Trying to calculate the fewest coins to add up to a sum and finding optimal new coin took like a couple weeks! LOL
But learn-it-yourself is not the way you "learn anything else". There are almost no other professions where this is the case. Surgeons and lawyers aren't expected to learn on their own. The fact that software engineers are expected to do so seems crazy to me -- and potentially dangerous.
Surgeons are expected to learn by doing; they're just very heavily supervised when they start on live people and they spend time on grapefruit, dead pigs, and dead people first.
Reading about a new technique is great. Applying that technique is how a surgeon would learn to do it.
I am kind of surprised by this, especially given all of the positive comments. It took Audrey's post to make me realize that if I were reading HN, a lot of those positive comments would be, well..technical people.
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 taught myself to code (HTML, CSS, and a small amount of PHP — Wordpress) while I was doing a Graphic Design ND. I think the hardest part for me, like Audrey, was trying to understand what a lot of the terms mean and also the concepts behind them.
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 find myself saying this a lot and I mean no offense but HTML and CSS aren't code. If you can't build a binary search and sort then it doesn't count ;)
I will never understand why some things are downvoted. Anyone with the power to do so knows that HTML is not a programming language and not indicative of hacker prowess.
Perhaps visiting the W3C website (http://w3.org/) is a good place to start if you are looking to understand how the Web works. Learning to "code" is not a short journey for the uninitiated, but the journey can be a valuable and rewarding one.
I thought myself to progrman in the Flash 5 days, because i really wanted to make interestign things with Actionscript. Javascript was easy after that, and after came PHP, and then Python and Java and Ruby and ... and after i knew programming well, I enrolled to the university to take my CS degree.
But i have to say that it is easier to learn something (on your own or with help) if you have a context to apply it to. I already knew web design and doing html/css at the time so when i decided that maybe learning actionscript and javascript can be more useful, i already had ideas i wanted to make with it.
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.
I am not a non-CS programmer but when i wanted to take a look at python I just went through Zed Shaw's Learn Python the Hard Way. I would recommend that to anyone who wants to start learning programming. Its a no bs approach to programming and emphasizes focus on the right things.
That read a bit like a kid reading how to do math, but never actually practicing it, and then complaining how text book doesn't actually teach you math.
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.