What am I doing?

I’m doing a lot of stuff, and I’m feeling overwhelmed with the sheer amount of stuff that I have to learn. Here’s what is currently on my plate:

Coursera’s program is new, and I’m excited to have found an intermediate-level program. It seems that most of what I’ve found thus far is aimed at either complete rookies or experience programmers. I am neither. I might rip out all of my hair if I have to write any more GCD algorithms in any language, but I’m definitely not at the level where I can talk about lambda functions in my sleep, either.

Free Code Camp continues to go well. I’m at to-do item #243. Essentially, all I have left before starting the 800 hours of practical experience building an app for a non-profit is some stuff on AngularJS, Node.js/Express.js, MongoDB, and ten (smaller) projects that put together everything I’ve been working on. This program and its road map was a lifesaver when I got to the point where I felt like I was spinning my wheels, and it continues to point me in the right direction.

John Duckett’s books flesh out the material that I’ve covered in Free Code Camp. Most of the time, what I’m reading is review, but there are definitely things I did not know about (such as which tags are considered syntax markup and which ones were considered semantic markup, despite appearances indicating that the two were, functionally, identical). I’m sure the same material is available for free on the Internet somewhere, but a)I like having physical books as reference (yes, I am ancient), and b)the fact I haven’t come across this information despite several months of working on HTML tells me I might never have learned these things.

Python is my main squeeze (“I see what you did there,” sez my coworker), and I just completed Downey’s Think Python book this weekend. Think Complexity is a continuation of Think Python, so I’m eager to work on my intermediate-level scripting chops while learning a bit about complexity science and basic algorithms.

All in all, I am pleased with my progress, especially after feeling like I was doing the same thing over and over again and not getting anywhere (we all know the key to excellence is deliberate practice, and while I was practicing, it was neither deliberate, nor was it challenging enough for me to make any type of progress). It did seem like everything on the Internet was geared toward front-end developers, so with the discovery of the Coursera program, I’m looking forward to doing even more back-end-related things.

Why I love MOOCs for Learning How to Program

I consider the beginning of my software development education to be Harvard’s CS50, which I took via the edX platform. Since then, I’ve tried many other ways of learning, but this post is about why I love MOOCs.

1. They are free.
Sure, you could pay for verification certificates, proof of specialization, and whatnot, but in the end, everything you need is available for free. You get access to the lectures, the assignments, the grading, and the community message boards, which are helpful when you are stuck. Now, free isn’t always good, but this is one of those areas where it is almost unbelievable how good the quality is for how much you are(n’t) paying.

2. You don’t have to decide what you need to learn.
This is great, because, if you’re like me, you probably don’t know enough to know what you need to know (try saying that five times fast). The hardest part of doing something is starting; the second hardest part is to keep going. Having a set schedule and a previously-set list of topics to cover/things to do eliminates any possible decision paralysis (and therefore one fewer thing that gets in the way of completion).

3. You get tools that help you pace yourself.
If you take the course live, you get a schedule that helps you keep on keeping on. If you’re not, you still get a schedule that can easily be tailored based on whenever you started the course. Again, this eliminates a decision you have to make and makes it more likely that you’ll keep going.

4. You get automatic grading.
This isn’t perfect. The automatic graders can only check for correctness, and there are times when the grader can’t figure out why your code did what it did–it only knows that you did something terrible (infinite loop, anyone?). Regardless, the feedback is still helpful, even if it can’t tell you that, really, did you need ten lines of code when two will do?

5. You’re part of a community if you choose.
Because everyone participating in the forum/message board/group is working through the same material you are, you have an easy place to go for questions, comments, and concerns. I’ve found my interactions in these places to be pleasant and helpful.

6. There are MOOCs on so many topics that you’re bound to find one that fits your needs and desires.
From the absolute beginner to the seasoned professional looking for continuing education, there are classes taught be experts on almost any topic you can think of. It seems that the major providers of MOOCs (edX, Coursera, etc.) are STEM heavy, but many are expanding into the humanities and the social sciences.

With all that said, MOOCs aren’t the end all/be all of education. I think the number one pitfall for many people is that they require a great deal of self-discipline. I’ve heard from many around me that they don’t have the discipline for online courses (as opposed to the traditional classroom learning model). If that’s the case for you, MOOCs are even worse, since you don’t even have the accountability of a professor who you see a couple of times over the course of the semester. These are definitely for people who are capable of self-managing their own education.