Probably my question is too abstract but I wanted to ask you, which learning style you think is more efficient (the names of these style are arbitrary):
Developer: Focus on one single project/dataset for a long time (classification, regression, segmentation, whatever…), make it production-ready (apps, APIs, posts, etc.), while working on lecture examples in spare time to have a general understanding of other topics.
Hacker: Pick a new idea/project/dataset each week to be aligned with the course of lectures, and build MVP in the shortest time (as you would do during hackathon).
Contestant: Pick a single dataset, and do your best to achieve the highest result possible in a specific competition. (Or the best possible accuracy, if the dataset is not hosted on any competitive programming platform). Then, when the competition is finished, pick the next one.
Jack-of-all-Trades: Work in parallel on several datasets/projects, gradually improving them during a long period of time.
I know that Jeremy mentioned the idea of doing the one thing very good, and I agree with this approach. Usually, it is my main strategy in work and learning. So I am usually sticking with something between Developer and Jack-of-all-Trades.
What is your opinion? Do you think it is worth to focus your efforts on 1-2 projects that are most important to you and try other things as side tasks or schedule your time in a round-robin fashion, iteratively giving small chunks of time for several tasks?
Sorry if the question is too broad. Would be glad to hear your thoughts about various learning styles. Do you have a totally different strategy?
I don’t think I have enough mental capacity to work on more than two projects at a time (and usually it is still one taking precedence to the other).
I think this applies to your master thesis, your opus magnum, what you would like to show to the world (especially if you are looking for a job). If I am reading this right, the idea is that it is better to get one major project right vs completing a couple of smaller ones. Probably one can learn a lot working on a thing like that, and some people seem to achieve great results jumping into a project of such scale without much (any?) prior experience, but to me it feels like something separate to purely focusing on learning. I would say this is something that you go after when you already have some bearings and would like to see what you can achieve with your skills in the wild.
For learning I am not sure anything beats working through each of the lesson notebooks and doing something similar but on different dataset. This would definitely not qualify as a major project but doing this over and over again is probably quite a good way to learn.
PS. The above might be too conservative - there is value in going after major projects even without experience. All I wanted to emphasize is that there is real value for learning in mini projects and misreading the quote by Jeremy might prevent one from doing what seemed to have worked really well for many people, and that is churning out a lot of those mini projects just to learn to apply various concepts / improve coding skills / learn APIs, etc.
Yes, sure, you’re right, there are no quotes in the world that should be taken so seriously to affect a final decision, I believe
Just mentioned this idea as one of the possible ways to study. That’s why I’ve tried to list several possible approaches Like, as you said, a thesis is usually built on the top of a huge bunch of practical work.
It is a more like an attempt to find a balance between being too focused on a single task, and being too unfocused, I would say.
Exactly right - during the course, you probably want to ensure you’re following along with each notebook and can do some simple extension of it. Then if you have time left over, see if you can use some of the new skills to improve your project.
I personally prefer the developer style and I learn more this way but it takes time and requires patience and my concern is that if I don’t work on different projects and learn new concepts quickly, I won’t be able to catch-up later. In addition, I have mostly studied data science through Jack-of-all-Trades style as I finished a master program in Data Science which took only a year and we had to learn Statistics, CS and ML concepts in a short amount of time. Now, I want to know variety of the topics including ML math, statistics, software engineering, visualization, AI and it takes time to know them in depth and that is exactly my challenge right now. I struggle on weekly basis to decide about the books to read or courses to take or listen to videos explaining the concepts from bottom-up (e.g., Andrew Ng videos) or top-down approaches.
Everyday that I learn a new library in python or a package in R, there is another one coming up that is super useful and takes time to learn. So considering that the field is moving so fast, do you think it is better to spend time getting familiar deeply with the detailed steps behind ML models like LDA, LSTM, Clustering, etc or do you think it is better to be practical and focus more on top-down approach and work on a project and makes it production ready and move to the next one?
That’s interesting! Yes, agree, probably it is a part of top-to-bottom approach - start with simple things and dig deeper only when you’re ready.
I was trying to go using the first approach but had a lack of practical experience, I would say. For example, I have a couple of Bertsekas books about dynamic systems that are full of math and equations. I was reading through them but still didn’t find a way to apply So it was like trying to predict the future that never comes. So now I am reading less and trying more.
I believe in doing fast minibatches of learning different things and having one big project. Perhaps kaggle is the best platform to help you in doing the minibatches. Here is a nice blog post that I think align very well with my experience.
Yes, that’s right. I am going to try to make as much submissions as I can to various competitions there to get relevant experience. Also, I would like to follow all PyTorch tutorials to get a good understanding of the framework itself.