Most of the time, you don’t really need another MOOC
eugeneyan.com
eugeneyan.com
What do I mean? Years ago, I learned to program iOS from the Big Nerd Ranch book. The most important thing I got out of that was learning enough about the Cocoa-Touch framework that I didn't try to fight the framework. You don't get that from JIT learning. How could you?
That said, at the end of the book the authors urged the reader to go and write programs — that that was the only way to learn, after mastering the fundamentals.
A beginner should place his or trust in an expert. The reason is that the big mistake beginners make, not knowing the fundamentals, is convincing themselves way too early that they have now grasped the fundamentals.
I don't think the author and I are at odds. I agree a person can get too comfortable with MOOCs, YouTube courses, etc. But at the start, there is no substitute. And the start lasts longer than you may think.
Don't worry, he explicitly says this at the top.
> Don’t get me wrong, I love MOOCs. They’re great for trying to learn a new programming language (e.g., Python, Scala) or framework (e.g., Spark, TensorFlow) or subject (e.g., statistics, machine learning). The structured learning environment, excellent teaching, and exercises (and solutions) guide us through the best way to learn new concepts. > >But most of the time, we don’t really need it. If we already know machine learning, taking that shiny new MOOC won’t help with applying it more effectively.
That's exactly my feeling when I was watching Jon Gjengset's Rust tutorials. I like his real reactions to unexpected problems. Really learned a lot from this kind of lengthy but realistic videos. https://www.youtube.com/c/JonGjengset/featured
Students not understanding "why" something is done a certain way is the downfall of countless courses. But unfortunately, more often than not, you're not in a position to understand why people tell you to do X until you've personally done Y.
For me at least, there is an over-abundance of thickly-accented English-speaking Indian people playing specifically trap music in the background, when it comes to 'good tutorials'. Not by any means a majority, but they punch well above their weight-class. It's so very odd, but they really do know how to guide me on what it is that I need a hand with.
I've been doing a heavy C++ project, and as a web developer, I was basically a walking footgun. I realized this early on, hired a total expert in the field (the guy has contributed to C++ standards committees before), and am Loving how smoothly this project is going thanks to learning from him. It's incredibly fun.
I pay the guy $150/hr in 10 hour chunks and get the most in-depth insight into what I'm doing, how to revise my code, what the code means in the first place, etc. It's perfect if you know how to code but find yourself in a brand new domain. I still learn outside of our hour-long mentor sessions, of course.
Skip the MOOC, hire the teacher.
..and then also do the MOOC, honestly they're pretty great.
Yeah, it's... an option, I guess, if you've got the dough. Many of us don't have that kind of budget so we look for some of those experts who have blogs and youtube channels.
You can find one for less, though, if you ever find yourself wanting one. Mentor.io is a good place for it.
I'm usually contacted by engineers or companies that do market surveys and have the detailed knowledge of my background, so doing a lot of those (which are usually also compensated at like 40 to 60 per hour) pays off.
I haven't been able to engage in any of these for two years now because I moved to the US on an H1B visa, but the offers still keep on coming. I got like five in 2019 and two in 2020 and I had to say no.
In centuries past, if there were a mathematician who wanted to know more about botany, it was the most normal thing in the world for him to contact a botanist interested in math and trade the knowledge. This usually involved one going to stay at the home/studio/estate/whatever of the other for what today would be considered a long period of time. The upside was that you could learn all you needed to know from what was as good a source as you were likely to ever find.
If you think about a modern version of this model, you could get all the information you need on the subject you're interested in and it wouldn't cost you a nickel. We have the internet, they didn't. Might even get a pretty good friend out of the deal.
Of course you need knowledge to trade, and pretty deep knowledge at that. At the same time, if there is an arborist out there looking to learn programming, and you have heaven only knows how many fruit trees on your property, what do you have to lose by checking his/her clients for references? You can teach him/her programming. They can teach you what you need to know to care for your property. You guys can each contact each other's references to make sure you're actually experts in your respective fields. There doesn't seem to be any risk in trying? (Unless I'm missing it?)
It just seems a really easy fix to the money problem. And you can access knowledge from everyone from arborists and physicists to dance teachers and electric motorcycle engineers to international development experts and nanotech engineers. The sky would be the limit.
On the other hand, I can basically guarantee you that someone somewhere is willing to pay money for an arterial stent, and somewhere else there is a world-class expert mathematician who will accept money in exchange for tutoring.
For those who want an easy (and free!) mentor system for learning various programming languages, try Exercism [1]. I have been using it to learn Rust and Clojure.
If it’s something you’ll spend a significant amount of time building that could be well worth the price.
How would one go about doing this? Was that person listing their mentoring services somewhere, or did you contact them directly?
The mods removed my post btw :/ apparently it was against the subreddit rules to ask for help. Found the guy before they could remove my post though, and here I am.
For programming/tech related topics, I no longer use reddit these days, instead just read HN and some blogs. The community is nicer here.
Yes, as it says in the /r/cpp sidebar. You needed to post your request for help in /r/cpp_questions/
Coaching works (in programming contexts as well).
The knowledge is great and required, but being able to apply it, fail, learn, apply it, succeed is absolutely the fast track.
What is your workflow?
(10 hours is a large chunk!)
When I took him on, my flow's been this: I do as much work as I can, get stuck, then he's there to pull me out of the mess I made. I learn a ton along the way, and he'll point out topics for me to research on my own.
10 hours is a large chunk, but it's lasted a full 2 months with probably a good month left in it. This project edits some PhysX engine code for an Unreal Engine-based game I'm making. The level of technical depth in it is beyond anything I've done before, so I pulled out the stops for it.
You have him -- more or less -- on call when you get stuck for 30 minutes at a time?
Or do you batch all the roadblocks you have, then ask him to schedule something at, say 10am, the next day. He looks at your git repo and the issues you have?
$1,500 seems....excessive.
Therefore I think it's a reasonable price to charge. Whether it is worth $150/h to you (or your employer) I guess depends on the business. But if your company has say never used mongodb before (for example), it's not much to pay to get someone with all the battle experience to come in and get people up to speed rather than say have production outages as people didn't know what they were doing, or alternatively hiring someone full time at a cost of $200k just for their mongo expertise.
Can you elaborate on this? I had always wondered what a baseline rate should be if one goes freelance.
The weird thing is that I am very well aware that tutorials only feel good because I see progress, but that progress is empty. I am aware that confronting a personal project really settles that knowledge in, but I still postpone personal projects whenever I think “I don’t really understand what this means, maybe I should just finish that online course and I’ll be ready”.
Also fighting perfection over progress is tough. “This is not the best way of doing it” is constantly in my head when trying to do thing, which is mental space that could be used towards figuring out the next step.
But I finally started, as stupid and useless as it may sound, I’m just making a counter in Java that stores that in a MySQL database.
Why? Idk, I am learning how to connect my program to a DB, the quirks to learn from that, and then I plan on doing this from a browser. I also plan on trying SQLite because MySQL is overkill, and so just by doing this simple thing I learn a bunch of things going down the rabbit hole.
Does anyone need an app with a button that just adds a number to a row? No, but the different aspects of getting that to run with no errors are what’s important to me.
I agree. The struggle is real when trying to learn the "right" way to do something. However, progress can still happen (even if it is in the "wrong" direction). I'm okay scrapping a feature or even an entire project when trying something new. I've learned how not to do something and, more importantly, the reason behind that.
The trouble with any of this stuff is that no course/book/tutorial can prepare you for every eventuality, and sooner or later you’re going to want to do a thing that nobody explicitly taught you, with a combination of tools that differs from any tutorial you can find. I think building up skills in the way you’re doing it is great preparation for that eventuality.
Incremental custom projects is a good way to learn -- not everything has to be "useful for others", especially where learning and practice is concerned.
I wish you many productive struggles and subsequent successes in your journey!
Which is weird, because I really enjoy the convention of using we in math.
What I found with time is that I forgot most of those. Except for the very basic and foundational concepts, anything that I haven't kept practicing is almost gone. I can't even remember most of the courses or books I've read.
Even worse, in some cases I ended up actually using that cool tool that I learnt 3 years ago. Guess what, now it is 2 major versions ahead and most of what I knew is useless anyway.
I love the reference to JIT learning in the article. This has been my primary way of learning for the past few years: wait until I'm facing a problem, and then put the effort to learn enough to solve it.
I still do some background explorative learning, but JIT is much more efficient and effective.
I think that's true of any method of learning. I once took a class on a proprietary audio visual language, and a year of so later my manager asked me to write some control software using that language, and I basically had to start from scratch.
On the other hand, I took Stanford's first MOOC Swift Class, and have been using Swift as my primary language ever since.
I don’t think this is unique to MOOCs. I think this is a fact of life.
I like the occasional (as in, literally once a year) MOOC to see something completely outside my specific profession. But the only way to get good within my profession is hands-on activity.
It's similar to reading HN, or even ACM/IEEE articles. All of that stuff is for seeing new material, not for getting better at my bread and butter.
I have to mirror an observation I've read on here that matches my retrospective view: Job applicants with multiple online course certificates tend to do poorly in technical interviews.
<tangent>
This may in part be a failing of our education systems. "Be taught about something -> write test -> pass/no pass" is usually all there is, and this system of how knowledge is valued becomes ingrained in students. Sure, tests usually contain sections of "applying" the knowledge, but ultimately it's still studying to and because of the test.
If you're lucky enough to be both versed in a subject and visit a school that provides extra-curricular engagement on these subjects, you may get a glimpse of what it feels like to solve a challenge because you want to. Otherwise you have do that completely separately from whatever formal education you receive.
It has personally taken me many years and several key experiences outside of school to fully grok that presentations aren't just condensing a topic you don't care about into a scheme somebody else dictates, held in front of an audience that would rather be elsewhere. Or that playing music isn't just about getting the notes and their volumes right. But now I deeply enjoy both. I would imagine that many are similarly stuck with a terrible mindset regarding learning or problem solving due to the way they were educated, even if they would find it exhilarating with the right frame of mind.
</tangent>
So yeah, show off your self-directed projects in your resume. Thrill your interviewers with the cool problems you tackled. Mention key challenges you overcame.
Without exaggerating too much, I would say online course certificates are as indicative of your technical abilities as a screenshot of a completed Tensorflow download. And that extends to the message you send if you include them in your application.
I'm all for personal projects especially in DS/ML (it's how I started my career in the field), but the unfortunate reality is that there's really no way nowadays to learn the hard/boring parts of DS/ML without already having a DS/ML job. Any attempts at an analogous MOOC/YouTube would likely not be very popular.
That said, the DS/ML job market 2 years later is even more competitive, and niche personal projects on your resume are no longer enough. Even after working as a data scientist for 3 years, I'm not confident I could get another DS/ML job.
Even topics like ML (an example referenced by the original post) benefit greatly from an understanding of theory and fundamentals. Yeah maybe any random dev can hack together a model by downloading scikit-learn and throwing data at it, but you'll probably get much better results if you take the time to learn about concepts like cross-validation, overfitting, etc.
The "just do stuff" attitude has its merits, but there's also something to be said for working from first principles and learning some theory to back up your applied skills.
Maybe it's because I'm not a native speaker, but I have never heard of MOOCs before – and I'm consuming a lot of content in English on a daily basis (e.g. on HN).
Author is correct, most don't complete MOOC's (for various reasons).
However a good teacher is like a coach and will grease the skids for learning.
My experience teaching Python and Data Science at some of the biggest companies in the world is that you can be a professional and still have knowledge gaps. You don't know what you don't know. Once you fill in those gaps it can open many doors.
I elaborate a bit on my blog: https://www.metasnake.com/blog/learn-python-2021.html
On the other hand, you shouldn't lump together and dismiss all MOOCs as there are plenty of more advanced ones that will definitely make a difference. For example, 90% of MIT classes such as Intro to Statistics https://www.edx.org/course/fundamentals-of-statistics or CMU Deep Learning http://deeplearning.cs.cmu.edu/
- CS50 at they very beginning of my career ~2015 that brought me to the fundamentals of CS and all that it can do in a very fun way.
- Jazz Appreciation from UTAustin (https://www.edx.org/course/jazz-appreciation-3). I lived near a Jazz club and I often heard snippets of performances while walking by, but I felt like I needed a music background to really appreciate what I was hearing. I randomly spotted this course and I learned which eras of Jazz I like best, common themes in music, common instrument combinations, and the final project encouraged me to go listen to Jazz myself. It's become a fun part of my life in a way that a short YouTube intro or just walking into the club wouldn't have been able to inspire. Part of that was likely the predefined path it offered and Jeffrey Helmer's enthusiasm for teaching the course.
Ultimately, MOOCs can very well be a way to procrastinate on a professional or personal level from just diving into the thing you already have the basics for. But it can just as easily be a way to open you up to something you never thought was in your wheelhouse in a structured path. Blog posts, documentation, and most YouTube videos are too static to serve an absolute beginner that needs questions answered early, consistently, and frequently.
I'll take this chance to recommend 2 phenomenal free MOOCs: 1. Nand2Tetris[1] which really nails giving the realization (of not understanding just HOW MUCH) complexity there is in the layers upon layers of abstractions programmers use.
2. An introduction to Logic[2] via programming course (by one of the authors of the previous MOOC, Noam Nissan), which introduces logic (an overview that ultimately ends with Godel's completeness/incompleteness) in a relatively (to the rigorous math) approachable manner. The one caveat is the book is still a work in progress, and it has many parts that are not well written.
[1]: https://www.nand2tetris.org/ [2]: https://www.logicthrupython.org/
this x1000
watching something is more akin to entertainment, even if the contents are educational
videos are great for piquing interest and keeping motivation going, but the real learning is in the doing (which is hard and takes time)... there is no way around it
Youtube lectures on the other hand have been immensely valuable, especially if you can find a relevant (university) reading list and/or problem sets if they're applicable. All you really need as a self-learner is someone to say "head in this direction". After that I agree with op that finding something fun to do is the best way to learn.
On an aside, as a text highlighter (I highlight the text I'm reading), the javascript "tweet this" pop-up on this site is horrific.
Yeah if I google how to build a widget to add to an application, I can find that. However, the widget is often so tightly coded that it couldn't ever be useful, it doesn't fit a given pattern or concept... it's JUST that widget.
A widget that just adds +1 to a thing (an admittedly contrived example) might do the job for what I googled, but oh so often it is inflexible and doesn't really teach me much about WHY it was coded the way it did... it just produced an outcome that I googled.
I suppose in less niche areas it might be better to spend more time finding good tutorials, but even then, we learn much more when we do, not when we listen.
It also leads to a vastly different feeling, it's not knowing for the sake of knowing, it's know-how. It has social value.
ps: this brings a question, is there a way to teach that knowledge beside jumping in the pool ?
Fastai, who in my opinion create the best educational resources in the deep learning space, are a great example of this. They use a metaphor involving sports to explain their approach. You don't learn to play a sport by pouring over rulebooks and studying professionals—you start playing. However, as you get a feel for the sport, you then find yourself in a position where learning a lot more about the theory of the game would make a huge difference to you, and that's where courses come in. Similarly, they get you off the ground quickly with some basic intuitions around deep learning, give you a sandbox to do some JIT learning, and then begin layering in deeper concepts.
I've had similar experiences in my life, where taking graduate level courses was incredibly rewarding specifically in areas where I'd already spent a decent amount of time doing JIT learning—and arguably, where I'd reached a relative limit in how far JIT would take me.
If you bought a course on how to develop X with Y web framework and the course comes with lots of well written code, high test coverage and was extracted out of multiple real world projects that's basically buying a time machine because it might take you 6+ months to write the same code from scratch and you won't have the insights gathered from years of practical experience. Or even worse you might never get started because you get trapped by information paralysis.
I know a few people who have taken my https://buildasaasappwithflask.com/ course and built very successful businesses in less than a year. One of them is making $90,000 / month and initially spent like 4 months customizing the code from the course to do what his service needed to do.
Note: The TL;DR on the above course is it's not a course on how to find a SAAS app idea. It's focused on how to build the SAAS app itself using Flask, Docker, Stripe, etc..
Its basically the same thing there too. Honestly you need both structured learning and lived experience in both, and probably in most skills in life. If you don't have the structure you will meander aimlessly solving "problems" and "getting better" (at code or art) but never actually getting anywhere with it. If you only have the structure you will never be able to actually make anything truly new because you can't solve the novel problems in the trenches.
Start something new with structure but rapidly push yourself to start using that regimented curriculum to make new stuff. And then when you enter a new problem domain (you learned Python and want to start doing networking or you know how to draw but want to paint) you switch back to a regimented curriculum to start till you get that 20% baseline knowledge to build off of again.
What we need are technical MOOCs that discuss what decisions to make when approaching a problem, evaluating trade-offs, what are the common practices you'd come across in a production environment and where the concept you learned fits in the big picture.
I haven't found any MOOC that talks about the above in depth for web dev and the only youtuber I found who talks about this is TechLead but he mostly puts out 10 minute clips instead of complete tutorials.
I've gone back to books and I'm learning much more per time spent studying something.
Practical application is an area I've always thought was sorely lacking. There's lots of places to learn the theory, but I still don't get it until I understand the applications. Then I start to get a fingertip feel (Fingerspitzengefuhl if you want to come from a certain view).
Whenever I see "Application is left as an exercise for the reader", I read that as "I don't actually understand the subject well enough to teach it fully".
To give you an idea of what he does that's missing in MOOCs, take a look at his video in which he migrates a database to a new server: https://www.youtube.com/watch?v=Ry4EYnCgIwc
Throughout the video he talks about why he chooses a particular method among the different approaches available, discusses their pros and cons, what are some of the issues you might encounter in the real world that you should consider. Even if the video is about migrating a database he goes through many other related topics like DNS, choosing the server hardware and OS. He also talks about his past experiences and observations throughout. It feels more engaging and you feel like an apprentice rather than a passive consumer.
Specifically, after a certain base skill level has been reached. Also, these teams would include deadlines, navigating git/github, time management, communicating with others, etc.
Full-disclosure: I'm a part of a community / startup that organizes such teams for learners. I don't want to be spammy so will refrain from saying the name. It actually grew out of a MOOC forum to help with some of the issues mentioned in OP's article. It ran for about 3 years free as a time-intensive side project, but switched to paid to reduce another common MOOC issue (ghosting).
Doing all MOOC is bad for some of the reasons the articles covered. But doing all projects is also sub-optimal because sometimes it is hard to know what you don't know. Balancing theory and practice works the best for me.
If the point of the article is "don't do online course at the exclusion of everything else", that is just common sense.
Sometime they may not think to think: why isn't the data appearing? did that data even get read into the database? Do I have to open the dbase now to see? 5 minutes of watching someone do it can save you years of learning that workflow.
What I miss is what I (almost) had in college: the chance to learn in depth not tied to a particular instrumental outcome.
Hmmm... I guess that's technically true (and eventually you do need to start), but I've seen a lot of people continue to code in very inefficient ways because they actually don't know that a better way even exists. If you're not starting because you're not done learning, you're probably not doing it right, but if you're done learning because you've started, you're also not doing it right.
After reading thousands of Data Science/ML resumes and doing a lot of hiring, I find too many MOOCs to be a negative. They may be good for learning, but padding them on a resume isn't particularly valuable.
Sometimes I just out of curiosity go into their profile to see, and true enough, all of them are unemployed and have too much bs on their LinkedIn.
I'm half serious. like how can i make an algorithm that auto trades vwap starting with a $1000 account?
anyone have links for projects in; building your own receiver. building a laser. building a 4 story walk up multi family unit. building a particle accelerator programming a kernel from scratch how to get a super hot mail order Russian bride for free how to convert your car to hydrogen cell how to create your own cannabis genetics
i threw some in there to see if you're paying attention, but maybe there should be a thread for cool projects [not just github like].
In my personal life is when I am working on a large scope project, I tend to try to anticipate every single thing that I will have to do up front. But I've found I always miss something or misunderstand a requirement. It's way more efficient to just do things as they come up, and I'm trying to switch to that method more often.
I definitely relate to taking some kind of programming related course and they teach you about something you will never use, that people rarely use in real world scenarios, but there's still a pressure to make sure I fully understand it.
1. Stop doing **
2. Why I don't like **
3. You should not **
It's your personal thing. Don't like certain thing - try to do it your own way. Can't do it then change your attitude.
Besides, not everyone has the ability to "do it your own way". Sharing opinions like this can be a good way to determine if there's value in an idea and maybe even get help if needed.
1. Stop Posting Rants on Hacker News
2. Why I Don't Like People Writing About Disliking Things
3. You Should Not Tell People Not To Do Things
Seriously though? It's useful to see people's perspective and the discussion around them (and personally speaking, I come to HN for the discussion) is useful and insightful -often more so than the original article.
Click-baity titles are annoying, though. I'll grant you that...