For the past few weeks, I’ve been grappling with this wonderful course offered on Coursera. I’m about halfway through. I’d want to say I’m feeling pleased with my progress, but this course turns out to be a part of an 8-part bioinformatics specialization program offered by the University of California, San Diego. That would mean I’ve been able to maneuver through a whopping one-sixteenth of the whole thing at best. To top it all off, the Bioinformatics for Beginners course that I’m doing isn’t even part of the specialization- it’s a
. . .gently-paced introduction to our Bioinformatics Specialization, preparing learners to take the first course in the Specialization. . .
Meaning what I’ve been doing is a preparation to the first step in the actual thing.
The goal of this course is to ease full-blooded biologists (like myself, and perhaps the mythical readership of the blog) into the world of programming (more specifically, Python). The course has you go through a number of coding problems, but they are only presented in the context of real-world biological problems. This is definitely a whole lot better than learning to code from any old programming course, where the biologist would fail to see the utility of solving coding problems until substantial progress is made. Sure, it’s fun to play around with loops and lists and whatnot, but like the newbie guitar player- the new (and admittedly inept) coder can only enjoy themselves so much. The Coursera course is very successful in firmly establishing the biological relevance of programming. That was enough to hold my intrigue.
Even then, there’s some debate to be had about exactly how friendly the course is to absolute beginners to programming. Exhibit A would be the comment section of their exercises. The forest is thick with frustration, lit only by the occasional glimmers of some hard-won Eurekas.
Which brings us to where we are now. This post is not a review of the course itself, it’s about something yet more upstream: Codecademy.org.
Codecademy’s course on Python is probably the most accessible introduction to the topic. Without some exposure to coding, it’s impossible to even cut your teeth on problems in biology. Yes, even the preparation to the specialization requires another preparation. No one said this was gonna be easy.
Codecademy provides that training wheels platform. What’s more, the Coursera course liberally uses Codecademy as a reference- directing their students to solve this or that section on Codecademy in order to continue on to the next parts of the course.
The Codecademy interface is just lovely. It’s incredibly well-paced, starting from the very basics and slowly working its way up to more complex problems. It’s littered with references to Monty Python (liberally utilizing immortal sketches like The Dead Parrot or Argument Clinic) and cute animals- both of which are immediate wins.
Going back to the interface though- Codecademy almost functions as a coloring book. In the beginning, it tells you exactly what to do, baby step by baby step, and awards brownie points for every little line (or even word) of code you write. Even near the end of the ~13 hour material, it hesitates to let go of your hand, making sure to hit you with the occasional reminder, just in case.
To top it all off, the latest version of the program comes with a feature which basically offers the user the solution if they run the wrong code four times- which means the particularly sneaky among you can basically cheat through the whole thing without learning to tell apart a string from a list.
I know none of y’all will do that, though- that’s why I got mad love for you. It’s a rap phrase.
The course still has its problems though. The level of spoon-feeding may strike someone as running counter to the how one is supposed to learn to code (i.e. by learning to think). I understand that criticism, but I disagree with its thrust. General people conceptualize working on computers in a particular way- you click on cute icons, things happen in terms of other cute icons. The idea that you can simply “write” stuff into being in a computer can be very counterintuitive. As such, there’s a need to have an environment where all you do is get exposed to that one idea. Even if you’re being spoon-fed, even if you’re being told what to every step of the way, for the coder spirit to germinate within you- for you to reach that point where you find coding fun- you absolutely need that exposure, that getting-used to. We’re crossing into a different world here, and I feel people criticizing Codecademy’s approach underestimate that chasm. Heck, that’s how I learned how to divide. No one could get it through my fat skull until grandma took pity on me and started telling me where to put every digit. You do that enough times, and at one point patterns begin to emerge.
One different, but important problem that people have pointed out has to do with the width of material covered on Codecademy. Trying to hit the sweet spot between being short enough to keep people involved and yet comprehensive enough to give a full view of the Python landscape- Codecademy often doesn’t have the luxury to repeat certain lessons. You might deal with dictionaries in one introductory lesson, and not deal with certain aspects of working with it until much later.
Well, the solution to that, unfortunately, is to just continuing to revisit the course. I think the Practice makes Perfect module (75% of the way through the course) is a pretty good indicator of the progress you’ve made. I could solve most (not all) of the problems, and found that as being occasion enough for a meaty pat in the back.
All in all, Codecademy receives a good review in my book. Will there be teething pain going through all of the modules? Definitely. Would it be worth it? You bet. Even if you give up somewhere in the middle, you can always come back and finish the rest.
All that’s needed is being consistent, and never giving up ever. Here’s some inspirational footage for you to aid in your noble journey.