How I'd learn Machine Learning (if I could start over)
Everything you need to learn ML in 2025 from zero.
I recently transitioned to working in ML/AI as a software engineer at Microsoft.
I previously worked at TikTok in a pure backend engineering role; it was amazing but I knew I wanted to be working in ML.
In this guide, I want to go over exactly how I’d learn machine learning if I could start over from absolute zero. Let’s get into it!
Python
I recommend your first step being learning Python basics. It’s the industry gold standard and go-to programming language for machine learning.
There is no best way to learn Python, don’t get stuck in analysis paralysis.
If you're new to coding, start with the basics: understanding syntax, writing loops, defining functions, and getting comfortable with object-oriented programming.
Honestly it doesn’t matter which tutorial or course you pick; the key is to write code consistently.
This section is mainly for beginners who haven’t programmed before. I wouldn’t get caught up in learning advanced topics like list comprehension and class inheritance.
Math
You don’t need to know complex math to learn machine learning! This is the single biggest blocker for devs trying to get into machine learning and it makes me angry.
You do however need to understand the fundamentals of calculus, linear algebra, and probability theory to understand pretty much any ML topic.
If you did any undergrad in engineering, most of these math courses will have already been required for your degree. You can spend a few weeks brushing up your old notes and that should be mostly sufficient.
Additionally, you can use these amazing free resources if you want to start fresh or supplement your existing knowledge.
Machine Learning Libraries
Once you're comfortable with Python, it's time to explore the core ML libraries.
Numpy is a library for doing math with matrices or arrays. It’s perfect for applying the math you learned in the previous section.
Pandas is another library for data manipulation. It makes it easy to clean, transform, and analyze data before feeding it into ML models.
Finally, Matplotlib is a tool for visualizing data and graphs. This is very useful for presenting your data to other people, I use it all the time at work.
All these libraries also work very well with Jupyter Notebooks and are an essential part of learning Machine Learning.
These frameworks are important because they will improve your practical Python and ML skills.
I’d recommend getting familiar with the basics of these libraries with a few quick tutorials and moving onto the next sections. You’ll really deepen your expertise with these libraries once you apply them to your projects.
Learn Machine Learning
Now for the fun part, actual Machine Learning! I will recommend the best courses to take from zero.
The most famous course and the one that I recommend you start with is Andrew Ng’s Machine Learning Specialization on Coursera.
This course will take some time to go through, but it’s absolutely worth it. It covers ML fundamentals such as supervised learning, decision trees, neural networks, unsupervised learning, and much more.
You’ll also get hands-on experience implementing in Python and get to building ML models, recommend systems, and neural networks. It’s a very comprehensive course and the best introduction to the field.
Next, I’d recommend the Deep Learning Specialization course by Andrew Ng. This is the follow-up from the Machine Learning Specialization and will teach you everything you need to know about deep learning.
These two courses alone will cover most of the theory you need for ML. You can supplement your learning through other courses and resources online.
For example, one series I recently finished was Andrej Karpathy’s Neural Networks: Zero to Hero on YouTube.
Unlike traditional ML courses, this series is code-first and focuses heavily on practical implementation in Python using NumPy and PyTorch.
The series takes you from basic neural network theory to building a full-scale GPT-like model from scratch. It’s actually pretty incredible.
Lastly, you can take the HuggingFace’s NLP course. The course focuses on using pre-trained transformers for various NLP tasks and fine-tuning models efficiently. I haven't finished it, but it's a great interactive course with Jupyter notebooks.
Practice
The best way to learn anything is through hands-on experience. This is by far the most important thing for solidifying your understanding and being able to apply this knowledge in industry.
Firstly, I’d recommend Kaggle competitions. This will give you an opportunity to learn how to implement and apply a machine learning algorithm to a real-world problem. This is how ML is actually used in the industry to solve real-world problems.
Next, these are some of the best projects and resources that I recommend. You should be trying to solve real problems that you face, I can write another post about examples I worked on.
You can also try implementing ML algorithms from scratch, this will give you a much deeper understanding. You can start with a simple linear regression and gradient descent, then eventually work towards a shallow neural network.
I’d also recommend creating a blog or posting on X/Github, this will allow you to stand out amongst other candidates. You can simply write about ML concepts and your learnings, this will show you’re really a practitioner.
If you’re cracked, you can try implementing research papers from scratch. I haven’t attempted this myself, but this is the type of practice candidates should target if they want to go into ML research.
Summary
If I had to start over, these are the exact steps I would take to learn machine learning. Having a software engineering background honestly gives you a significant advantage. The key is to apply what you learn as soon as possible. Machine learning is a field of continuous learning, and progress comes with consistency. You will eventually reach your goals with enough practice. Happy learning!
I'm glad to know that I'm making progress in the right direction. I have finished the "Supervised Machine Learning: Regression and Classification" course by Andrew Ng, where I learned about regression models, linear regression, gradient descent, overfitting, and logistic regression. My next step is to start the course "Advanced Learning Algorithms."
Thank you for sharing your experience. I really appreciate it.
These posts are gold, thank you!