I’ve kept up with the courses so far (just four weeks so far).
There are however a number of ways that I would like to see Codecademy further develop. Since they are still in a certain ‘honeymoon’ phase, with popular and mainstream press having taken notice of what they are doing, they should make the changes soon, and maintain momentum (to be clear, they have launched a number of new developments recently, so it appears they are following this approach, but there’s more potential still).
But before we dive into what in my opinion they should (or could) do next, let’s take stock of what Codecadmy is, what they have done so far, and what they have announced that is in the pipeline.
a better, more interactive way to learn programming by actually coding
- The screen is split into three parts – the lesson, the ‘input’ screen (where you type your code on numbered lines) and the ‘output’ screen (where the results of your coding appear). There are also links to a ‘scratchpad’ (more input/output space for you to practice coding) and a link to a Q&A forum, for users to liaise with each other around questions and problems they are facing (a sort of “crowd-sourced teacher’s assistant”).
- Just recently Codecademy included a new section on the website which allows users to create and submit new ‘lessons’, for experienced coders to participate in the preparation of the lessons. Also recently ‘launched’ was a series of ‘meetup’ events, for Code Year participants to meet up in person, in cities around the world (however this is largely left in the hands of participants to organize, should they want to meet).
While not yet available, Codecademy has indicated that two more programming languages, ‘Ruby’ and ‘Python’, are to follow later (sounds like some sort of Indiana Jones film, doesn’t it?!).
So what else could Codecademy do to improve its offering to its users?
I’d like to split them into five categories:
1) Provide a syllabus:
- Explain where this is all going – what is going to be possible at the end of the course?
2) Provide guidance around leading practice ‘process’ for good coding:
- This is a big one – I’m an amateur hobby programmer, but it’s clear to me, like many things, to do coding properly, and to be successful in coding, one should plan properly, then implement the plan (not just start writing code). Of course, it’s fine to give people a taste of coding, to entice them into it, given them a feel of what it’s all about, but eventually it will be important to help people ‘storyboard’, plan out their project, and build the code to deliver it, not vice versa.
- At the moment Codecademy is still very much focused on the pure coding (although the approach to the ‘Blackjack’ project did begin to highlight an approach of thinking first, sketching out on paper, then coding). Maybe the planning approach is coming, but without a syllabus (#1) it’s difficult to know …
3) Be open with the data:
- How many people are using Codecademy?
- What does the distribution of scores, exercises completed, badges, etc. look like?
- We want to know – it’s interesting, and
4) Make it even more social / interactive, between the users:
- The Q&A forums, and the Code Year ‘meetups’ are a good start, however it feels like more could be done to generate community feeling among the Code Year participants. At the moment it still feels like a diverse collection of individuals …
- Why not create optional ‘coding / hacker challenges’, such as a a coding knock-out competition? (eg, enable similarly scoring participants to agree a start time, then both participants receive an email with access to a challenge, and the first person to complete the challenge wins – in a tie, the person with the fewest ‘run errors’ wins …)
- In addition to a ‘Q&A’ page, offer a separate feedback, ideas and comments page where users can separately submit innovating ideas to help improve the site (like my efforts in this blog) – some users are putting their ideas into the lesson Q&A forums, but the ideas are being drowned out among people asking for help with their exercises.
5) Show example code, for a more complex program
- We won’t know how to make it yet, but we can start to get a feel for ‘hacking’, one of the key attributes of a good programmer.
6) Remove the bugs (!)
- Unfortunately there are still some bugs – see here, here, here, and here.
- Maybe it’s not so straightforward to solve the bug(s), or maybe only a few people are experiencing it (although I suspect more than just those who have reported it in the Q&A). Nevertheless, bugs bug people – they can indicate a lack of care or interest in delivering a quality product.
- At the very least, communicate with your users who have pointed out the problem, and are showing frustrations.
That said, my wish-list above is perhaps asking too much – at the moment I’m unclear whether Codecademy can ever be more than just a ‘nice intro’ versus actually a first step into developing some coding talent. Some of my suggestions above make me wonder whether I’m trying to put lipstick on a pig – in the end, if you want a full blown computer science course, maybe that’s what you should start with?
Time will tell what Codecademy is capable of (watch this space!).