Learning coding: Udacity, Codecademy, FreeCodeCamp pros and cons

Courtney Jordan
12 min readMay 6, 2017

--

In the past few months, I decided to take furthering my coding skills much more seriously. Before that, I’d done coding in HTML and CSS (including HTML5 and CSS3) and some JavaScript, but nothing very serious.

I work in the UX field, so main drivers were that companies are demanding unicorns who can UX, code, and manage, as well as just understanding the technical ramifications of the designs we propose. So, rather than continue to fight this unfortunate trend, I decided to embrace it. I dusted off my old CIS degree, pulled myself up my bootstraps…I’m going to learn this, I said to myself. Tentatively, at the time. I didn’t have much faith in myself. There was a reason I didn’t continue in programming after graduation — I didn’t have much confidence in myself. I started out looking at Udacity — I was amazed at how much free stuff was out there! Gone are the days when you have to find a university, check out their curricula, enroll in a course, keep up with the course schedule, participate in discussions — things that are easy for full-time students, but difficult for full-time workers, not to mention parents!

I started off taking courses in responsive design and responsive images through Udacity.com, since these were important to UX. Then I looked into Codecademy, then FreeCodeCamp. I’ve now got several courses under my belt: JavaScript, jQuery, PHP and more. I’m working on Python (which I love), AI, machine learning, etc. I took AI courses in grad school, but wow, how this field has exploded since then!

A few months later, I’m finally seeing all the connections between everything. It’s just the syntax that changes! Having been trained in C++ and COBOL and VB, well, there weren’t many similarities between them. Each language was starting anew. I loved VB, but hated COBOL with a passion (I used to curse Admiral Grace Hopper, who invented the language!) and was not too excited about C++. Although I’d excelled at VB, I found the other languages much harder. I also did Java — ouch! That was hard! Back then, there was no Google, no API documentation, nothing but your text book, which we all know loves to give easy examples and then really hard problems — there’s no scaffolding!

I’ve since found out that they’ve replaced Java as a beginner language in CS programs with Python and JavaScript. How different things would have been had I started learning coding now. I have two children, a 13yo daughter and a 10yo son. My daughter is taking a website design and a game development course next year in high school! I remember making programs in Hypercard, for goodness’ sake! My son is learning coding through tynker.com (Update from Sept 2017 — there are so many glitches in tynker.com that my son refused to do any more. He constantly lost progress and the games were glitchy as all get-out — you couldn’t even finish many of them. We cancelled and I wrote a message to them on the poor quality of their product. They never responded. We’d tried to get them to fix glitches for months. Don’t bother.). They’re both planning on working in technology, just like their parents, and are interested in being coders.

So, back to my experience. I’ve kind of hopped around between languages and between paid and free code learning services. When one area would get too tough, I’d jump to another. As I was making progress in various areas, I was starting to see all the connections. My husband taught me about console.log and console.dir and JavaScript alerts. WOW! What a difference those made! Just being able to see various steps — you were making progress even if the whole program wasn’t completed yet.

As I have continued, the idea of being a proficient coder has solidified gradually in my mind — I can do this!

With that being said, there are so many free and paid services out there. The ones I’ve been concentrating on are Udacity, Codecademy, and FreeCodeCamp, and this has been my experience thus far.

Udacity.com — free courses only

Pros:

  • For some courses, like responsive images, they check your code with a Udacity test widget. I love being certain that I got it right.
  • Created by industry leaders like Google, so teaching you exactly what they need, and thus what YOU need to succeed — ‘nuff said.
  • Great selection of free courses — AI, machine learning, responsive design, statistics, just about anything. I’m starting to consider whether I should enroll in their AI nanodegree once I finish up these other courses, and I’m seriously considering their full stack web development nanodegree. I really am most interested in front-end, but I don’t believe that they offer just that.
  • They teach several free courses in app dev for both Android and iOS. None of the other ones I’ve used provide any app dev courses.
  • You work on your own code editor, set up your own localhosts, install things from your own command line. By the time you’ve finished one of their courses, such as Git and GitHub or responsive images or something, you’ve got a fully working process. This is huge.
  • Great video lectures. I particularly liked the ones on responsive design and responsive images taught by Cameron. Quizzes to test your understanding (although their feedback on wrong answers really varies from helpful to worthless). Projects to ensure you’ve got it.

