From the title, you probably think I’ve got some major beef with Codecademy. I don’t.
In many ways, I admire them. Since 2011, they’ve introduced countless millions to the noble craft of software development, and have launched the careers of thousands of developers. That number looks set to soar with the release of their first Java course. But at the same time, their product – and to be more precise, their teaching methods – leave a lot to be desired, and are leaving thousands frustrated, and unsure of where to progress with their formative development skills.
So, what’s so terribly wrong with Codecademy?
And how can you, as a journeyman coder, circumvent these flaws to reach your programming potential?
Problem One: It Doesn’t Teach the Mindset
Being a programmer is more than simply being able to regurgitate syntax. It’s about having a particular mindset, where you are able to systematically breakdown a problem into individual and logical steps, and then recreate that in a language that the computer understands.
You need to be able to look at a problem at a grand scale, and understand how each step you take affects the rest of the program. Moreover, you need to be able to tolerate a high level of frustration, and be able to persevere when you hit a mental brick wall. You need to be able to be able to research bugs and error messages, and communicate your problem to others. Simply put, you need to be able to think like a coder.
Codecademy does not teach you to think like a coder.
Rather, it teaches you the basics of a number of programming languages, without any real instruction on how you’d apply them to real-life problems.
So, how can you get that invaluable experience?
Personally, I’m a big fan of Project Euler and Reddit’s Daily Programmer SubReddit, which features enough mind-bending programming puzzles to sink anyone’s teeth into. I’m a big fan of the latter, because you’re encouraged to share your code in order to receive feedback from other members of the community.
The Daily Programmer subreddit, as the name suggests, comes with daily puzzles for all skill levels, from absolute beginners to hardened code jockeys.
Problem Two: Blink and You’ll Miss It
One of my biggest frustrations with Codecademy’s approach to teaching is that it feels so incredibly transient. You learn something, then you complete a challenge, and you scarcely revisit that topic again. Blink, and you’ll miss it.
It’s unlike the approach taken by Duolingo, for example, where you have to regularly revise and reinforce what you’ve learned in order to progress.
So, if you want to cement your progress, you’re going to have to do some deliberate practice outside of Codecademy. One of the best ways to do that is to simply write code. Many programmers – and I include myself in that cadre – also swear by deliberate notetaking and regular revision with flashcards.
Paper flash cards are cheap and effective. In fact, you can buy 1,000 on Amazon for less than thirteen dollars.
For those digitally inclined, there’s also a number of apps you can use. I’m a huge fan of Anki, simply because of how customizable it is. It boasts thousands of community-built flashcards, and is extensible through its powerful and well-documented application programming interface (API).
I’m currently using CodeCode.Ninja – which, full disclosure, was built by my friend and former MakeUseOf writer Erez Zukerman. This subscription service is built with programmers in mind, and you can build a living, flash-card based knowledge base of everything you need to know.
What I like about the approach taken by CodeCode.Ninja is that to progress through your deck, you’re forced to deliberately type out the answer to each card. This, I’ve found, helps build up your muscle memory.
Problem Three: Syntax is Not Programming
Again, Codecademy will teach you the syntax of a programming language, but for the most part it won’t tell you how to apply it. Which is why you often see questions like this, which was posted on the aforementioned LearnProgramming subredddit.
There’s other stuff that’s skimmed over. Codecademy doesn’t teach you how to write code that’s clean, and stylized in order to be readable and easy to understand. It doesn’t teach you how to write code that’s self-documenting. It doesn’t teach you about package management, and how to use other people’s code in your own code.
This is something you can only overcome by leaving the safe harbors of Codecademy at the first possible opportunity. By writing code, and learning on your own steam.
Problem Four: Too Much Cake, Not Enough Vegetables
The reason why Codecademy is successful is because it takes coding, and transforms it into addictive bite-sized pieces that are easy to accomplish, and offer instantaneous feedback. It’s the candy of coding.
The problem is, learning to be a developer often means that you have to learn about things that are important, but from the offset aren’t terribly exciting, or for that matter, easy. You don’t learn about the theory of programming. The stuff that Donald Knuth spent thousands of pages – and the best part of two decades – writing about in The Art of Computer Programming.
Codecademy essentially shields you from the sticky, complicated part of programming. There’s no way around this, other than by being disciplined, and doing your own research. If you don’t know what you should be looking at, consider asking more established developers for guidance.
Codecademy Isn’t That Bad
There’s a lot to like about Codecademy. They’ve introduced thousands to the fundamentals of computer science. But there’s a lot of room for improvement, too.
Have you used Codecademy? Did it hurt or hinder you? Tell me about it in the comments below.