A number of recent articles in tech journalism have referenced the popularity of Codecademy; I’d like to kindly remind audiences that what is popular is not necessarily good. There are a number of questions that, as both an educator and as a student, I feel Codecademy must address before it can become a tool worthy of all the attention it has received.
Who wrote these lessons?
An assumption one often makes when taking a class is that the instructor is credible and in some way qualified to be teaching the material. In most cases, a student knows in advance whom the instructor will be and can assess that person beforehand. Students often choose to take – or not take – a course based solely on the instructor.
It’s not immediately obvious, but after some searching I found that half of the 22 Codecademy instructors were either undergraduate students or their identities could not be verified.
Codecademy allows anyone to create courses and lessons. That’s not a bad thing in and of itself, but authors’ identies and qualifications should be more transparent.
Where is the instructor presence when the learner needs help?
Questions are an integral part of the learning process. When questions arise during a Codecademy course, students are directed to a multipage Q & A section filled with entries from other students. If the student is lucky, and his question is well-articulated, he might see responses from other students.
But without an instructor presence in the forum, how is the student to know whether the response to their question passes muster? The Codecademy forums are classic examples at times of the blind leading the blind.
What’s up with the unit testing?
In a recent Codecademy challenge, I wrote an efficient solution to a problem using recursion, a concept that had been covered in previous Codecademy lessons. My code did not pass Codecademy’s unit tests despite being a better solution to the problem, because I didn’t use a while loop.
This begs the question, how exactly does Codecademy test the code I enter and run? Given the above example, one would assume the unit test is looking for specific functions and conditionals. At other times, it appears they’re testing the code’s output – which is often just a string. For example, I have failed lessons because my code outputs a prompt that says “hello” instead of “Hello.”
The lack of consistency in testing sends mixed messages about what the student should be learning. Is the process important, or the output?
How accurate is the information?
It may seem like a matter of semantics, but as students develop their skills and expand to other languages, this misrepresentation is going to cause a lot of confusion. It may also cause people to call into question the other concepts they learned via Codecademy, thus undermining the hard work they put in to learning in the first place.
Where’s the order?
New Codecademy lessons are released every week, and one would naturally assume that these lessons should be taken in that order. And yet there’s no obvious chronology in Codecademy – learn this before you attempt that, if you will. The resulting “curriculum” is a confusing mess for the learner to wade through on his or her own, and may result in someone attempting recursion before they understand looping.
Building upon curriculum over a period of time is important. Students should demonstrate that they understand concept A before moving on to concept B. Without a clear, relatively consecutive order, students are likely to give up on the learning experience altogether.