One of the hardest parts of learning something new has always been figuring out which resources to use, whose advice to follow, and, most importantly, how I actually learn best.
For a long time, I barely thought about that last part. I assumed that if I was struggling to learn something, the problem was me rather than the way I was trying to learn it.
I’ve spent countless hours searching for tutorials, saving videos, bookmarking courses, rewriting documentation, and trying to memorize information that I would often forget the next day. At some point, I realized that many of those carefully saved video playlists were pointless for me. I was probably never going to watch them. Sitting through long lectures simply isn’t how I learn best.
What works much better for me is reading the theory at my own pace and then trying to use it as quickly as possible. If something doesn’t work, I go back, read the material again, think about what I missed, and try another time.
I usually learn in small loops: read, try, fail, figure out what went wrong, and try again.
That is when things really start to make sense.
For me, a working result is one of the best signs that I actually understand something. It might be solving a problem, writing a program, training a model, or building a small system. Until I can apply the idea myself, I consider my understanding incomplete.
I think most people have experienced this at some point. You read about a concept and feel like you understand it perfectly. Then you try to build something with it, and suddenly nothing works. That gap between understanding an explanation and being able to apply it is where a lot of real learning happens.
Of course, everyone learns differently. Some people prefer videos and lectures. Others learn better from books, documentation, experimentation, or a combination of all of them.
The important part is figuring out what actually works for you instead of blindly copying someone else’s learning process. A resource that works extremely well for one person might be almost useless for another.
In this blog post, I want to share the resources I’m currently using to learn machine learning and explain why I chose them.

You could almost call AI Engineering: Building Applications with Foundation Models by Chip Huyen a modern bible of artificial intelligence. I think it’s useful for almost everyone, from complete beginners who are just getting into AI to people who already have some experience.
It’s especially valuable if you want to build a broad understanding of what AI and machine learning actually are, where they can be applied, how the field works, and where it might be heading in the future.
The book also gives you a good introduction to the AI/ML domain, its terminology, common concepts, and the way modern AI systems are built.
Like every AI engineer, you need to be comfortable with Python. These days, there are countless resources for learning it, but if you are completely new to programming, I would recommend starting with the freeCodeCamp Python course and going through the official Python tutorial in the documentation.
Once you understand the basics, you can start solving problems on NeetCode and LeetCode. After that, I also recommend reading Effective Python by Brett Slatkin. It is a great next step once you already know the fundamentals and want to learn how to write cleaner and more Pythonic code.
For going deeper into machine learning, I would start with Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow by Aurélien Géron. It gives you a strong practical introduction to machine learning and shows how the main concepts are actually used.
After that, Building Machine Learning Pipelines: Automating Model Life Cycles with TensorFlow by Hannes Hapke and Catherine Nelson is useful for learning how to automate different stages of the machine learning lifecycle.
For preparing for ML jobs and interviews, Machine Learning Interviews: Kickstart Your Machine Learning Career by Susan Shu Chang is another useful resource.
And, of course, I strongly recommend Designing Machine Learning Systems: An Iterative Process for Production-Ready Applications by Chip Huyen. It focuses more on how real machine learning systems are designed, deployed, maintained, and improved in production.

There are also many interactive learning platforms online. The ones I currently like the most are:
DataCamp — It has a large collection of high-quality courses covering Python, data science, statistics, machine learning, and related topics. Most courses combine short videos, quizzes, and practical exercises.
LeetGPU — A great platform for practicing more technical GPU and machine learning problems. It is especially useful if you want to get closer to performance, parallel computing, CUDA, and lower-level AI engineering.
TensorTonic — You can think of it as something similar to LeetCode, but focused more on machine learning. It has practical exercises that help you understand ML concepts by actually implementing and solving problems.
Deep-ML — Probably my favorite of these platforms. I especially recommend it once you already understand the fundamentals and want to move toward an intermediate level. It has many exercises where you implement machine learning concepts yourself instead of only reading about them.
Inference Engineering Academy — A more advanced resource focused specifically on AI inference engineering. It covers topics such as LLM inference, PyTorch, Transformers, vLLM, SGLang, NVIDIA Dynamo, caching, batching, quantization, and multi-GPU serving. I would recommend it once you already understand machine learning and deep learning fundamentals and want to move closer to production AI systems and performance engineering.
DataLemur — A practice platform mainly focused on preparing for data science, data analyst, and related technical interviews. It has a large collection of SQL problems, but also includes Python, statistics, probability, and machine learning questions. It is especially useful for improving practical SQL skills and getting used to the types of problems that appear in technical interviews.
Learn Inference — An interactive resource for learning how generative AI models are actually served in production. It goes beyond simply using an LLM and explains topics such as latency, throughput, GPU architecture, CUDA, inference engines, quantization, caching, model parallelism, autoscaling, and deployment. I especially like that many concepts are explained through interactive visualizations instead of only text.
Mathematics for Machine Learning — A very good interactive resource for learning the mathematics behind machine learning. It starts from the fundamentals and gradually covers topics such as calculus, linear algebra, probability, statistics, and optimization. The lessons combine explanations with interactive visualizations and automatically graded exercises, which makes it particularly useful if you want to actually practise the mathematics instead of only watching lectures.
fast.ai – Practical Deep Learning for Coders — One of the best practical introductions to deep learning. Instead of spending a long time on theory before building anything, the course uses a top-down approach where you start by training useful models and then gradually learn how the underlying methods work. It covers areas such as computer vision, NLP, tabular data, collaborative filtering, PyTorch, model training, and deployment. I would especially recommend it if you already know basic Python and want to start building real deep learning projects.
NeuraPrep — A platform focused specifically on AI and machine learning interview preparation. It contains technical questions and quizzes covering statistics, probability, classical machine learning, data engineering, neural networks, computer vision, reinforcement learning, Transformers, and other AI topics. It is particularly useful once you already know the fundamentals and want to test whether you can explain ML concepts clearly rather than simply recognize them.
Another very useful resource is AI Engineering From Scratch, a practical GitHub-based roadmap that guides you from the fundamentals toward real AI engineering step by step. It is especially valuable because it combines theory with hands-on implementation, giving you concrete tasks and projects instead of just listing topics to study.
For the mathematics and statistics behind machine learning, I recommend Mathematics of Machine Learning by Tivadar Danka. It is useful if you want to understand the mathematical ideas behind the algorithms instead of treating them as black boxes.
As an extra honorable mention, I would also recommend following Marina Wyss — AI & Machine Learning on YouTube. It might not be a traditional learning resource like a book or course, but her content helped me a lot when I was first getting into the field and made me believe that learning AI and machine learning was actually possible.
Another YouTube channel worth following is San Diego Machine Learning. It has many useful lectures and technical videos focused specifically on machine learning.
So, for now, this is the main list of learning resources I’m focusing on. It will probably change and grow over time as I learn more and discover new resources.