Wednesday, June 5, 2013

Review: Codecademy

On Codecademy, a person can learn to code for free, even someone who knows absolutely nothing about programming. You'd have to be pretty dense or unmotivated, or think you are pretty dense or unmotivated, to not be able to learn how to code from this site. But, it's not without its drawbacks and straight-up flaws.

The quick, easy lessons are broken down to the smallest parts, so you can spend as little as three minutes a day or as much as all day every day building your skills. Like a video game, the curriculum uses progressive complexity (levels), rewards and has a social element. It is kind of like a Facebook game, except you get something of value out of it. (c.f. James Paul Gee)

The site offers multiple lesson tracks within a number of coding languages: HTML, CSS, jQuery, JavaScript, Ruby, PHP, APIs, and there are likely more on the way.

I personally used the site as an absolute novice to get a head start on my first JavaScript class, then again to extend my knowledge after that quarter. And, I plan on returning for some of the other offerings.


Collective genius?  Is that an oxymoron?  Whatevs.


Here is a piece of the genius that I love about the information age in the time of web 2.0: crowdsourcing and collective intelligence. Codecademy produces user-generated lesson tracks, curating them through user-generated evaluation! I mean, talk about leverage! Talk about socially driven evolution of content and technology!

Etc. But, that model does cause problems. Like biological evolution, things are constantly under development and change. This can cause a track you are working on to become obsolete, which interrupts your badge earning! Ugh. But, then you realize they replaced the track with a better one, which makes you wish you would have been doing the better one the whole time.

I mean, as a user, you are like a guinea pig used to cull out the not-so-great tracks generated by hacks who maybe are only like three levels ahead of you in Codecademy, and who often don’t seem have a lot of knowledge of pedagogy or even just writing in English. I came across a couple of these. But, look, they are learning too. We’re helping each other, right?


Easy, Whiskey.  Wait, who's Whiskey here?


Anyway, Belle Beth Cooper of Attendly wrote a critique of Codecademy. Her main argument is that it is not very good for absolute beginners, because there are too many basic assumptions about coding that are not explicitly taught in the lessons. I think there are some basics left out, but this is not really a problem, per se. I mean, I had a couple times when I felt kind of like I came to a wall because there was something I was not getting, but I did not know what it was. But, I worked through it, either using the hints supplied, or using Google or w3schools (which I found through Google), or just plain thoughtful trial and error.

Admittedly, I did know that there was a difference between a web browser and the internet.  But, look, if all you know is that you can use the code you're learning within the Codecademy framework, that is enough until you're ready to figure out how you're going to get it to work in the real world.

Here's the thing, Cooper. If a person arrived at the Codecademy site with the intention of learning to code, that person has enough prior knowledge. First of all, the person can navigate the web, knowing there are such things as web pages. Look, users have some reason for being there -- a website idea, or they want to be more useful at their job, or just plain curiosity. I mean simply picking a language to learn means that you have to know (or, to figure out) what each is used for and which would best meet your goals.

This all highlights the fact that they have some idea that there is something you can learn to do called coding, and it makes computers do stuff, maybe even the stuff you want computers to do. That's all you need to know. Codecademy's target audience is anyone who wants to "learn to code" not people who want to "learn about coding" or people who can not get to the site. You have to do the work...when you're ready.

I think a lot of people need to get in there doing stuff, trying to accomplish things (even the silly tasks within Codecademy), in order to have an adequate interest in the kinds of basics Cooper says are necessary. You really do not need to understand anything other than how to follow directions and pay attention to language to start learning code on Codecademy.

Don't get me started on the countless wasted chapters read and hours spent in class during the first couple of weeks of classes, "learning background," "building foundations." These "basics" were either old hat to me, or not connected to my motivations for taking the class. And, they were not necessary to start doing the stuff of it.

Learning a subject is not linear, so why should a course determine which angle you come into it at? Why not start in the middle and let the doing, the challenges, the frustration and confusion guide you in where you need to fill in the gaps and extend your knowledge? These will fuel your motivation and curosity, hopefully.

And, here’s my rant on how annoying I find it when people just throw up their hands when they encounter things they don't understand.  I mean, what happened to curiosity?  People need to learn that they can learn things by encountering them in use, not just by having things explicitly explained (side note: could the return to "common sense" contextualized application be the next step in the information age?).

Take the meaning of new words. Kids acquire language and new vocabulary mainly by encountering them in use and trying it out themselves. Only later do we use dictionaries, which are totally useful, but not necessary. Think about it. How and when do some people get intolerant of ambiguity, intolerant of not knowing for sure whether they "know" a thing?


lmgtfy


Anyway, someone who actually wants to learn to code will be able to do it just fine on Codecademy, and encountering the uncertainties will only prepare them better for real world coding, IMO.

That said, there are other resources I have found useful as I learn to code, resources that supplement Codecademy and will get anyone through the rough patches -- primarily w3schools and Google. Perhaps Codecademy could refer people there from the get-go?

Of course, some might then find the lessons on w3schools better and give up on Codecademy. And, of course, the ease of access to “answers” provided by Google is undoubtedly (to my born-in-1981 mind) a factor in expanding the populace of people unaccustomed to figuring things out. O, the irony. O, the humanity.


The bugs bug me, but not as much as...


Also, Cooper mentioned that Codecademy is buggy and hard to navigate. It is totally buggy. There were times when I knew that my code was right, that I followed the directions, and it even produced the right result in the console log, but the lesson did not approve, didn’t pass me along to the next lesson.

Cooper’s got to be kidding me about the site navigation issue. The site is one of the most user-friendly sites I have encountered. It uses the same sort of mechanisms and structures as the most popular social media sites and whatnot, so even if you have been living under a rock, you’ll be able to find your way around – unless you’re one of those people I mentioned earlier who just don’t normally pay attention to the way things work. If that is the case, give up now. Actually, don’t give up now. Turn over a new leaf, and stop giving up so easily!


Here's how it works. The evolution of semiotic domains as seen in typical web tech, and why I am not a teacher


The home page is very simple and easy to read with essentially three main options, in tabs: learn, teach, about. Smack in the middle of the page, you can click “Get Started” or simply jump right into the first exercise window and start without even clicking. You just follow the directions and type your name. In this first lesson, you’re not programming, but you're getting acquainted with the structure of the lessons.

You create a user-profile. You have a dashboard to track progress, select next actions, connect with users etc. You can share your activity on Facebook, Twitter etc. You earn points, pass levels, earn badges, complete projects etc. You know, there is everything a person acquainted with using the web would expect, and someone not acquainted with using the web would undoubtedly catch on if they wanted to, IMO.

Sure, these types of user interfaces and semiotic domains draw on the typical user’sprevious knowledge derived from using the tech that led up to this point, so those just now entering the world of the web will have a learning curve. But, I mean, if all the new user has is an index finger, an eye (or, comparable access technology) and a touch of basic human curiosity and intelligence, the user will do fine.

These standard web features evolved in the environment of human use. By now, they are pretty well adapted to human intelligence. Forgive my snark, but it really isn’t that hard to figure out. (And…this is why I’m not a teacher.)

Anyway, Codecademy has other stuff going on now too. Check it out. It has a blog with posts like keyboard shortcuts you can use onCodecademy, an interview of a programmer doing a hackathon, how knitters arelike human computers, an announcement of a fellowship opportunity with Codecademy, meetups etc.  The company also started an after-school program to help start school clubs.

No comments:

Post a Comment

Respect.