9 months of Machine Learning and beyond
Tags: machinelearning, webdev, beginners, ai
Published: 2024-04-29 18:56:32

Hi, my name is Alex, and I'm a full-stack software engineer. Nine months ago, I decided to take a couple of machine learning courses to better understand the ongoing AI revolution, and I've become increasingly fascinated by this topic. 

I'm excited to share my journey into the world of machine learning with you. This isn't going to be a short story. I intend to write a series of posts starting with my background, explaining my learning strategy, and later reviewing the courses I've taken and will take. My reviews will briefly discuss the topics covered by the courses.

Why am I doing this? First and foremost, I do it for myself. I hope this series will document and solidify my learning path in machine learning. It will help me to better understand and remember what I've learned. Additionally, I hope it can serve as a resource for others interested in making their first steps in machine learning and AI.

### My Early Years in Tech

My university program focused mostly on C and programming micro-controllers. However, what truly captivated me were data visualization and computer graphics. Blending my childhood passion for visual art with computer science seemed like a natural progression.

That kick-started my career in graphics programming, where I developed both 2D and 3D rendering algorithms and even wrote my Bachelor thesis on Volume Rendering. Despite enjoying this field, I noticed the limited market demand for graphics programmers, especially for those not versed in C++. My tools of choice were C# with DirectX and later JavaScript with WebGL, which somewhat limited my opportunities in the more traditional C++ dominated areas.

Simultaneously, I developed a curiosity for Machine Learning and Data Science. However, observing the rapidly growing interest in this area, I decided to proceed cautiously, building my knowledge gradually while focusing on other professional avenues.

### Becoming a Full-Stack Engineer

The more robust job market compared to the niche field of computer graphics, along with the valuable opportunity to learn how to build large systems from scratch, prompted my move from graphics programming to frontend and eventually full-stack web development. This shift steered my career towards developing complex, client-facing platforms. Additionally, this change seamlessly aligned with my lifelong interest in startups.

In an effort to strengthen my computer science fundamentals, I enrolled in the [Functional Programming in Scala Specialization](https://www.coursera.org/specializations/scala). While this program was not directly related to data analysis, it provided insights into big data processing with Spark. Over time, however, as I moved away from programming in a functional style and as Scala was increasingly overshadowed by advancements in Java and Kotlin, I found fewer opportunities to apply this knowledge in production.

Understanding the crucial role of statistics in Machine Learning, I also pursued a [Data Analysis with R Specialization](https://www.coursera.org/specializations/statistics). This program was practical in nature, focusing less on theoretical mathematical concepts and more on the hands-on application of statistical methods to analyze real-world datasets. The curriculum covered foundational statistical techniques progressing to more complex topics like inferential statistics, linear regression models, and an introduction to Bayesian statistics. This approach helped me grasp how to effectively use statistical tools to extract insights and make data-driven decisions.

Although, as a full-stack web developer, I quickly realized that to truly thrive, I needed to deepen my understanding of the entire software engineering tech stack. This led me to delve into algorithms, infrastructure, cloud technologies, databases, as well as UX/UI design and software architecture. As a result, these areas became the primary focus of my self-development for many years.

### AI Industrial Revolution

I still have much to learn regarding general software engineering, especially in such wide areas as DevOps or database engineering, but recent developments in LLMs and diffusion models made me realize that I have to learn machine learning to understand what is going on in the world.

While I may not fully transition into a machine learning career, the knowledge I gain could prove invaluable, especially in a startup environment where versatility is crucial. Additionally, our software systems often interact with a messy world of fuzzy and noisy data. Understanding how to effectively manage and utilize this data is essential.

### What is Next?

The next article will feature a detailed review of the [Data Analysis with R Specialization](https://www.coursera.org/specializations/statistics), marking my initial foray into the realm of data processing. I’ll also share insights into my learning approach. 

Subsequent posts will focus on reviews of additional courses I’ve taken or I will take, exploring how my understanding of machine learning continues to evolve with new information.