Online courses
Whatever you need an introduction to, I'm sure you'll find it on EdX, Coursera, or Udacity. I've had some fantastic experiences with foundational courses on all of these platforms. High quality advanced courses are a lot harder to find. I usually look at more than 10-15 different ones before I'm happy with the course in terms of difficulty and structure.
Here are some classes I can personally recommend:
- Machine Learning by Andrew Ng (Stanford / Coursera) is the perfect course to start with ML if you know basic calculus, linear algebra and programming.
- Introduction to Apache Spark by Anthony D. Joseph (UC Berkeley / Databricks / EdX) was a great way to start with Spark. Unfortunately, I didn't have the time for the two follow-up courses on Spark and they are now archived.
- Scalable Microservices with Kubernetes by Carter Morgan and Kelsey Hightower (Google / Udacity) was a ton of fun. It teaches the very basics of Kubernetes, enough to deploy a very basic microservice. The good news is that the community is vibrant and you'll find answers for any problem once you've picked up the basics in this course.
As these platforms are looking to find a sustainable way to make money, it's become harder to find the right fit, since even just looking at materials requires paying a course fee. The models are different from platform to platform and sometimes even from course to course. Coursera has started to use monthly fees which is great if you have time, but bad if you're a part-time learner. EdX seems to remain free until you want a course certificate. Udacity has different models for every class. My favorite one so far was to pay a flat rate of $200, with a money back guarantee if you can't find a job after completion. That sounds like they're really confident their course is worth it. We'll see in which direction these platforms decide to evolve in the future. MOOCs are certainly not going away anytime soon.