Michael HönnigMichael Hönnig

Why Udemy?

Udemy is an online platform where everybody can publish their video courses. You'll find a wide variety of topics and instructors who mostly teach in English, but also e.g. in German, Spanish, Chinese or Arabic. There are very many software technology related courses, but also about self-improvement, human languages or management practices. Most of the courses which I have found so far are not academic, but geared to real-world. And of cause, according to the broad variety of instructors, there is also some variety of quality, yet the majority of courses is of good or even great quality. The business model does not urge you into a subscription, like many similar services do, but is based on a one-time fee for each course up to several hundred US$/€. There are frequent sales where you can get many courses for just about US$/€ 11 to US$/€ 20. And you get lifetime access for this fee, even on the sales, thus you can always stop and come back later to a topic, which is pretty great. Even better, you can download most (maybe even all) courses to your Android tablet or iPad and watch offline, e.g. on a train, on your couch or with headphones in a library. Theoretically it also works on smart-phones, but their screen is too small to actually use it. It's possible to vary the playback speed from factor 0.5 to 2, thus you can rush through parts which you already know from other sources. Many courses also have quizzes or exercises attached. A few even offer exercises where you can upload your solutions for peer evaluation by co-students. Of cause, for that price no one can expect the instructors to check your exercises. There is also a Q&A section to each lesson and many of the instructors do answer your questions, some even super quick, also co-students can answer, of cause.

How to select courses?

First, find out what you want to learn: What do you need for your career? What are you intrinsically interested in? Maybe you have some have side-project in mind, then try to combine these two areas! Then use the search on Udemy and find available courses, apply filters (e.g. for language) and appropriate order, e.g. sort by rating. Also decide, in which depth you need to learn this topic:
  • just technology overview => 1-5 hours
  • some foundation => 5-15 hours
  • severere workshop => 15-30 hours
  • or boot-camp => over 30 hours
  I often take 2 or even 3 courses about a single topic: The 1st one as quick a intro/overview, the 2nd one to code along or create my own little project, and sometimes a 3rd one I feel that some issues had been missed in the others. As another criterion, check preview lessons, you can "expand all" and scroll further down to see available previews. Does the instructor talk along showing just slides or doe they show you how it works in real-life? I prefer to check lessons deeper into the topic for a decision as in many cases courses start with overview slides, but later on really get into the stuff. I think it's not a good idea if authors just give preview for their intro, but some do and that's their decision. Then pay attention to the voice; if you don't like the voice, your learning will be severely impeded. Also try higher speeds, some voices are just not made for faster playback, they become unintelligibly snatchy. Checking the code examples, if you can access them, is also a good idea. The coding style might tell you something about the qualification of the instructor. But just because it's not clean code, too often it is not, you still can learn a lot about the technology the course is about - at least unless it's getting too bad. I really love it when the instructors work a lot with automated tests. This way you can much easier explore the technology and you learn how to test it. A the last but not least criterion is to read the reviews from other students, especially the bad ones. Maybe the criticism does not apply to your need (e.g. "too fast" if that's exactly what you prefer, or "lacks some intro into ..." if you are already experienced with "..." anyway); in such cases even a 3.x rating could be a great course for you, because it fits your needs, and that's what counts.

How to learn?

First off, limit your parallel learning topics. I sometimes have up to 5 Udemy courses "in progress" at the same time, but in that case, multiple of them are about the same topic, otherwise it's at max 3 for me. If you try more, you won't make any progress anywhere, feel frustrated and might even learn less. Of course, also what you do else where goes into this limit. Use fast playback (I usually use factor 1.5) to watch appropriates parts on a train or on your couch, maybe even on a beach if your screen is bright enough ;-) On the other hand, some lessons need you to be done at your computer. In that case, I often pause while coding-along, so I make slower progress. Depending on the topic, it turns out that I need about exactly the stated time for the course up to almost 2 times if I need a lot of hand-on work. Also do some extra research and tinker around with the technology to find out how it really works. This is the actual learning! Do the exercises, but only if not too boring, then it's a waste of time. Better alternatives for this case are: amending the lessons code to try other cases, write tests, refactor the example code! The Q&A sections attached to each lesson are also a valuable source for deeper insights. Can you answer your co-students questions? Then do so! You can't? But maybe you can find it out, so do some research! That is actual learning and can be a lot of fun! Optionally you could create flashcards (spaced repetition is king), I also fill my #swDevTermOfTheDay project with terms I've ran across. After taking the course, write a review or even an article in your blog to reflect about what you've learned. I regret that I have not done that from the beginning. Don't make the same mistake! Then, create your own little side-project using the newly learned technology; if spaced repetition is king then exercise is queen. Later, come back to the topic repeatedly, e.g. use your flash cards or integrate the previously learned into future side-projects again. Best of course would be you could apply it in your job, right away. These are really the key to learning: actually apply what you have learned and repeat in elongated periods. [added on 2018-03-07] On last important hint: In most technology courses you need to install specific software at the beginning. I strongly recommend to try to use the same versions, or as close as possible, otherwise you mights soon run into severe problems following the instructions. This is especially a problem if you use default (current) versions with npm and other package management tools. Also pay attention to versions in GUI screens, maybe by now the default has to changed to something way too recent which does not match the video anymore. You can always later try a new project with current versions or try to upgrade your test projects; that's a good exercise by the way!

What are the limits?

You will learn what you can generally do with the technologies you've learned about, often that's already enough and you can come back to it later when you really need the details and the how to's. You can also keep this knowledge; unfortunately only if you do some sort of spaced repetition, otherwise your memory is going to fade. But unfortunately, you can only remember most of the "how to's" if you do apply what you have learned, repeatedly, over and over again. On the other hand, what you've learned once, you can quickly re-learn, thus, this is often optional. Now, get on learning!


  Disclaimer: I have no relationship to UDemy, at the time of writing this article not even published any course on that platform.