For about 4 to 5 months ago, I have been working on a practical and complete machine learning curriculum. The curriculum contains 30+ notebooks from python programming, data analysis, data cleaning, data visualization, classical machine learning, computer vision to natural language processing.
I had faced a lot of challenges from day one and at some point, every day, I had to decide if I close the project, or if I keep going. I know I am not alone when it comes to the natural tension that always wants to pull us from our goals. I still have a hard time getting past such tensions and persisting on important works, but I can share what I learned.
1. Why of Things is Extremely Important
Most of us have many great ideas that we would like to work on, but when the actual work starts, we lack the reason to stick to the work especially when the work is very challenging.
Once you know the reason why you are working on something, make it clear and write it somewhere so you can always come to it every time you feel short or discouraged.
I have only been able to persist because I thought that if I can get the curriculum done, it might help others, and I will be happy of accomplishing something big. I was also learning as well!
2. A Structure is Important
It can seem trivial, but having a structure of things can make things progress, slow, or stop.
For me to have some sort of structure, I divided the project into 3 parts - programming and working with data, classical machine learning, and deep learning. In each part, I also had chapters. My job at each chapter was to determine the relevant things that I would work on. I also needed to structure those things well, and to my experience, it was the hardest part.
Let me give you an example. On machine learning with Scikit-Learn, I wondered a lot if I can group it by the task (regression, classification, clustering...) or if I could group it by models(linear regression, logistic regression, decision trees...). Grouping it by a task could have been a lot fast, but grouping it by models would give me an opportunity to research more about each model, and that's what I preferred.
I procrastinated on making such a decision for about two days, but it is worth it. I prefer procrastinating on things that I do not understand well how they should be than rushing to only do things fast!
3. Find Reliable Resources and References
The more I worked on this curriculum, the more I understood how important is to find your own resources.
My primary resources were documentation because they are the most trusted source and I wanted to make sure I am not taking somebody's else work. Some APIs are properly documented that you often do not need external pieces of information, but not all of them are. And this is where it becomes important to have the type of content that you can refer to or you can learn from in such cases.
It is undoubtedly good to have reliable resources, but too much of it is not helpful as having none.
4. Reduce Your Options
We often think that many options translate to better results but the opposite is quite true.
The days that I made good progress are the days that I limited the references. I do not know how it works exactly, but I can tell that constraining the options foster focus, and since the options are few, you are forced to think in order to solve a given problem or come up with a given strategy.
5. The Power of Tiny Habits
Yes, habits. You have probably seen the below illustration somewhere. Tiny habits repeated over and over can result in incredible things.
There are a lot of days that I did not have things to write, but even showing up and write the title and subtitles for the next day made a difference because I would come on the next day knowing what to work on.
On a course of a day, two days, and a week, it can seem that no progress is being made when you are optimizing for tiny gains. But in two, three, four weeks, the results are very astonishing. And the beautiful thing about all human beings is that they are very motivated to work on things that they see have produced results already, which means once you have made good progress, it's very unlikely that you will give up because you have the results to back you up.
I learned other things working on making a free machine learning curriculum, but if I look back, the most thing that helped me are remembering why I am making it, making sure that everything is organized(both finished and upcoming works), keeping the trusted source of information aside, limiting my references, and believing in tiny gains(thanks to James Clear for his writings on building habits that last).
I have received a lot of kind messages and I am very happy about that. I thank everyone who helped the repo to reach many people. If you find it helpful, let me know on Twitter.
Thanks for reading!
Each week, I write one article about machine learning techniques, ideas, or best practices. You can help the article reach many people by sharing it with friends or tech communities that you are a part of.
And connect with me on Twitter, and join this newsletter that I am starting to share some more ideas, what's I am working on, and notes about the latest machine learning news.