Why Codecademy Shouldn’t be Your Go-To Resource for Learning to Code
The phrase “Learn to Code” is seemingly ubiquitous today, as are the number of resources future coders can use to hone their skills. While O’Reilly books and YouTube channels offer plenty of opportunities to improve, many self-learners still seek out some kind of interactive tutorial, one in which students can learn on a single, integrated platform. Taking note of this when I took the plunge into the software development space, my first foray into coding was on Codecademy.
On first glance Codecademy is an extremely useful resource for learning to code, offering detailed courses on 12 different programming languages to their students in a fun way. The UI is engaging and easy to use, and students can easily get assistance working on problems through a series of hints and tutorials.
Most excitingly for me, Codecademy’s Web Development Career Path is especially detailed, promising students to see the light at the end of the tunnel. You get the sense that once you finish a few labs on JavasScript promises, Git, and CSS you’ll know everything you need to be a real software engineer. In fact, the speed with which you’re able to grasp basic concepts is probably the best thing about Codecademy. Making learning fun is no easy task, and the designers of the site truly do make these important concepts enjoyable to learn.
Fast forward a couple of months and I stalled out. After using Codecademy every day, I could easily edit HTML or write a basic for loop. Unfortunately, I couldn’t do much more. After all that time spent coding I didn’t have a very good sense of how all these disparate pieces of computer programming fit together, how I could build mental models to solve more complex problems. Worse yet, if I were called upon to build something on my own (without any of the oh-so helpful hints), I’d have almost no idea where to even start. I started to feel confused. If the website says I’m 60% of the way towards learning everything I need to learn to become a web developer then why do I feel so stuck?
This post is not intended to attack Codecademy or their educational approach. I think they do some things extremely well, and the ease with which they allow future programmers to learn the fundamental building blocks of software is valuable. But Codecademy isn’t so great at teaching, well, programming. Consider this quote from one of my favorite programmer/writers:
“Programming isn’t about what you know; it’s about what you can figure out.” — Chris Pine, Learn to Program
The more I learn about programming the more I encounter this belief from those that do it at the highest levels. While Codecademy can teach you the magic words to log “Hello World” to the console, it isn’t so good at showing you how to build intricate, truly interesting projects. At its core, Pine and others teach us that coding is about breaking down complex problems into ever simpler ones. Experienced developers can always look up this method or that library, but the real deep learning of programming comes through successively stretching our brains to solve problems just outside our mental grasp.
Cognitive psychologists have known of this educational phenomenon for years. In particular, researchers like Carol Dweck have shown that people who have a “growth mindset” — the notion that a person’s intelligence is malleable and they themselves can enhance it — have more success in achieving learning goals. Key to the idea of a growth mindset, what some might call “grit,” is the idea that as we struggle to do hard things we get better at doing hard things. As Angela Duckworth notes, “Like a muscle that grows stronger with use, the brain changes itself when you struggle to master a new problem.” (Duckworth, A. (2016). Grit: The Power of Passion and Perseverance).
What these recent studies in human development show us is this: the more time we spend pushing ourselves to learn outside of our comfort zone, the more successful we can be at learning. Although Codecademy’s methods can help you learn small snippets of code, it doesn’t teach you how to sit in front of a computer stuck on a problem, analyze an algorithm’s logic, read some documentation to see if you’re using a given method correctly, search Stack Overflow for people who’ve struggled with similar problems, and then apply all that information back to what you’re working on. Moreover, Codecademy’s ample hints make it too easy for students to give up on hard problems rather than learn how to persevere through bit-oriented adversity.
After reading about this research I gained a greater appreciation of my personal experience with Codecademy. Suddenly it made sense why I couldn’t stitch together software development’s key tenets. While useful for some, Codecademy ultimately didn’t facilitate my brain’s ability to strengthen its neural networks.
None of this is meant to smear Codecademy. It provides a fun way to learn, and it could be a great place for some to pick up foundational programming concepts. That said, for those looking to become card-carrying members of the programmer community, there may be alternative resources out there better suited to your needs.