Back in 2021, I began my degree in Computer Science with only a basic understanding of digital technology. At the time, I believed that software development was the sole focus of a computer science student. However, as I delved deeper into the field, I realized that computer science extends far beyond just coding. Eventually, I transitioned from being a full-stack web developer to a machine learning engineer. So, what led to this shift?
The early stage
My career journey began with an internship in web development at a research and development institution in Phnom Penh, Cambodia. This was my first exposure to the professional industry, and I was fascinated by how digital technology could be leveraged to create impactful solutions. The experience sparked my curiosity, pushing me to explore beyond traditional web development.
Then came a turning point—one day, I attended a seminar at my university on data science. That session introduced me to a whole new domain within computer science. I learned how data could be used to solve complex problems and gained insights into artificial intelligence (AI). It was then that I realized computer science isn’t just about software development; it’s about harnessing computing power to address real-world challenges efficiently. The field is vast, open-ended, and offers countless opportunities to apply problem-solving skills in meaningful ways.
The transitions
After attending the seminar on data science, I became increasingly curious about this new field. I started researching machine learning, eager to understand how it worked. However, the deeper I explored, the more overwhelmed I felt. Unlike web development, where I mostly dealt with coding and software logic, machine learning required a significant understanding of mathematics—including linear algebra, calculus, statistics, and probability.
At first, this was frustrating. Coming from a web development background, I had never needed to work with mathematical concepts beyond basic logic and algorithms. Suddenly, I was faced with equations, probability distributions, and matrix operations. It felt like stepping into an entirely new world.
Is it difficult shift from web development to engineering? – I would say “YES” but it is not mean that impossible.
Many developers transitioning from software engineering or web development into machine learning face this exact challenge. Web development is largely about writing efficient, structured code to create functional applications. Machine learning, on the other hand, is about understanding data, analyzing patterns, and applying mathematical models to make predictions or automate decision-making.
From my experience, transitioning into machine learning requires 40% programming knowledge and 60% mathematical concepts and analytical skills. The good news was that I already had a solid programming foundation, covering essential skills such as Python, data structures, and algorithms. But to truly grasp machine learning, I had to bridge the gap with mathematics.
How I Approached the Learning Curve
At this point, I faced a critical question:
Did I need to relearn all my math concepts at once?
The answer was no. Instead of overwhelming myself with textbooks on calculus or statistics, I adopted a project-based learning approach. Here’s how I tackled the transition step by step:
- Starting with Small Data Science Projects
- I picked beginner-friendly machine learning projects, such as predicting house prices or classifying handwritten digits using the MNIST dataset.
- This allowed me to apply concepts practically rather than just studying theory.
- Learning Math as Needed
- With each project, I identified the mathematical concepts behind the model I was using. For example:
- Linear regression → Requires an understanding of linear algebra and statistics.
- Neural networks → Involves calculus (derivatives, gradients) and probability.
- Clustering algorithms → Uses distance metrics and probability distributions.
- Instead of diving into all of math at once, I learned each topic just in time—when I actually needed it for a project.
- With each project, I identified the mathematical concepts behind the model I was using. For example:
- Breaking Down Machine Learning Models
- I didn’t just use pre-built libraries like
scikit-learn
orTensorFlow
without understanding them. - Instead, I tried to write my own implementation of gradient descent or simple perceptron.
- This helped me grasp the math behind the algorithms rather than treating them as black boxes.
- I didn’t just use pre-built libraries like
- Following an Incremental Learning Path
- I structured my learning by gradually moving from simple models to more complex ones:
- Linear regression → Logistic regression → SVM → Decision trees → Neural networks
- Each step built upon the previous one, reinforcing both my coding skills and mathematical understanding.
- I structured my learning by gradually moving from simple models to more complex ones:
- Leveraging Online Resources & Communities
- I used platforms like Freecodecamp, Udemy, and YouTube tutorials to break down complex topics into digestible lessons.
- Engaging in online forums (Kaggle, Stack Overflow, AI communities) helped me learn from other practitioners and troubleshoot problems.
Key Takeaways from My Transition
- Math is essential, but you don’t need to master everything before starting—learn as you go.
- Project-based learning is the most effective way to understand machine learning concepts.
- Machine learning isn’t just about coding—it’s about problem-solving, data analysis, and mathematical reasoning.
- Patience and persistence are crucial. The transition is challenging, but each small step builds towards a deeper understanding.
By following this approach, I gradually bridged the gap between web development and machine learning engineering. What once seemed like an impossible leap eventually became an exciting and rewarding journey.
Every career transition has its own pros and cons, I believed.