Cons:

  • 200/month is pretty high, especially if someone is working full-time and can only work in the evenings and weekends. It would be great if you could pay on a per-course basis. That said, I’m taking a wide selection of free courses in front-end web dev, AI, etc., so the 200 is really for people who need a credential and who need an advisor to help.
  • Some teachers are really great, some are really not. For people just learning, you have to scaffold up- there was one course by a female instructor that would just jump by light years. I also remember that Machine Learning went from basic stuff to light years ahead, and the same for AI, basic stuff then really complex formulas with no explanation — so I had to stop those to go learn other stuff. Hopefully, when I come back, I’ll be able to tackle it again! Maybe I’ll drag out my AI book from grad school to see if it can help.
  • Although they provide instructor notes on each lesson, there is no cumulative place to get all those links. Once you’ve left that page, the links are no longer on the next page, even though you probably need them, as it’s cumulative learning. It also took me a while to figure out that I needed to scroll down to the bottom of the page to find these. There is a slide-out panel that is used for something else (that I never use), but that slide-out panel is where I would have expected to see the instructor notes, and for them to be cumulative links. This would have been very helpful when having to access API documentation for many different methods in jQuery and AJAX and JSON, for example.

Codecademy.com — Pro subscription

Update from Sept 2017: I have taken several courses in this by now, and I ended up ending my subscription because it is SOOO buggy! The buggiest I found were PHP and Ruby, and they were so bad, especially Ruby, that I couldn’t even complete the class. The advisors even apologized for the poor quality of these courses. I had to go to forums to try to confirm whether there were bugs. They had crazy workarounds you had to ask the advisors for! They have never fixed a bug in the several months I subscribed, and rarely respond to bug reports. They also only have Angular 1.X, at a time when www.pluralsight.com has Angular 2 already, so they are way behind the curve. I would save my money if I were you. I’m going to be looking into pluralsight, which offers courses in project management, leadership, coding, analytics, design — just about everything you might need, and for about the same monthly price as Codecademy. As someone who has spent half her life in software and a large part before UX in QA, the quality of the Codecademy product is abysmal and shoddy.

Pros:

  • Good scaffolding — when I don’t understand how to do something on FreeCodeCamp (where you can work towards free certifications, and then work on non-profit organization projects, which is very cool!), I jump over to Codecademy. It’s a paid service, so they provide a lot more information. You still need to read through API documentation and such, but you feel more guided.
  • I just found out about there being advisors for Pro subscriptions! I’ve been doing it for months with no idea that I had access to that. So far, my one advisor encounter has been great.
  • It sometimes gives incorrect errors — for example, if you’re missing quotes around an html element in a jQuery line, it will tell you the next line is missing a semicolon! I’ve wasted much time trying to track down these incorrect errors.
  • Offers some courses no other service has, like Watson API, Bootstrap, ReactJS and Sass. However, you now have to pay to complete the lesson on Watson API to access the Personality Insights service, which requires an IBM Bluemix subscription.
  • I complained about slow performance and the bugs I reported never getting fixed or addressed, and they gave me a refund for my first month.
  • Can share your repositories to github.
  • You can generally find the information you need on forums, though not always. I love that they have a Categories drop-down filter so that you can search only for results in your course. They also have a great Advanced Search. I’m in UX — search accuracy and optimization is critical, and the ability to find information quickly is of the utmost importance.

