Review: Codecademy Pro
When it comes to self-directed learning sites, there's a lot of discussion about whether they actually teach you actual useful, usable skills; generally, this means stuff that you'd be expected to apply in day-to-day life as a developer. Over the past 10 months, I've been using Codecademy, one of the best-known of these. I was gifted a one-year Codecademy Pro membership from work (i.e. Codecademy did not commission me to write about them!). I've dabbled in a few of its courses, some of which are exclusive to the Pro membership. However, I have not actually completed any courses, for reasons that will become clear below. Since my Pro membership is winding down, I've been thinking about whether I want to fork out for another year.
Pros:
Most people will agree that the most important factor in successfully learning a new skill is practising it regularly — and for that, Codecademy's excellent. When I was starting out, even if I didn't have the time or brainpower to invest into an actual project of my own, I could do a little coding practice and continue my streak or make progress on a certain path.
It's also great to use as a warm-up before actually working on projects that require a lot of concentration. Maybe you just want to go over something while you're waiting for your first coffee of the day to kick in. Codecademy is good for that, too (with the caveat that if you want to progress, maybe consider looking into code katas).
Codecademy gamifies learning by introducing a "streak"; system which, I must admit, did motivate me. Maybe this is to me what the Duolingo owl is to a lot of people, but I really did want to keep my streak high! The user design is also nice, with that dopamine hit when you see the little tickbox turn green as you run correct code. I also liked the diversity in names, genders, and cultures of characters in the example scenarios. Making people feel welcome and included is never a bad thing.
Cons:
It is quite buggy. I found myself having to skip a few sections because it simply didn't accept my answer, even though I was 100% certain it was correct, which was very frustrating. While at this point I've been doing my own projects for long enough to know that I can just run it locally to verify it, I can imagine that for users brand new to coding, it could be really confusing and disheartening. And for a product like this, that is paramount.
Case in point: there was a time when I was thinking of signing up to a bootcamp that teaches Ruby, where one of the prerequisites for applying was completing the free part of the Ruby track on Codecademy. Early on, it kept crashing during this one exercise, and I thought, okay, guess this isn't happening. (Can't say I regret it, to be honest, because I think a coding bootcamp would probably be my personal nightmare.)
Codecademy can also be maddeningly inflexible. One particularly annoying instance of this was in the Python 3 course, which I was doing to boost my school learning. There were some clashes.
For example, I'd been taught to format strings with the f-string method: f"Here is a message with {some_variable}"
. However, when I gave that as an answer, it was marked as incorrect, and only the .format()
method was accepted. While that might not be deprecated, it is slower and considered less readable than f-string. So, not only is the learning material here not up-to-date, but the computer isn't actually always right. Even in this small example, I think it sets a bad precedent. There is a danger that you get into the habit of to memorising rote syntax because Codecademy told you to do it, rather than really thinking about what's going on.
A lot of people badmouth products like Codecademy for their lack of so-called real-life examples. They have a point: when you're applying for a job as a developer, how do you prepare for a technical test (read more about my brief experience with that here) or the dreaded technical interview? On the other hand, does Codecademy pretend to provide that?
It also misses out on a lot of important practical areas which, to be fair, don't really come up until you're working on a project or product: testing, setting up a database, APIs, using frameworks common to the language, virtual environment, etc. But still, it would be good if these were at least mentioned?
Overall:
I think you'll get the best mileage out of Codecademy if you treat it as you would a language-learning app: good for introducing you to common concepts, but ticking things off some arbitrary list doesn't make you fluent. Doing the exercises alone won't make you job-ready, but it's a good starting point and means that when something yo've encountered does come up in the outside world, you do recognise it, which is a nice confidence boost.
I sort of see Codecademy as an all-you-can-learn buffet where you can try languages out and decide if it's something you're serious about. Finding your personal learning style is something that can only be achieved through trial and error. In general, I would advise anyone new to the world of coding not to listen too much to people who may've forgotten what it's like to be a total beginner and who tell you to just get building stuff right away. How are you meant to start building stuff if you don't have a single clue about any the parts? My advice is to find a combination that suits you! Here is a good, Python-centred post on the topic.
Also, learning to code doesn't necessarily mean you have to become a developer, and not everyone using Codecademy will have that goal. Some might just want to learn something new and/or useful. Do casual users want to spend upwards of 200 bucks a year though? Hey, I'm not telling you what to do.