Learning and practicing Data Science can be challenging – trust me, I have been doing it for over four years! I have dealt with all the complicated math equations and complex code. However, I now know how to handle it better using techniques and advice I picked up along the way, which I will share with you in this article.
How To Approach Math
This is the Bellman equation, which is at the core of reinforcement learning, one of the most exciting areas of Machine Learning.

Let’s be honest.
If you were seeing this for the first time, you would have no idea what was going on – unless you are some Einstein-level genius!
Courses, university degrees, and online resources often throw equations at you to explain how machine learning algorithms work. This math "technically" explains what is happening in a very theoretical way but is far from intuitive.
I remember when I was first learning neural networks, and all these multiple subscripts and superscripts flew around everywhere. It was tough for me to understand what was happening, and it really unmotivated me to keep learning.
While I am very keen for data scientists to learn the underlying maths, there is no point in doing that unless you fully grasp what’s happening.
When you encounter an equation, don’t stare at it, hoping for a eureka moment. Instead, take a step back and ponder its purpose. This approach can dramatically improve your understanding of machine learning algorithms.
When mathematicians and scientists formulate their theories, they start with an idea and a concept, which is then translated into a mathematical framework. Not the other way around.
You must think, "What is this equation trying to do?"
One effective strategy that has worked for me is to engage in practical exercises. For instance, when I was learning backpropagation, I manually performed it on pen and paper without even considering the overarching equations (and even wrote a blog about it!). This hands-on approach can significantly enhance your understanding of the algorithm’s processes and reasons.
This would instill the processes and reasons behind the algorithm, which I can better translate into a mathematical formulation.
The best way to summarise this point is to ask "why" and "what" the math is trying to do.
Thinking Is Coding
I am sure we have all been there, well at least I have, watching video tutorials on someone implementing their fancy transformer model using PyTorch making it look so easy. You think, "Yeah, I can do this too!"
After 5 hours, your code only has the imports to the modules …
# An example of my python file!
import torch
import help from me
Coding is HARD, if you didn’t know that already. But when you combine coding with the intricacies of data science, the difficulty compounds quite a bit.
Most coding professionals write less code than you think. To be honest, the time I actually spend coding is probably about 5% if that. The majority of the time is spent thinking about how to actually code something and the best way to do it. I run through many different implementations and iterations in my head, and probably only about 1 in 20 probably ever get written in my IDE.
Then, you will ultimately need to debug it because the first pass will most likely have problems with it, which will take even more time!
You will often spend more time debugging what you wrote, then actually writing it!
However, I wish someone told me that thinking through what you’ll code is not just a precursor to the actual coding. It’s a crucial part of the coding process, a form of coding in itself. You’re not just staring at an IDE but programmatically engaging your brain and running through various coding implementations iteratively.
This approach helped relieve the pressure when coding and prevent me from rushing too quickly to have something typed out on the screen. In fact, it made my code better because I spent more time thinking about it than just spamming my keys.
Over time, your thinking and programming will become more seamless and quicker as you learn the correct implementations and patterns in specific scenarios, but it’s all about practice and gettings the reps in.
Trust me, no one is smashing their keyboard for eight hours straight with green numbers rolling down their screen like you see in movies!
Breaking Down Large Code Bases
In my first data science job, I remember receiving a jira ticket to extract the trained model object from the train.py
file to the main()
function entry point of a repo/project.
Like many of you, I was faced with the daunting task of deciphering my first production standard codebase. To make matters worse, the train.py
file was buried about 10 functions deep from the entry point!
To this day, I am really not a fun of nested functions and data structures!
I was immediately overwhelmed and felt real imposter syndrome (defo not for the first or last time!).
Yet, over the course of three years, I’ve honed not just my technical skills, but also my systematic approach to tackling new data science or machine learning codebases.
These are the steps I take, and they massively accelerate my understanding of the repo:
- I first need a clear picture of the inputs and outputs – what data is coming in and from where, and what data is being pushed and where it is going.
- I find the
main()
entry point, what is going into this function, and what it does with these inputs. - I then follow this to where the model is trained, noting the inputs passed. This typically in a
train.py
file. - I then run the model file and set a debugger, so I can’t inspect precisely what’s going on with all the variables, functions and classes.
This outside-in approach allows me to understand the global view of the repo, while localising my knowledge on the specific model being built, which is what we, as data scientists, mainly work on and care about.
Asking Experts
I believe one of the most underutilised techniques for learning and understanding new topics is simply asking people. As a social species, we derive joy from sharing our knowledge, especially in areas we are passionate about.
Take my workplace, for instance. We have experts in forecasting, optimisation, recommendation systems, deep learning, and many more areas. Whenever I have a question on any of these domains, I reach out to the person who knows most about it and simply chat to them.
Or let’s say I want to improve my coding abilities or cloud computing knowledge; I will then schedule time with a software engineer to review this and get their feedback on my code and what I can improve on.
If we are in the office, that’s even better as I can go over to them and borrow 5 minutes of their time to chat through my questions.
The best part is that it is basically free. You are learning from brilliant people with deep knowledge, but there is no charge for it, like university degrees or some online courses! You are both learning and earning, which is a goal for many people.
I find asking someone instead of searching the Internet for the answer to my question is often a lot more productive as you can even have follow-up questions. You can really dig deep and explore the subject and it’s also more fun conversing with someone!
I used to be worried about taking up people’s time or even annoying them by bombarding them questions. To avoid this you can add a session to their calendar, and they can always decline or re-schedule if they need to.
How To Truly Master Data Science
The final secret I had to come to terms with is that learning data science takes time and consistent effort.
I get messages from people asking me if they can learn data science within a few months. While you may be able to land your first data role, you definitely won’t have "learned" the whole of data science in that time to a deep level. That’s basically impossible.
This is not to discourage you, but rather to set expectations and be honest about the fact that it is genuinely a reasonably long process and that you shouldn’t expect everything to click the first time.
Due to its broad scope, we even see three-year BSc degrees in data science nowadays!
Reflecting on my own data science journey, I’ve been in this field for about four years, with three and a half years of professional experience in full time employment. Yet, I have only just scratched the surface of ‘flashy’ topics like reinforcement learning, transformers, and LLMs.
During my learning journey thus far, I’ve prioritised building a strong foundation in statistics, classical ML, and mathematical optimisation. These are the pillars that I believe every aspiring data scientist should master, as they allow you to move quicker in the future with more complex topics.
I took my time learning these things and, in most cases, wrote blog posts about them (Feynman technique in action)! I focussed on one topic at a time and didn’t get distracted by all the "new" advances being constantly released.
So the next time you feel stressed and don’t understand how backpropagation works after the first time reading it, relax and realise that this is just part of the process, let time do its thing!
As the famous entrepreneur and investor Naval Ravikant __ puts it:
It’s not 10,000 hours, it’s 10,000 iterations.
Having this mindset ultimately relieves the pressure when I am learning new topics and makes the whole thing a lot more fun!
Summary & Further Thoughts
I hope these tips and framework can help you as a practicing or aspiring data scientist. These five things work very well for me, and I am sure at least one will benefit you.
Another Thing!
I have a free newsletter, Dishing the Data, where I share weekly tips for becoming a better Data Scientist. There is no "fluff" or "clickbait," just pure actionable insights from a practicing Data Scientist.
Connect With Me!
- LinkedIn, X (Twitter), or Instagram.
- My YouTube Channel to learn technical data science and machine learning concepts!