You Don't Really Need Another MOOC
Автор статьи Eugene Yan утверждает, что после одного-двух онлайн-курсов (MOOC) отдача от дальнейшего прохождения резко снижается в соответствии с принципом Парето. Просмотр видеолекций — это пассивное потребление, а не настоящее обучение; к тому же новые курсы нередко становятся формой прокрастинации или самосаботажа. Вместо этого автор предлагает сойти с «проторённого пути» и учиться через реальные проекты с грязными данными, ошибками CUDA и бесконечным гуглингом. Ключевая идея — just-in-time learning: достаточно знать ровно столько, чтобы начать, а остальное осваивать по мере необходимости. К обучению стоит применять принцип YAGNI — не изучать то, что вы не собираетесь использовать прямо сейчас. Практические проекты формируют навыки, которые невозможно получить ни в одном MOOC: умение формулировать задачу, отлаживать код, адаптироваться и доводить дело до конца.
You Don't Really Need Another MOOC
Вам на самом деле не нужен ещё один MOOC
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.
Не поймите меня неправильно, я люблю MOOC. Они отлично подходят, чтобы освоить новый язык программирования (например, Python, Scala), фреймворк (например, Spark, TensorFlow) или предмет (например, статистику, машинное обучение). Структурированная среда обучения, отличные преподаватели и упражнения (с решениями) ведут нас оптимальным путём к освоению новых концепций.
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. Doing another Python tutorial won’t help with writing better code. Most MOOCs follow the Pareto Principle and teach students the 20% they need to achieve 80% results. Thus, past the first or second course, our learning tapers off. (Also see Susan’s view on diminishing returns.)
Но в большинстве случаев это нам не нужно. Если вы уже знаете машинное обучение, прохождение очередного модного MOOC не поможет применять его эффективнее. Ещё один туториал по Python не поможет писать код лучше. Большинство MOOC следуют принципу Парето и дают студентам те 20%, которые обеспечивают 80% результата. Поэтому после первого-второго курса прирост знаний резко замедляется. (См. также мнение Susan о убывающей отдаче.)
Sometimes, new MOOCs become a reason to procrastinate, or worse, a self-handicap. You know this is happening when you hear yourself, or something else, having these thoughts:
Иногда новые MOOC становятся поводом для прокрастинации или, что ещё хуже, формой самосаботажа. Вы узнаете это по таким мыслям у себя или у окружающих:
«Я не могу начать создавать это, пока не закончу специализацию на MOOC.» «Моё резюме не рассматривают, потому что у меня нет сертификатов по Spark и PyTorch.» «Я недостаточно изучил deep learning, поэтому завалю собеседование.»
Watching lecture videos isn’t learning—it’s passive consumption. We sometimes equate taking an MOOC, or reading a technical book cover to cover, with learning the material. But how often do we struggle when we try to apply the technical knowledge or skills at work? Children don’t learn to ride bicycles via how-to videos. Similarly, we can’t learn how to program or apply technical knowledge just solely watching videos.
Просмотр видеолекций — это не обучение, а пассивное потребление. Иногда нам кажется, что прохождение MOOC или чтение технической книги от корки до корки равноценно освоению материала. Но как часто мы потом буксуем, пытаясь применить знания на работе? Дети не учатся кататься на велосипеде по обучающим видео. Точно так же нельзя научиться программировать или применять технические знания, только смотря ролики.
Go off the happy path
Сойдите с проторённого пути
Most good MOOCs or tutorials will provide hands-on practice. However, that hands-on practice will lie on the happy path. We can copy-paste the code and it’ll work. This makes sense as there’s a lot of material to cover and we don’t want to spend time debugging, doing prep work, or solving problems via trial and error. Students will lose patience, causing completion rates to drop.
Большинство хороших MOOC или туториалов предлагают практические задания. Однако эта практика лежит на проторённом пути (happy path). Можно скопировать код — и он заработает. Это логично: материала много, и тратить время на отладку, подготовку данных или решение проблем методом проб и ошибок нецелесообразно. Иначе студенты потеряют терпение и процент завершения курсов упадёт.
Being on the happy path makes it easier to complete MOOC after MOOC. However, when we try to apply what we’ve learned—either at work or on a personal project—it becomes much harder. This is because we’re now off the happy path. And this is a good thing!
Проторённый путь позволяет легко проходить один MOOC за другим. Но когда мы пытаемся применить полученные знания — на работе или в личном проекте — всё становится гораздо сложнее. Потому что теперь мы сошли с проторённого пути. И это хорошо!
Going off the happy path is how we further our learning beyond the classroom. This is especially so for our field of data science and machine learning, because:
Именно уход с проторённого пути продвигает наше обучение за пределы класса. Это особенно справедливо для data science и машинного обучения, потому что:
Реальные данные грязные и неструктурированные, тогда как большинство MOOC и YouTube-курсов начинают с чистых, подготовленных данных. Большинство необходимых навыков — технические. Поэтому практика написания кода (читай: отладки) необходима для их освоения. Экспериментирование — основа нашей области. Нужно пробовать разные подходы, терпеть неудачи и учиться за рамками того, что реально преподать в MOOC или онлайн-туториале.
“I hear and I forget. I see and I remember. I do and I understand.” – Confucius
«Я слышу — и забываю. Я вижу — и запоминаю. Я делаю — и понимаю.» — Конфуций
We go off the happy path by doing real-world projects, dirty data, CUDA errors, and all. Through projects, we learn how to define problems, apply algorithms wrongly (and correctly), google error messages, and iterate until it works. We practice resourcefulness, grit, and how to learn. These are the lessons that push us towards excellence.
Мы сходим с проторённого пути, делая реальные проекты — с грязными данными, ошибками CUDA и всем прочим. Через проекты мы учимся формулировать задачи, применять алгоритмы неправильно (а потом правильно), гуглить сообщения об ошибках и итерировать, пока не заработает. Мы развиваем находчивость, упорство и умение учиться. Именно эти уроки ведут нас к мастерству.
But, I don’t know enough to start a personal project!
Но я знаю недостаточно, чтобы начать личный проект!
Just-in-time learning
Обучение точно в срок (just-in-time)
You just need to know enough to start; the rest you’ll pick up along the way. We don’t need to know Python generators before developing your first Python program. We don’t need to know Spark before processing 2 million rows of data. We don’t need to know TensorFlow before training your first machine learning model.
Достаточно знать ровно столько, чтобы начать; остальное вы освоите по ходу дела. Не нужно разбираться в генераторах Python, чтобы написать свою первую программу на Python. Не нужно знать Spark, чтобы обработать 2 миллиона строк данных. Не нужно знать TensorFlow, чтобы обучить свою первую модель машинного обучения.
Just start, and let the challenges guide you towards your next learning needs. This way, you immediately apply what you’ve learned. This reinforces learning, improves retention, and increases satisfaction. Similar to just-in-time manufacturing, just learn whatever’s needed to make progress on your project. Technical skills are perishable—if we don’t apply what we learn, they’ll decay.
Просто начните, и пусть трудности подсказывают, что учить дальше. Так вы сразу применяете полученные знания. Это закрепляет обучение, улучшает запоминание и повышает удовлетворённость. По аналогии с производством точно в срок, учите только то, что нужно для продвижения проекта. Технические навыки скоропортящиеся — если не применять полученные знания, они угаснут.
Apply YAGNI to learning. Just like we don’t need to add functionality until it’s required, we don’t need to do every new MOOC or read every new textbook. No point overwhelming ourselves with all that information and knowledge which we won’t use or apply.
Применяйте YAGNI к обучению. Как в разработке не нужно добавлять функциональность, пока она не потребовалась, так и в обучении не нужно проходить каждый новый MOOC или читать каждый новый учебник. Нет смысла перегружать себя информацией и знаниями, которые вы не будете использовать.
How to become expert at thing:
1 iteratively take on concrete projects and accomplish them depth wise, learning “on demand” (ie don’t learn bottom up breadth wise)
2 teach/summarize everything you learn in your own words
3 only compare yourself to younger you, never to others
Как стать экспертом в чём-то:1) итеративно берись за конкретные проекты и доводи их до конца вглубь, обучаясь «по запросу» (то есть не учи снизу вверх вширь)2) объясняй/пересказывай всё, что узнал, своими словами3) сравнивай себя только с собой вчерашним, никогда — с другими— Andrej Karpathy (@karpathy) 7 ноября 2020
To be clear, I’m not saying that we should stop exploring and learning new things. I’m saying that we should lean towards being more focused.
Хочу уточнить: я не призываю прекращать изучать новое. Я говорю, что стоит склоняться к более фокусированному подходу.
When learning about new domains, subjects, or skills, adopt a childlike exploratory mindset. Don’t concern ourselves with the practicality of what we learn. However, if our intent is mastery, we should adopt a focused mindset and learn via hands-on projects, mistakes, and feedback.
Когда вы знакомитесь с новыми областями, предметами или навыками, включайте детский исследовательский режим. Не думайте о практичности того, что изучаете. Но если ваша цель — мастерство, переключитесь на фокусированный режим и учитесь через практические проекты, ошибки и обратную связь.
But, but… here are my reasons for _____
Но, но… у меня есть причины для _____
I often get pushback when I suggest doing a personal project instead of another MOOC, Kaggle, or further education. Here’s how some conversations go:
Мне часто возражают, когда я предлагаю вместо очередного MOOC, Kaggle или повышения квалификации сделать личный проект. Вот как обычно проходят эти разговоры:
“I’m very time-constrained and don’t have time for a personal project. MOOCs are self-contained and need only 2-4 hours a week”
«У меня очень мало времени, и на личный проект его нет. MOOC самодостаточны и требуют всего 2–4 часа в неделю.»
Yes, MOOCs are great return on time-invested for getting up to speed on a subject. But past a certain threshold of knowledge and understanding, you’re going to need hands-on practice to take your learning further. AFAIK, projects are the best way to do this.
Да, MOOC отлично окупают вложенное время, когда нужно разобраться в теме. Но после определённого порога знаний вам понадобится практика, чтобы продвинуться дальше. Насколько мне известно, проекты — лучший способ для этого.
“I tried doing a personal project in the past. But I got a lot of errors and had to google a lot—I don’t think I’m ready for them until I do more MOOCs.”
«Я пробовал делать личный проект раньше. Но столкнулся с кучей ошибок и постоянно гуглил — думаю, я ещё не готов и мне нужно пройти больше MOOC.»
Getting errors and googling for help is perfectly normal! Even the instructors who created those MOOCs do that too. That’s how we learn—by trying, failing, and overcoming.
Ошибки и поиск решений в интернете — это абсолютно нормально! Даже преподаватели, создавшие эти MOOC, делают то же самое. Именно так мы и учимся — пробуя, ошибаясь и преодолевая трудности.
“Personal projects are too difficult. Taking an MOOC is easier.”
«Личные проекты слишком сложные. Проходить MOOC проще.»
That’s exactly why you need to do a personal project. The difficulty you experience is the learning curve—without it, there’s no learning.
Именно поэтому вам и нужно делать личный проект. Та сложность, которую вы ощущаете, — это кривая обучения. Без неё обучения не происходит.
MOOCs feel easier because their tutorials and assignments are structured to follow the happy path. But this means you’re deliberately steered away from the hairy issues that you’ll face in the real world, unlike in a personal project.
MOOC кажутся проще, потому что их задания и упражнения выстроены по проторённому пути. Но это значит, что вас намеренно уводят от запутанных проблем, с которыми вы столкнётесь в реальной работе, — в отличие от личного проекта.
“Doing that MOOC/Masters gives me a certificate that helps my resume.”
«Прохождение MOOC или магистратуры даёт мне сертификат, который украшает резюме.»
Perhaps. Nonetheless, companies are placing less emphasis on educational qualifications, even for technical roles. Recruiters and hiring managers are also becoming more open-minded. And in the end, from a hiring manager’s perspective, what really counts is if you can do the work, not that cert.
Возможно. Тем не менее компании всё меньше ориентируются на формальное образование, даже для технических ролей. Рекрутеры и нанимающие менеджеры тоже становятся более открытыми. А в конечном счёте, с точки зрения нанимающего менеджера, по-настоящему важно, можете ли вы делать работу, а не наличие сертификата.
“The recruiter said I would be tested on technical skills and knowledge. Thus, I need to do more technical MOOCs.”
«Рекрутер сказал, что меня будут проверять на технические навыки и знания. Значит, мне нужно пройти ещё больше технических MOOC.»
To an extent, MOOCs and YouTube videos are helpful, especially for questions that test your knowledge (read: memory) or require you to know the trick (e.g., leetcode type questions).
В определённой степени MOOC и видео на YouTube полезны — особенно для вопросов, проверяющих ваши знания (читай: память), или задач, требующих знания трюка (например, задачи в стиле leetcode).
However, for most interviews, you’ll likely get more nebulous tasks, like designing a data pipeline, whiteboarding a machine learning API, or coding up a basic k-nearest neighbors or decision tree. These assess your ability to design and develop maintainable systems, think through edge cases, and adapt based on feedback. The hands-on practice from projects will be more helpful in such interviews
Однако на большинстве собеседований вам, скорее всего, дадут более размытые задачи: спроектировать data pipeline, нарисовать на доске API для машинного обучения или написать базовый k-nearest neighbors или decision tree. Такие задания оценивают вашу способность проектировать и разрабатывать поддерживаемые системы, продумывать крайние случаи и адаптироваться по ходу обратной связи. Практический опыт из проектов будет куда полезнее на таких собеседованиях.
“What personal project should I do?”
«Какой личный проект мне делать?»
Start with something you’re interested in. If you’re not intrinsically interested in it, you might find difficulty finishing.
Начните с того, что вам интересно. Если тема не вызывает внутреннего отклика, вам будет трудно довести проект до конца.
Aim for something you can complete over the weekends in 12 weeks, ideally, 6 - 8 weeks. Any longer and it won’t seem urgent enough (and you’ll lose momentum).
Выберите что-то, что можно завершить за выходные в течение 12 недель, а в идеале — за 6–8 недель. Если дольше, задача не будет казаться достаточно срочной (и вы потеряете темп).
“I’m familiar with web scraping/ruby/excel, can my personal project be about that?”
«Я знаком с веб-скрейпингом / Ruby / Excel — может ли мой личный проект быть про это?»
Sure. Just start somewhere and evolve it along the way.
Конечно. Просто начните откуда-нибудь и развивайте проект по ходу дела.
Nonetheless, if you’re doing a personal project to learn, you’ll probably want to deliberately pick something new and unfamiliar. Or if you’re doing a personal project to build your portfolio (and get a job), you’ll want to look over the job requirements to make sure you address them.
Тем не менее, если вы делаете личный проект ради обучения, возможно, стоит намеренно выбрать что-то новое и незнакомое. А если ваша цель — портфолио (и трудоустройство), изучите требования вакансий и убедитесь, что проект их покрывает.
“But, I can’t think of any interesting personal projects!”
«Но я не могу придумать ни одного интересного личного проекта!»
Look back on the classes and material you’ve covered. I’m sure you’ll find something interesting that you’ll want to dig deeper into.
Вспомните курсы и материалы, которые вы уже прошли. Уверен, вы найдёте что-то интересное, во что захотите углубиться.
This is also a good test of whether you’re interested in a discipline. If you can’t think of a personal project that interests you, do you really want it for a career? (And the answer might be yes, for various reasons such as compensation, prestige, etc.)
Это также хорошая проверка вашего интереса к дисциплине. Если вы не можете придумать проект, который вас увлекает, действительно ли вы хотите связать с этим карьеру? (И ответ вполне может быть «да» — по таким причинам, как зарплата, престиж и т. д.)
“Other than personal projects, anything else you would recommend?”
«Помимо личных проектов, что ещё порекомендуете?»
Nope. My sole recommendation is to start a personal project and learn whatever you need to complete it.
Нет. Моя единственная рекомендация — начать личный проект и учить то, что нужно для его завершения.
• • •
• • •
In 2021, instead of taking that MOOC or watching another YouTube machine learning playlist, learn by doing instead.
В 2021 году вместо прохождения очередного MOOC или просмотра ещё одного плейлиста по машинному обучению на YouTube лучше учитесь на практике.
Learning a programming language? Build an app, any app. Share it online and get feedback. Iterate and add new features. Learning a new machine learning technique? Find some novel data and apply it. Understand where it fails, where it shines, and how to adapt it for different data sets. Share your findings via writing online or at a meetup.
Изучаете язык программирования? Создайте приложение — любое. Поделитесь им в интернете и получите обратную связь. Улучшайте и добавляйте новые функции. Осваиваете новую технику машинного обучения? Найдите необычные данные и примените её. Разберитесь, где она работает плохо, где блестяще и как адаптировать её для разных наборов данных. Поделитесь результатами в статье или на митапе.
Learning comes from doing. Not watching videos, or reading textbooks. Start doing now.
Обучение рождается из практики. Не из просмотра видео и не из чтения учебников. Начинайте делать прямо сейчас.
I think we should do less MOOCs:
• Most of the time we don't need it
• Watching MOOC videos isn't learning
• MOOCs are a reason to procrastinate, or worse, a self-handicap
Instead, go off the happy path and adopt just-in-time learning 👇https://t.co/w8qAd639HM
Думаю, нам стоит проходить меньше MOOC:• В большинстве случаев они нам не нужны• Просмотр видео MOOC — это не обучение• MOOC становятся поводом для прокрастинации или, что ещё хуже, самосаботажомВместо этого сойдите с проторённого пути и учитесь точно в срок 👇https://t.co/w8qAd639HM— Eugene Yan (@eugeneyan) 26 января 2021
Thanks to Yang Xinyi for reading drafts of this.
Благодарности: спасибо Yang Xinyi за вычитку черновиков.
If you found this useful, please cite this write-up as:
Если этот материал оказался полезным, пожалуйста, цитируйте его так:
Yan, Ziyou. (Jan 2021). You Don't Really Need Another MOOC. eugeneyan.com. https://eugeneyan.com/writing/you-dont-need-another-mooc/.
Yan, Ziyou. (Jan 2021). You Don't Really Need Another MOOC. eugeneyan.com. https://eugeneyan.com/writing/you-dont-need-another-mooc/.
or
или
@article{yan2021mooc,
title = {You Don't Really Need Another MOOC},
author = {Yan, Ziyou},
journal = {eugeneyan.com},
year = {2021},
month = {Jan},
url = {https://eugeneyan.com/writing/you-dont-need-another-mooc/}
}
@article{yan2021mooc, title = {You Don't Really Need Another MOOC}, author = {Yan, Ziyou}, journal = {eugeneyan.com}, year = {2021}, month = {Jan}, url = {https://eugeneyan.com/writing/you-dont-need-another-mooc/} }
Join 11,800+ readers getting updates on machine learning, RecSys, LLMs, and engineering.
Присоединяйтесь к 11 800+ читателям, получающим обновления о машинном обучении, RecSys, LLM и инженерии.