Cons:

  • 20/month, when many of the courses are free on Udacity.com or FreeCodeCamp.com.
  • Sometimes seems to run very slowly.
  • I move between two computers, a Mac and a PC, depending on which one isn’t being used for homework by one of my kids at the time :). I encountered an error I couldn’t solve one night on the Mac, so the next day figured it out on the PC, then went on to another lesson. When I picked up again on the Mac, it thought that I was even before the lesson where the bug had occurred. All other lessons were locked. The PC mysteriously updated to that incorrect state also. The odd thing was that all of the code after that bug that I had written was still there, but it didn’t think I’d completed the lessons!
  • This is another big one — sometimes correct syntax such as a ternary conditional operator (x ? y : z) [instead of an if/else] or returning a render: function()… with parentheses around the HTML will not work, even though this is valid code and has been taught in the class (and even shown in the examples). It seems to have very strict expectations for what it will accept on a given lesson, even when it says that you can use any method you want. Also, sometimes one step will not complete because you’ve already put in code for the next step (render in ReactJS), and then other times, it won’t complete because you HAVEN’T completed the next step (render) yet!
  • No certifications — for a paid service, you would expect that, especially since FreeCodeCamp offers certs for free (once you complete the projects) and Udacity offers paid nanodegree programs.
  • For a paid service, there are many bugs in some of the courses. That’s frustrating in itself, but the way that they’ve set things up, you can’t finish that part of the lesson if you find a bug. For some courses, you can’t even report bugs.
  • Although they provide important links on some lessons, there is no cumulative place to get all those links. Once you’ve left that part of the lesson, the links are no longer on the next page, even though you probably need them, as it’s cumulative learning. I would expect to have cumulative links. This would have been very helpful when having to access API documentation for many different methods in jQuery and JavaScript, for example.
  • If you’re just trying to make sure you know something or to pick up some tips (for me, I was checking the command line course), lessons are locked until you get through the other pieces. This is a real pain, as you have to go through a lot of basic things, like ls and pwd for command line, for example, many times before you can get to the rest. I found myself just skipping to the projects, but was annoyed that I couldn’t at least read through the lessons!
  • No feedback on why your code isn’t working. It would be great if for each step, as soon as you’ve completed it, it got marked off automatically (Update — ReactJS course does have this automatic marking — it seems that if you do the “older” courses like PHP or jQuery or JavaScript, then you have to do it manually). As it is, you have to mark them manually, and if you miss checking one, you can’t move to the next section even if your program is working properly, so you have to scroll through the list to see what you forgot to check. If you get to the point that your program is working properly, the Up Next button should automatically be enabled.
  • If there is a bug, you obviously can’t complete that part. You can go on to other lessons and projects, but the progress indicator will still insist that you’re only at that bug point. The Resume button will insist on starting you there as well.
  • Courses are removed and you lose all progress in the course you were working on. You should be able to finish, for example, JavaScript, and then start working on their updated course. Knowing what was important a while ago in coding JS versus what is important now seems very valuable to me.
  • Hard to remember which part particular concepts were introduced when working on a project — would be great if you could scroll through all of the text, rather than having to open several sections and lessons to try to find the information.
  • Would be nice to have a progress indicator on a particular section (not number of steps left in a lesson). There’s no indicator of how much further you have in a section, you could be on 1 of 30, for example. Some gamification in the UI would help keep up motivation — only 2 more, I can do it!
  • It’s not always clear what you’re supposed to do in particular steps. Some things are worded strangely and you have to interpret.
  • You have to click Save to save your work or to update the result viewer. If you have to navigate off the page to look for information in another section, make sure you have clicked Save, or you will lose your work!
  • A lot of the forum posts are locked, as they are too old. You can still view them. It would be great if you could see the number of people taking a course, which would also give you some input into which courses are seen as most valuable — social proof!

FreeCodeCamp.com

Pros:

  • You can’t beat free.
  • For the projects, you have to build everything from scratch (and put it in Codepen.io to send it to them), so you really know a subject when you’re done.
  • Their introductory steps — they get you on GitHub, signed in to the forums, have you put Full Stack Web Development in the Education section of your LinkedIn profile — this form of gamification is really helpful and motivating. You start thinking, “can I really do this?” And he answer is yes! There are SOOO many people just starting to learn to code! Absolutely, you can do it!

Cons:

  • Not a lot of scaffolding. Concepts are not explained in much depth.
  • The “Help” button just opens a chat room, essentially. They’re never talking about something that’s relevant to what you’re working on. So you have to click Forum in the top navigation. I would make Help go to the Forum, and put Chat Now as another option.
  • Would be nice to have a progress indicator on a particular section. There’s no indicator of how much further you have in a section, you could be on 1 of 30, for example. Some gamification in the UI would help keep up motivation — only 2 more, I can do it!

Anyway, I hope that this helps you. I have ended up using all three of them. I learn things in a lot of depth in Udacity, such as AJAX and JSON. Codecademy has more scaffolding and offers courses others don’t like ReactJS and Sass and Watson API. FreeCodeCamp has free certifications once you work through the projects. So far, I recommend this blend — it’s been very helpful to me, and has really built up my confidence. Here are a few of the courses and tools the open-source world has provided that I’ve found particularly useful: https://medium.com/@courtneyjordan/a-few-cool-things-from-the-open-source-world-24d45db703ec

Just remember, a journey begins with a single step… you can do it! And if you have any other recommendations for me to check out, please share! Thank you from a fellow traveler!

--

--

Courtney Jordan

Storyteller, process optimizer, relationship builder, stakeholder uniter, experience creator. MS, HCI/AI/UX. Traveling this life w my soulmate and awesome teens