On occasion, I have created content for and taught computing subjects to students, ranging from absolute newcomers to computers and coding to professionals wanting to top up their skills. When I first started, options for learning to code were limited, restricted to university and college courses that often assumed some prior knowledge and required commitment, time, and money.

In recent years, there has been a proliferation of other options. But as someone involved in tech education, I retained a healthy skepticism about how useful many classes, MOOCs (massive open online courses), and bootcamps might really be.

And I’m not the only one skeptical of bootcamps and MOOCs (for more, there is an interesting Quora thread).

Nonetheless, the spread of these options suggested I should look into them, and I decided to do some research and write a round-up on computer science (CS) and learn-to-code courses. My first thought was to stick to those that are available at no charge, but it became clear, after interviewing previous students for recommendations and anecdotes, that free doesn’t always mean the best value, so I’ve included some paid options.

As you do your own research, keep in mind that this is a market in flux. Many of the newer players in the education market are struggling financially, and one of the first, Dev Bootcamp, has announced that it's closing. Those that remain are often startups, their business models unproven.

My research included reading recommendations online, checking out various independent rankings, and talking to people who had participated in the programs. What follows is not exhaustive, but it's a way to begin your own investigation of the available options.

The most popular courses

Most providers list their most popular courses based on student enrollments and ratings. Popular doesn’t equal best, but when a course receives many reviews, reading them can help you make a decision. These sites list popular courses:

While there are hundreds of potential sources for CS education, Coursera, edX, and Udacity dominate the recommendations. This doesn’t necessarily mean the others are bad; they simply have fewer enrolled students or don’t reveal their ratings, and the big three have worked extensively to build partnerships with teachers, partners, and students.

What constitutes a good course

Deciding on the right course for you is hard, and factors beyond a course’s merits are likely to play a role, such as location, availability, cost, and your time commitment. Fortunately, aside from anecdotal reports or recommendations, there are independent and aggregated sources of ratings and rankings you can analyze. Not all schools take part in the surveys, but you can ask those schools how they compare to these metrics.

The fantastic Teach Yourself Computer Science site sets out an ideal CS course structure, with recommended videos, books, and resources. Quora is a good resource to find opinions on what the content of specific courses should be. Here are threads for machine learning, yet another for machine learning (directly related to a later course recommendation), algorithms and data structures, and big data.

Experience matters

I found that many of the people I interviewed were experienced coders looking to update or supplement their skills, citing courses such as Coursera’s Data Science specialization that partner with established universities and business partners to teach real-world skills that can result in certification (for a fee). That experience seemed to help them in class, and it probably is a greater asset than a line about the course on a résumé. Students with related subject knowledge were better able to understand obscure concepts raised in class.

I learned that taking a course didn’t always result in a job, despite the promises of some providers. Participants told me that despite taking courses that gave them relevant education, they often had to spend time as a junior staffer after making a horizontal career shift.

For beginners, the Udacity Introduction to Programming nanodegree was highly recommended. Several people said it didn’t spoon-feed students—they were expected to apply knowledge gained in the course to pass, not copy and paste code. Udacity makes no promise of a job placement with its nanodegree courses, and one student told me that it didn’t help him find one and that employers told him they were looking for someone with more experience.

Two experienced developers, mostly interested in learning something new, recommended Coursera’s algorithms and data structures course, offered in association with Princeton University. One of the two enjoyed the experience so much that he is now participating in the edX Introduction to Computer Science, offered in association with Harvard, and recommends the course for beginner and experienced coders alike. For anyone interested in expanding into machine learning, Coursera’s Machine Learning has long been a favorite, ranking highly in ratings of all courses, not just CS courses.

Bootcamps

Bootcamps and intensive courses (online and offline) are options for those who feel that the self-guided model may not work for them, who don't have a lot of time available, or who require a higher level of support. Bootcamps aren't free, and though the value of their instruction has been questioned in the past, it seems that at least those bootcamps that have found their financial footing are beginning to be more selective, focusing on students they think will succeed instead of as many as possible. Several people told me they had been rejected by bootcamps because they lacked sufficient relevant experience.

In this Quora thread, employees of two bootcamp companies (FlatIron and Bloc) explain the intake processes used by those bootcamps, confirming that at least some bootcamps have realized that if you are more selective about whom you enroll, then your students will be more successful.

Community

I saw recommendations for a handful of community-run coding classes. For example, Rails Girls has widespread endorsement. Of course, as is implicit in its name, it focuses on a particular language and student body.

A participant in the Berlin chapter found it so welcoming and confidence-boosting that she immediately signed up for the Harvard-affiliated edX Introduction to Computer Science course (and found it to be as worthwhile as my previous interviewee).

Participants in community-run classes especially liked the community aspect: There are people to talk to when you are stuck want to discuss problems.

You can find community meet-ups in many cities. Some examples are Open Tech School, Learn to Code, and PyLadies.

Keep learning

Many factors will go into your decision to pursue CS courses. Researching the options is essential. But it’s never been a better time to start learning to code or expand your existing coding knowledge. Choose wisely, continue to strive, and most of all, enjoy what you learn.

Keep learning