As a person who is considering starting out in the field of Machine Learning, the choices are numerous but often unclear, especially during early career. If you already have a degree in either Data Science or Machine Learning and there are times you feel like your degree is not sufficient by itself to do well at your job as an MLE, it is highly probable it is true.
The problem isn’t that this is a niche field; although it definitely started out that way. The problem, in fact, is that in today’s machine learning engineering world, it’s actually a problem of plenty and a problem of nuance - there are plenty of AI/ML/Data Science roles interchangeably defined in the corporate world.
Significant overlaps exist among these roles in a few places and often there are no clear demarcations about the scope of the role. This basically means there’s no standard way to define a Data Scientist / Machine Learning Engineer role as one would define, say, a Software Engineer.
What makes it even more complicated is the undefined expectation of how much of the role is that of performing research v. writing product-level software. Every company doing AI/ML defines the role differently based on:
- its size (number of employees),
- its products (number of products and their scale)
- the amount of data it works with.
The more data-driven a company and its products, the more nuanced and well-specified its definition of a machine learning role tends to be, else you’re likely wearing multiple hats - that of a ML engineer and that of a Data scientist and more often than not, that of a Software engineer too.
So, assuming one is an aspiring (or is a relatively early career) Machine Learning Engineer interested in rising up the corporate ranks, where does one start and how does one develop a framework for career navigation?
Before identifying the expectations of an MLE, identify which stage of career you are in: novice, junior, senior or seasoned.
Seasoned would be equivalent to expert but I like seasoned better since, in my opinion, it reflects the depth of experience dealing with relevant problems rather than focusing on depth of intellect which is largely subject to one’s investment in constant learning.To prevent confusion about what these stages of career mean, typically these are the heuristics:
- First 3 years of your career after undergrad (or 1-2 years of your career after a higher degree) is considered a novice.
- Junior is up to 5 years into your career.
- A lot of people transition into a senior role as an MLE after 5-7 years, and
- A few transition into a seasoned (i.e expert-level) role after 7-8 years
Note that this is a template with heuristics I’ve created based on my observations, experience and conversations with peers. If you are a year or two within the margins for each stage specified in this template, you will be just fine; focus on what skills you have developed or are developing in the role rather than the number of years as that’s more important for proving growth and readiness for growth.
At each stage of your career as an MLE, there are certain expectations to gauge recent growth and readiness for further growth. Each stage has its own requirements and skill expectations that build on top of the previous stage, i.e it’s cumulative.
Before we get to defining the expectations and use that for planning next steps towards career growth, below are some general guidelines to consider and internalize:
Career does not progress linearly
You may decide to start with a role at a small company, later shift to a big company, and then decide to go back to a small company or stick with only big companies. With each decision, what one learns and experiences one accumulates is different and there’s no linear growth of scope, learnings etc.
Knowing this relieves some pressure of what’s the right step to take - there’s no right. Instead, you may do well by focusing on “what skills do I need or want next” and optimize for that.
Establish a baseline for your skills at any stage of your MLE career. For this, I have two strong tips that seem to work well:
- Use websites like workera.ai to establish a baseline for your ML skill sets. This is helpful to draw your depth vs breadth skill sets chart as well.
- Look at job descriptions of companies that seem interesting to you, read their preferred and minimum requirements for the job. Then talk to people in similar jobs to get an understanding of their day-to-day.
What happens when you are in a start-up vs a big-tech company looking at a MLE role?
- It depends on the nature and growth stage of the startup
- It depends on the team you are a part of at the big-tech, as well as the number of folks working on MLE.
Refer to The Pragmatic Engineer Newsletter to get an understanding of how career growth differs in general. For MLE specifically, it means how much you could focus on performing your own research as opposed to writing tools to facilitate researchers will differ. At Big-Tech companies like Google or Meta, you will work on more mature tools and systems and would focus more on maintaining models than developing them. You will have fewer opportunities to wear multiple hats and you likely will have narrower scope, meaning there’s room to grow deeper in that well-defined and nuanced role, but not enough opportunity to grow horizontally (i.e. focus will be on depth rather than breadth).
With that context, let’s look at the expectations and corresponding actions to take for Applied ML specifically. By applied, I want to indicate that the focus is on developing products and not doing only research. Applied ML these days is done in settings like a funded research labs, product-oriented teams in corporate companies and/or startups having a mix of researchers and developers. My advice and tips below are mostly helpful for navigating small ML teams in Big-Tech or Applied ML research labs or high-growth ML startups.
As a novice
- Applied ML is different from ML courses (regardless of MOOC or college coursework): data is not clean and prepared and the objective is different than beating benchmark results; it’s to develop models and systems around a product with messy data that one has to obtain themselves.
- As an MLE in a research lab vs a product-oriented company: Modelling (i.e. developing newer architectures and experimenting with them) is prioritized last as an MLE at a product-oriented ML company, first come systems. In research labs, one is typically focused on finding the right modelling approach and is therefore spending a lot of time in a small team proving ML hypotheses.
- Modelling heavy roles are typically preserved for researchers (often with a PhD, or at least a Master’s degree). Alternatively, ML systems, and functional ML pipelines are more important in a product-oriented company than developing custom models and therefore, for MLEs: that’s why there are often teams like ML Platform, ML infrastructure, MLOps in companies that are actively using ML to develop products. They manage the whole product lifecycle themselves. Therefore, as a novice, you are expected to know the basics of Machine Learning here: which architectures are right for the product you are working with, what are loss functions, how to interpret loss curves, how to use an already available open-source model to solve the problem at hand.
- Take a MOOC or coursework so you are familiar with the basics of ML before starting your job.
- For a product-oriented company that’s already found customer-market fit, the best foot forward to set yourself up for success is to be a good SWE first; ML is seeping into fundamentally how we design software systems so unless you are a researcher working for a lab, your best bet to succeed as an ML Systems Engineer in the long-term is to learn Software Engineering fundamentals and practice integrating them with your modeling code. Be good with fundamentals like algorithms and data structures which have always been essential skill sets for a traditional SWE role.
- For MLE, the additional skill sets required to that of a traditional software engineer are fundamentals of data science and data engineering. Know your statistics, and know how to make sense of data and transform it.
- Practice with challenges on Kaggle and participate in a few hackathons with more experienced folks. Kaggle has prepared datasets in advance often, hackathons will prepare you to work with unprepared datasets. If you are interested in more research than product, focus on coming up with a problem statement where you think ML is applicable and prototype a solution for it using available open-source models. These actions typically take a month or two of time commitment.
- Coding bootcamps or MOOCs for Data Structures and Algorithms.
- University coursework web pages that often list lectures, slides, syllabi and assignments with homework solutions.
As a junior
- Productize the skill sets developed during your work experience as a novice:Develop tools that can be used for ML development and deployment. These are tools that can be used by others and not just yourself.
- At this point, you’re beginning to understand scale and automation.
- Write basic automation scripts, for example, model training, data preparation, model artifacts management, model evaluation and preparation of model performance reports, etc.
- You don’t have to know everything, however, start to draw your Depth vs Breadth skill sets chart. This lets you identify:
- What areas do you want to get deeper knowledge in? Areas for MLE are typically in Data, Models, Systems, Ops
- What areas would you like to expand your skill sets to? Skills for above areas are around Data Engineering, Model training and evaluation (error analysis), Object Oriented Programming for ML Systems, MLOps which is to work with data and not just software.
- https://madewithml.com/ (Ops, data-engineering, ML foundations)
- https://refactoring.guru/ (Software and Systems focusing on Object Oriented Programming and design patterns)
As a senior
- Thinking in systems, and thinking in abstract are important and need constant learning and iteration.
- Your people skills and other non-technical skills need to get better with every role level here on out. You are expected to communicate and collaborate with the more junior engineers as well as take on responsibilities of planning a project at a team level.
- You are independently finishing a project that could span multiple sprints or quarters.
- You are beginning to understand how your work ties into business expectations and metrics so you try to maximize your opportunities such that they align with them.
- Get to know Software Architecture patterns really well, so you can build and scale software systems with a ML backend or product at their core.
- Invest in resources to learn the latest happenings in your fields of interest and/or your domain within the ML industry and the direction in which technologies are moving.
- Take workshops that encourage you to learn more about leadership aspects - communication, collaboration, leadership etc.
- Software Architecture and ML systems: read books like Building Intelligent Systems, Designing data-intensive applications, Designing Machine Learning Systems
- Contribute to open-source: look at open-source codebases for ML and contribute to either workflows or models, for example, FairSeq
- Do paper reviews: Useful to get a pulse on the latest trending developments in your field. For example, I review papers for ACL rolling review since my domain within Applied ML is Natural Language Understanding currently.
As a seasoned MLE
- This stage typically looks like levels with “Staff” in title or higher.
- Primarily you will be judged on your ability to influence strategic directions the product needs to take, design technical directives for those, and the impact of those calls you make, i.e. whether those calls tend to be right more often than not.
- At this point, you’re frequently collaborating with other teams even to develop features that are multi-quarters in scope, guiding and mentoring other team members more often, and enabling them to become better at designing for your products.
- Learn and practice prioritization; balance engineering throughput in the short-term vs planning for product features.
- Have 1:1s with team members to discuss work, ideas and unblock their work if necessary. For coding, specifically, set up pair-programming sessions when needed.
- Proactively look for product problems and work with other team leads or managers to design a high-level solution / technical direction for your team to deliver on.
- Actively keep up to date with ML developments but don’t be bogged down in noise; pick two or three areas and work with those.
- Big-Tech ML Blogs to learn about how they’re designing their ML systems and solutions
I hope this expectations and actions framework combined with the list of a few resources I peruse often gives some actionable guidelines on navigating your career growth. Note that one could pursue resources mentioned for any level at any time and is not necessary to do that only when that level has already been reached. Best of luck!