As a software product manager with an English degree, I needed to better understand software development without accruing more college debt. So, for the past couple of years, I've been slowly and painfully teaching myself software development, mostly via massive open online courses, or MOOCs. These courses allow learners such as myself many free and inexpensive ways to learn to code.

Though learning to code has been fascinating and fun, it was daunting at first. I didn't know where to start, and I didn't know which online course would be best, so I tried about a dozen of them. Some of the options allowed me to try coding in a curated environment to see immediate effects of forgetting a semi-colon. Other options employed a more traditional lecture-response approach. Some allowed access to a community where I could interact with peers or instructors.

Out of the dozen or so MOOCs I tried, the four I highlight below offer first-rate learning experiences. They each have a specific vision for the education they seek to give, and have an excellent platform for executing their strategy. Each platform has its advantages and downsides for certain learning styles and objectives. But, for my learning style, one came out on top.

Codecademy: The MOOC for tech newbies

Like many brand-new-to-coding learners, I started with Codecademy: a free online tool that allows users to step through a series of mini-lessons to complete courses in HTML, JavaScript, and more. Codecademy excels at giving non-tech-savvy people the confidence to start the journey toward learning software development; plus, the interface is non-threatening. For a newbie, it's thrilling to see an unordered list appear on the console to the right by wrapping some words in <ul> tags.

But because Codecademy sets up the environment for the user, allowing her to only focus on the coding itself (which can also be considered a plus), it can give a false impression that software development is easier than it is. Without being forced to set up a server, push and merge code, store files that must be linked together, etc., a user has a lack of context about many of the difficulties she'll experience.

Codecademy does have some quality-control issues. The writing of lessons is crowdsourced, so some of the instructions are written very clearly, while others are ambiguous or assume prior knowledge about the subject.

Also, Codecademy's UI is buggy. For instance, the platform might cheer, "way to go!" and move the learner on to the next lesson while the console flashes red with errors. When learning to code, every little vagary feels monstrous. These inconsistencies make a big difference in a new-to-tech learner's ability to know what is and isn't important to look for in terms of coding errors and successes.

Coursera: The academic MOOC

Coursera has the deepest ties with higher education, partnering with an impressive roster of colleges (its earliest academic partners were Princeton, Stanford, and the University of Pennsylvania). Many of these colleges make their courses available via Coursera or offer college credit for Coursera courses.

Coursera courses are four to ten weeks long, with one to two hours of video lectures a week. These courses provide quizzes, weekly exercises, peer-graded assignments, and a final project or exam.

All of Coursera's courses are available for free, but learners can sign up for a Signature Track Specialization, which opens the possibility of earning an authentication of certification (cost is between $30 and $100). I signed up for one of these Signature Tracks. Coursera authenticated my identity by webcam photos and analysis of my typing patterns.

When I signed up for Coursera, I didn't know about the company's academic cache. I did, however, notice that Coursera focused on the philosophy or theory behind the discipline. Right away, Coursera reintroduced me to some statistics concepts I hadn't thought about since college, reminding learners that data science requires a rigorous understanding of statistical bias. Then, it forced me to set up a GitHub account and push code (I'll never forget git push origin branchname) by a deadline by which our work would be reviewed by our peers. The timelines and peer pressure (er, evaluation) was effective in getting me to push through to finish the task, despite my confusion or frustration.

Udacity: The MOOC that wants to get you a job

Where Coursera prides itself on academic prowess, Udacity prides itself on opening up avenues for employment. Developed with industry giants — including some of the hottest tech companies: Facebook, Google, Autodesk, Salesforce — Udacity offers nanodegree programs for learners to become schooled in not only the right technical skills, but in the right way of approaching the mindset behind these skills.

In the course I took — Intro to HTML — the course taught me to think about building a website as if I were working at a job as a web developer. Via video lectures, the instructors put me in the setting of a real-life developer, asking me to open Chrome's Developer tools and watch the page morph by changing a key-value pair in a live site's CSS. They filmed themselves at work in their (apparently) real office. They asked learners to think about the end user's needs, such as what screen size he may be using.

One downside from this company-first approach is how thoroughly Udacity reminds the viewer that tech companies tend to be staffed with smart, young, goofy techies (for me, the goofiness factor of the video was a bit off-putting). That said, the approach was interesting. I very much appreciated learning how to employ Developer Tools to visualize changes to code. And, I appreciate learning coding from the context of doing it as a job.

Lynda.com: The old-school MOOC

Probably because of my personal learning style, my favorite MOOC was (and is) lynda.com, a company founded in 1995 that "long predates" the current wave of MOOCs. Lynda.com offers thousands of video courses taught by paid experts in the field or industry who not only offer high-level, or theoretical, explanations of concepts behind the task at hand, but also take the time to deep dive into granular details about the subject. As Lynda Weinman of lynda.com says, "You can teach yourself how to operate a camera, but that doesn't mean you can't learn something from a great photographer, who could teach you about light or composition or storytelling."

Because I tend to like the lecture style so I can take notes and refer to them later and also because I feel that the context and granularity helps me understand the concepts at a more holistic level, I use lynda.com all of the time. I even asked for a subscription to lynda.com as a Christmas present.

One of my favorite features of lynda.com is the ability to download what they call "exercise files": real-world HTML, CSS, JavaScript documents (or, maybe, Photoshop or InDesign docs). Because these are the same types of documents I'd use if I were to make my own webpage, I've used these exercise files as templates for my own work.

MOOCs: Fantastic tools to get you started learning to code

Each MOOC described above is stellar in its own way, approaching the challenge of learning to code — and situating that learning in the real world — from a different angle. And there are plenty more MOOCs or strategies to explore than these. For instance, I plan on joining coding Meetups in my area to give myself a community of peers who can help push me through the struggle of learning new concepts. (In terms of coding skills, I still have a long way to go.)

When approaching the challenge of learning to code from a position of a non-techie, it's less important to choose the right learning platform and more important to persevere through the initial confusion and keep searching for a learning platform or community that works best for your learning style.

MOOCs are fantastic, inexpensive tools that offer many advantages for different learning styles. So, what are you waiting for? Get started!