How He Went From Business Analyst to ML Engineer at Google
Last Updated on June 4, 2024 by Editorial Team
Author(s): Boris Meinardus
Originally published on Towards AI.
Can I transition from a non-technical role such as a business analyst to an ML engineering role without a Computer Science undergraduate degree?
The answer is, yes. But only if you know how!
For this blog post, I interviewed Max Buckley, a senior ML engineer at Google, and asked him how he did it.
Max joined Google as a business analyst with a business undergraduate degree over ten years ago and has served on various teams until he later managed to transition to a software engineering role. For the past two years, he finally got to work as an βML engineerβ (MLE) on both classical ML systems and more recently on applications involving large language models (LLMs). The quotation marks here are because MLEs are formally titled Software Engineers (SWE). There is no official role called βML Engineerβ!
Max is amazing and loves to help others by actively sharing his experiences and relevant resources for learning ML. So, if you want to learn more about and from him, I highly recommend following him on LinkedIn and checking out his Medium! (Heβs cooking up some cool posts!)
So, letβs get started!
Here are 7 questions and his answers on how he managed to go from being a business analyst to an ML engineer at Google!
Enjoy!
Disclaimer: The views and opinions expressed in this interview are solely Maxβs own and no not reflect the official policy or position of Google or any of its affiliates.
How did you discover ML?
Odd to think of it now, but way back in 2013, the term βmachine learningβ (ML) was not super widely recognized outside academic circles.
I first encountered ML and its associated terminology early that year while taking a Coursera course titled βData Analysis.β At that time, terms like βanalytics,β βbig data,β and βdata miningβ were far more prevalent and popular.
On a high level, what did you go through to get to where you are now?
During my undergraduate business degree, MOOCs (Massively Online Open Courseware) were established, Coursera foremost among them.
I used MOOCs to explore potential future study and career directions. Initially, I explored finance, but I quickly shifted my focus to statistics and eventually converged to data science, where I have since remained.
Through this sequence of events, I began to learn data science, statistics, and R programming. Interestingly this mix of skills drew the eye of recruiters at Google and I managed to secure a business associate internship for the summer of 2013.
By mid-2013, I was pretty confident about the career direction I wanted to pursue: I wanted to become a data scientist.
I began actively searching for information online, examining job listings, and exploring various data science websites to understand the necessary skills and expertise required for the role.
Note to readers: This is back before the term βdata scientistβ had split into the range of jobs we see today that I (Boris) tried to describe in my recent article and video.
Early in my own career research, I came across the data science Venn diagram (above), and I embedded it in my own personal career goals document where I also listed the things I needed to learn to achieve my goal of becoming a data scientist.
From my research at the time, the biggest skill gaps I knew I had to fill to work as a data scientist was to acquire:
- A quantitative postgraduate degree
- Solid programming skills
The βquantitative postgraduate degreeβ requires three steps: get accepted, enroll, and complete the degree.
Turns out that even getting admitted for a βquantitative postgraduate degreeβ is a problem when you donβt have a βquantitative undergraduate degreeβ β as I didnβt.
Despite my professional experience and self-directed learning in the relevant fields, I was rejected from the masterβs program I initially applied for. This setback led me to spend an additional year in another program to enhance my academic credentials.
The criteria for βsolid programming skillsβ were less clearly defined, which led me to set my own benchmarks.
I decided that becoming a software engineer would not only serve as a good measure of my programming abilities but also provide an avenue to further develop said skills.
My self-directed road to becoming a software engineer involved reading a lot of books and taking many MOOCs. I also spent a lot of my free time building applications to further develop my skills and expertise.
To further accelerate my progress towards this software engineering goal, I actively sought out relevant opportunities at work β seeking out coding projects and sequentially joining teams that more closely aligned with my personal developmental goals. A pivotal element in my personal growth was the guidance I received from several excellent mentors, who significantly deepened my understanding of programming and software engineering.
During my first eight years at Google (2013 to 2021), I was not majorly involved in ML projects.
In earlier years, I was part of several analyst teams (2013 to 2016) where I honed my SQL and R/Python skills for data analysis.
Subsequently, I transitioned to various engineering teams (2016 to 2021), focusing on automation, tooling, and infrastructure to enhance my software engineering capabilities. Throughout this period, I actively pursued self-directed learning in ML, engaging in MOOCs, part-time studies, and attending conferences among other activities, to continually advance my expertise in this rapidly evolving field.
What were the most significant theoretical and practical challenges you encountered while learning ML and how did you overcome them?
Being primarily self-directed in my educational approach, one of the major challenges Iβve encountered is developing a well-structured syllabus.
Occasionally, I would pick up a new book or start a new Coursera course only to flunk out early due to gaps in my skills or background knowledge.
Unlike when pursuing a structured degree program, which typically progresses from beginner to advanced levels and presents problems appropriate to the studentβs current abilities, a self-directed path lacks this guided escalation. This often led me to encounter materials and challenges that were prematurely complex.
In the early stages of my learning adventure, I frequently engaged with topics that were far beyond my current level, resulting in numerous missteps and dead ends. Over time, I learned to better gauge the sequencing of content, which significantly smoothed my learning process.
What were the most important skills you learned to get to where you are today?
Not sure exactly what kind of answer would be expected here, but I think the answer I would give is meta-skills.
I donβt think learning a given programming language or ML framework is nearly as important as βlearning how to learnβ. Learning how to approach a new topic or area and start exploring, finding interesting leads, dead ends, and slowly creating order from the chaos. If you can do that and have done that in the past, you can probably do it again in the future.
In terms of whatβs important, itβs crucial to remain curious, embrace the possibility of failure, and avoid being overly critical of yourself. Striving for perfection or expecting things to be easy can hinder progress.
Above all, persistence is the key to mastering new skills.
What were the most important resources you used to learn ML?
Coursera
Coursera was my biggest resource in the early years. I discovered ML through Coursera and learned a lot of the fundamentals there. Some of the Coursera courses I have done are no longer relevant, they have been replaced or removed but some shout-outs would be:
The Johns Hopkins Data Science series, taught by Roger Peng and Jeff Leak first introduced me to R programming and ML.
Andrew Ng deserves special credit for founding the platform and his original ML MOOC, and later specialization on deep learning.
Geoffrey Hintonβs Neural Networks course was a particular gem, though itβs now relegated to YouTube, itβs still very much worth checking out.
Kaggle
Kaggle was an extremely valuable resource, though in hindsight, I donβt think I made quite enough use of it. I wish I had done more competitions and spent more time on the forums, absorbing all the wisdom shared there.
Books
Books provided a lot of additional context. Again, some of these will have aged and may no longer be relevant, but there were several very accessible OβReilly books that I learned a lot from.
The first edition of Hands-On Machine Learning with Scikit-Learn & TensorFlow back in 2017 was super useful in that it summarized many of the important neural network techniques at the time.
Wes McKinneyβs (the creator of Pandas) book on Pandas was similarly very helpful for me in moving from R to Python and Pandas.
In more recent years I have read a few books about Kaggle competitions which contained a lot of practical techniques for improving ML systems (The Kaggle Book is excellent).
Formal studies
In parallel to my online and self-directed learning, I was also taking formal part-time university courses. I did a postgrad in statistics which gave me a year to work on experimental design and regression models. Later I did an MSc in Business Analytics which allowed me to take a range of relevant classes and for my thesis, I got to use neural networks with natural language processing which taught me a lot.
Friends
Having friends on the same learning journey also helps. I was fortunate to make two friends early on who were also very enthusiastic about ML: Ivan SlijepΔeviΔ and Francisco Passos. Along with myself, we formed a small group of ML enthusiasts who shared resources through WhatsApp, took Coursera courses together, critiqued each otherβs ideas and projects, and collaborated on Kaggle competitions and research papers. They were an incredible resource, and I am very lucky to have them both to learn from.
Experimentation
Learning by doing is one of the best techniques.
Implementing things I read about, messing with them, and seeing what happens really helps.
I think a lot of ML intuition can be developed by trying things, standing up a Colab, and implementing a model you are curious about, and seeing how it changes as you modify it. I remember getting a lot of intuition about autoencoders and model ensembling by playing with Colabs.
How was the MLE interview and what did it involve?
As I mentioned earlier, the typical path to become what you would refer to as a Machine Learning Engineer at Google starts with becoming a Software Engineer. This SWE route involves learning fundamental computer science and navigating the well-known βdata structures and algorithmsβ interviews.
In these interviews, the candidate is presented with a problem and is given 45 minutes to extract the core problem, identify the appropriate data structure or algorithm, and then implement a solution. Historically, this implementation was performed on a whiteboard. However, in recent years, the process has shifted to a shared coding environment, where candidates write code in their preferred programming language.
These interviews are challenging, particularly if you are not accustomed to them. Each time Iβve faced these interviews, Iβve dedicated significant time to preparation, and I would still allocate a few weeks to revise if I were to undergo the process again in the future.
However, there is a structure to these assessments, and consistent practice can lead to mastery. If you commit the necessary time and effort to understand and practice the required skills, you will see improvement. Engaging regularly with practice problems, leveraging online platforms that simulate interview scenarios, and reviewing key concepts in data structures and algorithms are all successful strategies.
How did you prepare for the interview?
I spent several months revising the algorithm and data structure basics through MOOCs and reading the books I listed here. I also did several mock interviews with friends as well as many, many Leetcodes.
For others who wish to prep for these βdata structure and algorithmβ type interviews, I am a big fan of Robert Sedgewickβs book and MOOCs:
- book
- https://www.coursera.org/learn/algorithms-part1
- https://www.coursera.org/learn/algorithms-part2
I find Sedgewickβs book more accessible than the more famous Cormen et. al, though it covers a narrower range of algorithms. It is more accessible to beginners. Has less of a focus on math and more on programming and visual explanations.
It is also a very good idea to pick up at least one book specific to the question and answer formats like Gayle Laakmann McDowellβs excellent βCracking the Coding Interviewβ and of course, practice on Leetcode.
In addition to the above resources I would highly recommend practicing with the actual format, i.e. have a friend ask you a question and have you go through the whole process together. Your friend does not need to be a deep expert in data structures and algorithms, provided they can program and have some understanding of data structures and algorithms you can bootstrap each other.
Not so much related to the interview specifically but some other books that helped shape my understanding of the field and craft of software engineering are:
- The Mythical Man Month: by Frederick Brooks
- The Pragmatic Programmer: by David Thomas and Andrew Hunt
- Programming Pearls: by Jon Bentley
- Code: by Charles Petzold
- Design Patterns: by Erich Gamma (a.k.a. Gang of Four)
If you had to pick one thing, what made you stand out so that you got invited to the interview?
Depends on the interview we are talking about:
My internship back in 2013:
I think it was the fact that even though I was a business student and applying for the business internship, I had a very strong suite of self-taught technical skills. I also had a previous internship in another company which is very helpful.
Transferring to engineering and moving to different engineering teams in 2016 and again in 2018:
This was enabled by my body of historic work, but still required me to do the famous βdata structures and algorithmsβ interviews explained above.
Transferring to my first ML team in 2022:
Again I think it was the combination of my years of software engineering experience coupled with all my different ML side projects, multiple MSc thesisβ, many MOOCs, statistical work, etc.
I (Boris) asked Max many more questions about what he does as an MLE at Google and how life as such is. But those are for the next post, so stay on the lookout for that one and if you donβt want to miss it, feel free to follow me and, of course, give Max a follow as well if you want to learn more from him π
Thanks for reading. Ba-bye! 👋
Join thousands of data leaders on the AI newsletter. Join over 80,000 subscribers and keep up to date with the latest developments in AI. From research to projects and ideas. If you are building an AI startup, an AI-related product, or a service, we invite you to consider becoming aΒ sponsor.
Published via Towards AI