2 April 2014

Do you want to build a project? (Come on, let's go and play.)

This time I'm going to play it safe. Maybe too safe. But hey - I've always been against criticising something just because it's fashionable.

So, let's talk about Codecademy: the Python track and beyond.

I was wary of Codecademy. Exercises without apparent theory? Mmmh. A little stern teacher inside me kept repeating me sermons about pampering myself too much. But then, at PyCon 2013, Jessica McKellar introduced Python for beginners with the hands-on Codecademy tool. And I fell in love.

Codecademy is the Addictive and Playful Way to approach the Hard Way. It's the cool aunt who gives you her Led Zeppelin CDs, teaches you not to give up listening even if it's not what you're used to, but never brags about "in my times". And as an icing on the cake she tells you about her escapades when she was listening to that song.

You do your exercises and you don't fool yourself into thinking that you know how to do something just because you read the theory. Even better: your exercises are checked as soon as you've done them, so you know if you know or you don't know. You soon become committed not to lose your winning streak, so you exercise every day. You want to grab those nice colourful badges, so you challenge your fear of not being good enough.

And you learn. Not so slowly, and surely.

The topics are introduced at a fundamentally constant pace. If you pick up the basics quickly, you can dash through the first tutorials and then take your time to absorb the harder stuff (and since the track touches concepts as far as lambda expressions, the harder stuff is not always so intuitive). If you are the kind of student who gains velocity over time, you can spend your first days to get acquainted with the first concepts and then enjoy the more complex ideas.

After you've learned your concepts (even if you didn't notice that you were learning, you were too busy solving the problem at hand), for each section of the track you have a project to put in practice everything: a project on larger and more satisfying scale than an "exercise section" in a traditional textbook, but small enough not to derail you in an overwhelmingly ambitious plan. (There isn't one for the Advanced Topics, but once you'll be there you'll be old and wise enough to take care of yourself. It would be nice, but that's a minor issue.)

And then, you go beyond! The community gives you nice projects. You can give back to the community with nice projects.

You try your skills at dealing with APIs, and you learn the wider concepts you need for those APIs.

You learn to ask questions and get answers (and that's another skill, and a most useful one) discussing with other students in the forum: a good practice for when you will eventually interact with others on Stack Overflow.

To top it all off, you have a glossary that will help you in those "I knew what this word meant"/"How should I say that?" moments.

Theory and practice, play and commitment. You have it all. You just have not to fall into the trap of "it's not serious if it's not painful."


The title of this post is a reference to my favourite movie of this past winter, the story of a young woman who learns to control her power and to put it to a better use, for the fun of everyone including herself. Here's something to show you its funny side: