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.
Love it, I think that’s a great approach. Build a bunch of tiny “stupid” things of increasing complexity and before long you’ll step back and realize how much you’ve improved. I trying to instill this in folks as I teach React - rather than building some portfolio masterpiece out the gate, do a bunch of little fun things to build skills and confidence.
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.
You may be a self-described noob at whatever you're learning, but it's clear from your outlook that you've had substantial work or life experience to understand complexity as a general phenomenon (i.e. expecting unexpected errors, requiring depth of learning in yourself).
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 find the most important thing when learning anything new is a "safe harbor" to explore from. That's why "Hello world!" is so fundamental. And that's why a counter stored into a database is one of the biggest steps you can make - you've wedged the door open and it can't possibly fall shut again. Everything else is incremental from there. And if something doesn't work, you know you can just go a step back and reassess, without starting from zero. Writing code is beautiful like that.
I wish you many productive struggles and subsequent successes in your journey!
MOOCs are for introducing a new topic; they can't make you an expert in anything.
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.
For me the problem really is this: I want or need to do X, and to do that I need to know Y, which is a subset of knowledge domain Z, and I only really have time to learn Y. Sometimes I can get away with learning only Y, but most of the time not spending all that time learning Z means I've only thought I've learned Y, and as soon as something doesn't work as expected, I'm stuck.
What I miss is what I (almost) had in college: the chance to learn in depth not tied to a particular instrumental outcome.
I agree that MOOCs are very removed from the reality of building something. The unknown territory, the false starts, the unknown unknowns, gradual refinements, new requirements.. It's a whole different field in itself. Which is adult/pro life I guess.
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 ?
If you find a really good tutorial by programmers who are both excellent teachers and experienced in that particular field, it beats JIT learning on a personal project in one important respect. You get exposure to the One True Way of doing things.
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.
> 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.
As with so many things in life the best way probably doesn't live at either extreme. Often times I'll read about a subject and not fully understand it (and probably not even take the extra time to fully understand it) but when the problem comes up organically a light bulb goes off and I at least know what I'm googling for at that point.
Continuing on with this train of thought, I agree with you. I'm not a programmer but I once had to learn how to use networking software for real world implementations, things like mailservers, firewalls etc etc. I did a fair bit of JIT but finally got hold of some courses for each piece of software. The bump in my knowledge and understanding was raised by a few orders of magnitude that almost 15 years later has still stuck with me. It's about funding the right expert as you say. The right person is invaluable.
This is the main reason that I still like proper books over quick tutorials. It's easy to end up fighting platforms and frameworks to make it do what you want. If you know the patterns and available features, it's less likely that you'll face the same levels of friction.
> If you find a really good tutorial by programmers who are both excellent teachers and experienced in that particular field, it beats JIT learning on a personal project in one important respect. You get exposure to the One True Way of doing things.
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
The counterpoint is if you dive right into a project and make a bunch mistakes it'll stick a lot more when you learn the "proper" way.
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.
> If you find a really good tutorial by programmers who are both excellent teachers and experienced in that particular field
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 wish articles would at least explain acronyms the first time they're mentioned. Just putting the full form in parenthesis would go a long way and not disturb readers that already know them.
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).
I'm a native speaker and I had never heard of it before either. From reading the title I thought this was about creating content and teaching others programming since MOC sometimes stands for My Own Creation.
Plea for future article writers: It won't kill you to hyperlink the first occurrence of acronyms (especially titular ones) in the block text. Those ten seconds will not only save hundreds of readers time (even if they only mouse over the link to see the expansion in the Wikipedia page title). It will also prevent readers opening your article, seeing the same unexplained acronym mentioned every second sentence and deciding that a google search with an unknown amount of "figuring out which of all the results matches the article context" is not worth their time.
TFA really only applies to basic new software topics. I'm doing a course in biochemistry right now. It's literally the recording of a course taught at OSU that the professor was extremely generous to make and post on YouTube (thank you, Dr. Ahern!). I'm not sure how I'd ever learn biochemistry without it, seeing as I'm not in college anymore.
It had never occurred to me to wait for a class to teach me something. Just go out and learn it! If there are no references (books, wiki, blog, training resources) it's great fun to go your own way and figure it out from scratch. Usually there are some shoulders to stand on and reading a quick paper is fine well spent, but in every niche area it's best not to spend too long searching for that paper. Just do. Learn along the way.
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.
I've picked up drawing in the last few years, probably because it occupies enough overlap with the centers of my brain I trained to code but also is outside the envelope enough to still feel like something different from my day job.
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.
Many years ago I used to be very proactive about my learning. I read tons of books, did MOOCs, tutorials, learnt new tools and frameworks...
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.
> Anything that I haven't kept practicing is almost gone.
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.
Very much this. I'll take MOOCS read an article and then feel like I forgot everything only to have a much easier time "learning" it the second time when it becomes practical.
Everyone knows these are 90% for credential building vs skills, why are they desirable for hirers? I feel like it creates some self fulfilling prophecy of “these credentials are useful because other people have them”.
Off topic, but I find it very off-putting when people write blog posts using "we". Like speak for yourself, I have my own reasons for doing things. It's to the point where I don't even pay attention to what the person is saying because they're being so presumptive in telling me what I think.
Which is weird, because I really enjoy the convention of using we in math.
Maybe the former seems pushy while the latter is inclusive. Math is about discovery and we are all in the same boat. A marketer saying "we are all in this together" feels manipulative.
I like learning about other people's opinions, even if they're just opinions. They help me refine my own.
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.
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...
I wrote a similar article 2 years ago (https://minimaxir.com/2018/10/data-science-protips/) arguing against MOOCs for learning data science/machine learning skills, as they are not reflective of real world applications.
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.
How horribly disappointing. I'm at the tail end of a 6 month, $17,000 online DS bootcamp. I've got some great projects and learned a ton but yeh, they seem to be slowly preparing to let us down. They keep saying how hard it will be to find a job and may take months. LOL, I'm screwed.
The frame of mind that kept me going was focusing on my effort, instead of an outcome. I visualized my effort by tracking job applications. I applied to a lot, so at the end of the day, that metric is what made me feel successful at the end of the day, not necessarily whether some inundated recruiter emailed me back.
It's down to the market. There aren't that many beginner or mid-level jobs in the field and there is a big oversupply of candidates. I wouldn't recommend data science or machine learning to people who are changing career direction or need to invest a lot of time/money/effort to catch up with all the theory. Not that it's impossible, just very hard. It's also getting more and more gatekept over time with increasing requirements for advanced degrees.
You're not screwed. If you know any working data scientists // MLEs I would really recommend you get feedback from them on your projects. Ask them to do some mock interviews. Way too often I see bootcamp candidates who do well on technical screens but fall apart during in person interviews because they just did what the instructor told them (use docker, put it on github) rather than understanding why people want to see those things.
A lot of it may come down to research AI vs. applied AI. MOOCs that are online versions of university courses are heavily slanted towards research AI, which involves lots of math and may not be all that applicable to what most data scientists are doing on a day-to-day basis.
This post seems to be addressing a specific phenomena and I tend to agree. I don't see the point in doing more than 1-2 introduction-level courses.
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.
Maybe this is true for some topics. Yeah, a lot of times you can pick up a new programming language by playing around with it. I don't think most people will have much luck learning say, advanced mathematics by just futzing around and skimming Wikipedia though.
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.
I think MOOCs are great for the thing you've been sorta kinda interested in but didn't know where to start. Around the 0%-20% background-info ballpark. For me, my most successful MOOCs have been:
- 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.
This is as ridiculous as saying "Stop watching videos". Everyone's online courses and video content is completely different and unique to their level of experience. Most online courses hold your hand through building a project: that's a good thing, for those who want that content.
Just knowing the basics and then diving into tinkering risks wasting a lot of your time making mistakes that other people have already made and learned from.
If the point of the article is "don't do online course at the exclusion of everything else", that is just common sense.
> "Doing that MOOC/Masters gives me a certificate that helps my resume."
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.
This is interesting in that you're advocating for a lot more CE than many other fields require or look for. More and more it's becoming apparent that CS needs a standards body and a more structured learning process. As many people feel that no matter how much extra time they put in it's not enough.
This is basically the reason we are building Eduflow (www.eduflow.com), a learning management system for active learning. Some things can and should be learned by a series of videos, but if you want to learn a real skill deeply, then you need to engage with the material in some way.
115 comments
[ 3.1 ms ] story [ 160 ms ] threadThe 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!
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.
What I miss is what I (almost) had in college: the chance to learn in depth not tied to a particular instrumental outcome.
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 ?
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.
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).
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.
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 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.
Which is weird, because I really enjoy the convention of using we in math.
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...
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.
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/
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.
- 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.
If the point of the article is "don't do online course at the exclusion of everything else", that is just common sense.
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.