1. Machine learning engineers are sophisticated programmers who develop machines and
systems that can learn and apply knowledge without specific direction. This article explores
the work machine learning engineers do and how to become one.
Career Definition of a Machine Learning Engineer
Artificial intelligence is the goal of a machine learning engineer. They are computer
programmers, but their focus goes beyond specifically programming machines to perform
specific tasks. They create programs that will enable machines to take actions without being
specifically directed to perform those tasks. An example of a system a machine learning
engineer would work on is a self-driving car.
There are a number of applications for the work that machine learning engineers do. They may
program services so that they can try to identify a specific person's interests or needs. From
customized news feeds to tailored web searches, machine learning engineers are contributing
to the daily lives of many individuals and how they use technology.
Educational
Requirements
Master's or doctoral degree
Job Skills
Computer programming skills, strong mathematical skills, knowledge
of cloud applications and computer languages, excellent
communication skills
Median Salary
(2017) *
$106,225
2. Job Outlook (2014-
2024) **
11% (computer and information research scientists)
Sources: *PayScale, **U.S. Bureau of Labor Statistics
Required Education
Most employers hiring machine learning engineers expect applicants to have a master's
or doctoral degree in a relevant discipline. Fields of study include computer science or
mathematics. Experience in computer programming is often required and employers may
expect applicants to have knowledge of specific computer programming languages, such as
C++ or Java.
Required Skills
The type of programming that machine learning engineers do is very sophisticated and
it's common for those in this field to be required to have exceptional mathematical skills in
order to perform computations and work with the algorithms involved in this type of
programming. Communication skills are also important because machine learning engineers
will need to explain their process to people who are not programming experts and some
positions also require machine learning engineers to publish articles on their work. Strong
analytical skills are needed since the work that machine learning engineers do involves
projecting outcomes and isolating issues that need to be resolved to make programs more
effective.
Career and Salary Outlook
The U.S. Bureau of Labor Statistics (BLS) does not have a separate listing for machine
learning engineers. This occupation is grouped under computer and information research
scientists, and as part of this category machine learning engineers should expect to see an 11%
rate of job growth from 2014 to 2024. PayScale reported that, as of 2017, machine learning
engineers took home a median annual salary of $106,225.
Interested in Machine Learning? You are not alone! More people are getting interested in
Machine Learning every day. In fact, you’d be hard pressed to find a field generating more
buzz these days than this one. If you are interested in learning machine learning skills to enter
this field, your moment is now.
3. That said, it’s one thing to get interested in Machine Learning, it’s another thing altogether
to actually start working in the field. This post will help you understand both the overall
mindset and the specific skills you’ll need to start working as a Machine Learning engineer.
What is a Machine Learning Engineer?
To begin, there are two very important things that you should understand if you’re
considering a career as a Machine Learning engineer. First, it’s not a “pure” academic role.
You don’t necessarily have to have a research or academic background. Second, it’s not
enough to have either software engineering or data science experience. You ideally need
both.
It’s also critical to understand the differences between a Data Analyst, Data Scientist and a
Machine Learning engineer. In simplest form, the key distinction has to do with the end goal.
As a Data Analyst, you’re analysing data in order to tell a story, and to produce actionable
insights for members of your team. The analysis is performed and presented by human
beings, to other human beings who may then go on to make business decisions based on
what’s been presented. The “audience” for your output is human. As a Machine Learning
engineer, on the other hand, your final “output” is working software (not the analyses or
visualizations that you may have to create along the way), and your “audience” for this output
often consists of other software components that run autonomously with minimal human
supervision. The intelligence is still meant to be actionable, but in the Machine Learning
model, the decisions are being made by machines and they affect how a product or service
behaves. This is why the software engineering skill set is so important to a career in Machine
Learning. A Data Scientist lives somewhere between these two worlds. They must have the
4. software engineering skills to collect, clean, and organize data to analyze, and use machine
learning to extract insights. Their communication skills are also vital to their success.
Understanding The Ecosystem
Before getting into specific skills, there is one more concept to address. Being a
Machine Learning engineer necessitates understanding the entire ecosystem that you’re
designing for.
Let’s say you’re working for a grocery chain, and the company wants to start issuing targeted
coupons based on things like the past purchase history of customers, with a goal of generating
coupons that shoppers will actually use. In a Data Analysis model, you could collect the
purchase data, do the analysis to figure out trends, and then propose strategies. The Machine
Learning approach would be to write an automated coupon generation system. But what does
it take to write that system, and have it work? You have to understand the whole ecosystem—
inventory, catalogue, pricing, purchase orders, bill generation, Point of Sale software, CRM
software, etc.
Ultimately, the process is less about understanding Machine Learning algorithms—or when
and how to apply them—and more about understanding the systemic interrelationships, and
writing working software that will successfully integrate and interface. Remember, Machine
Learning output is actually working software!
Now, let’s get into the real details of what it takes to be a Machine Learning engineer. We’re
going to break this into two primary sections: Summary of Skills, and Languages and
Libraries.
Summary of Skills
1. Computer Science Fundamentals and Programming
Computer science fundamentals important for Machine Learning engineers include
data structures (stacks, queues, multi-dimensional arrays, trees, graphs, etc.), algorithms
(searching, sorting, optimization, dynamic programming, etc.), computability and
complexity (P vs. NP, NP-complete problems, big-O notation, approximate algorithms, etc.),
and computer architecture (memory, cache, bandwidth, deadlocks, distributed processing,
etc.).
5. You must be able to apply, implement, adapt or address them (as appropriate) when
programming. Practice problems, coding competitions and hackathons are a great way to
hone your skills.
2. Probability and Statistics
A formal characterization of probability (conditional probability, Bayes rule,
likelihood, independence, etc.) and techniques derived from it (Bayes Nets, Markov Decision
Processes, Hidden Markov Models, etc.) are at the heart of many Machine Learning
algorithms; these are a means to deal with uncertainty in the real world. Closely related to
this is the field of statistics, which provides various measures (mean, median, variance, etc.),
distributions (uniform, normal, binomial, Poisson, etc.) and analysis methods (ANOVA,
hypothesis testing, etc.) that are necessary for building and validating models from observed
data. Many Machine Learning algorithms are essentially extensions of statistical modeling
procedures.
3. Data Modelling and Evaluation
Data modelling is the process of estimating the underlying structure of a given dataset,
with the goal of finding useful patterns (correlations, clusters, eigenvectors, etc.) and/or
predicting properties of previously unseen instances (classification, regression, anomaly
detection, etc.). A key part of this estimation process is continually evaluating how good a
given model is. Depending on the task at hand, you will need to choose an appropriate
accuracy/error measure (e.g. log-loss for classification, sum-of-squared-errors for regression,
etc.) and an evaluation strategy (training-testing split, sequential vs. randomized cross-
validation, etc.). Iterative learning algorithms often directly utilize resulting errors to tweak
the model (e.g. backpropagation for neural networks), so understanding these measures is
very important even for just applying standard algorithms.
4. Applying Machine Learning Algorithms and Libraries
Standard implementations of Machine Learning algorithms are widely available
through libraries/packages/APIs (e.g. scikit-learn, Theano, Spark MLlib, H2O, TensorFlow
etc.), but applying them effectively involves choosing a suitable model (decision tree, nearest
neighbor, neural net, support vector machine, ensemble of multiple models, etc.), a learning
procedure to fit the data (linear regression, gradient descent, genetic algorithms, bagging,
6. boosting, and other model-specific methods), as well as understanding how hyperparameters
affect learning. You also need to be aware of the relative advantages and disadvantages of
different approaches, and the numerous gotchas that can trip you (bias and variance,
overfitting and underfitting, missing data, data leakage, etc.). Data science and Machine
Learning challenges such as those on Kaggle are a great way to get exposed to different kinds
of problems and their nuances.
5. Software Engineering and System Design
At the end of the day, a Machine Learning engineer’s typical output or deliverable is
software. And often it is a small component that fits into a larger ecosystem of products and
services. You need to understand how these different pieces work together, communicate
with them (using library calls, REST APIs, database queries, etc.) and build appropriate
interfaces for your component that others will depend on. Careful system design may be
necessary to avoid bottlenecks and let your algorithms scale well with increasing volumes of
data. Software engineering best practices (including requirements analysis, system design,
modularity, version control, testing, documentation, etc.) are invaluable for productivity,
collaboration, quality and maintainability.
Machine Learning Skills Needed (In detail)
Machine Learning Theory
You need to understand how machine learning algorithms work, what their goals are,
and how to use them on data at scale. A Tour of the Top 10 Algorithms for Machine Learning
Newbies will take you through the basics of the most frequently used algorithms in machine
learning, from linear regression to k-means clustering.
Foundation in Computer Science Theory
In order for you to build maximally performant data pipelines, you’ll have to understand
how machine learning algorithms work and the time and space they take to process different
amounts of data. By understanding how to cut down on space and time considerations, you’ll
be able to implement machine learning pipelines that can handle petabytes of data—an essential
skill to have.
7. Data Wrangling
You need to actually learn how to handle data sets and work with them in order to
launch a machine learning career. Data wrangling is when data professionals clean up data sets
and process them through machine learning models. The process, in practice, involves a lot of
cleaning out mistaken values, validating data, and then manipulating it to a desired state so that
it can be transformed or handled elegantly by different algorithms.For practice,
the Kaggle section has plenty of data sets you can play around with, and it comes with handy
upvote features and previous projects so you can see what the most popular data sets are—and
how people have wrangled with them in the past.
Familiarity with Distributed Computing
You’ll have to become familiar with distributed computing and frameworks that help
you take advantage of data processing across either cloud computing-based servers or through
spreading data across different servers you own. In practice, running cutting-edge machine
learning algorithms on very large data sets will only be truly performant on the scale you need
to become a machine learning engineer.
Best Practices for Coding Collaboration
You’re going to need to learn how to work with multiple codebases and slice through
different teams. This is why you’ll want to review code review best practices and learn the
different methods of building intuitive access to your code and instances, from Docker
containers to Flask as an API builder.
Python and Its Libraries
Python is the foundation of most data science and data engineering frameworks. You’ll
want to master it and its applications in different libraries, from Pandas (perfect for data
wrangling) to scikit-learn (comes with efficient pre-packaged machine learning
implementation algorithms that you can often call with one line of code).
Fortunately, the Python language has very clean syntax and (aside from its use of whitespace)
is very similar to most other programming languages in terms of the essentials (making it easier
to pick up). It’s also very versatile, with libraries that help with all sorts of different functions,
and can accept many programming paradigms, from object-oriented to more functional
programming.
A good first step is to work with this free interactive learning path to machine learning in
Python. Then you can move to something like this Pandas Cookbook so that you can start
working with data in Python.
8. Git and GitHub, Docker, APIs
You’ll want to get a handle on how to use Git and GitHub efficiently in order to
collaborate across different codebases and across different models quickly with different teams.
This Git guide can serve as your refresher on this topic.
Docker containers will let you share applications with all of the dependencies packaged and
are an essential software development collaboration tool. You’ll want to get a handle on Docker
and use it to help share the software you’ve developed.
You’ll also want to learn how to build and access APIs easily: they’re a systematic set of rules
for both getting data and for letting others pull it.
Spark/Hadoop
You’ll want to train with a distributed data programming framework that will help you
handle the load of big data sets that might go into the petabytes. This Hadoop vs. Spark blog
post will help you pick which framework to work in and will offer some initial steps to tackle
both.
If you want to get started with Spark, there is a Spark implementation in Python known as
PySpark, and plenty of documentation and tutorials involving Spark, especially
with Databricks. SparkML is a very popular “large scale” machine learning framework. The
argument can be made that Spark is the future and Hadoop is the past. If you believe that, focus
on building your Spark skills.
There are plenty of Hadoop tutorials as well. This list summarizes the many out there that can
help you pick up this framework.
Machine Learning/Deep Learning Algorithms
By now, you should have a fairly good idea of how to implement machine learning and
deep learning algorithms in practice. You’ll be able to implement old school machine learning
algorithms like linear and logistic regression, random forests, and ensembles. You’ll be able to
handle new ensemble algorithms such as XGBoost and Catboost, and common deep learning
architectures including Recurrent Neural Networks, Convolutional Neural Networks, LSTM,
and YOLO (You Only Look Once).
TensorFlow
Learning the TensorFlow framework and other deep learning libraries, such as Keras,
will allow you to harness the power of neural networks and reinforcement learning.
Data Storage and Pipelines
Once you’ve mastered the tools required to ingest data at scale and then worked with it
with different machine learning approaches, you’ll want to stitch all kinds of different tasks
9. together in order to build a coherent data pipeline. Consider something like
Spotify’s Luigi framework. It helps you deal with the low-level plumbing so you can focus on
the high-level strategy of what you want your machine learning pipeline to do.
You’ll also want to have a fairly good understanding of how to operate with SQL and NoSQL
databases. This SQL tutorial will come in handy and this tutorial on interacting with JSON in
Python will help you deal with more unstructured NoSQL data.
Requirements for Being a Machine Learning Engineer
As this machine learning engineer job description from Apple shows, you’ll need to be quite
technically skilled to have a successful machine learning career. Most machine learning roles
will require the use of Python or C/C++ (though Python is often preferred). Background in the
theory behind machine learning algorithms and an understanding of how they can be efficiently
implemented in terms of both space and time is critical.
You’ll be working with different algorithms and implementing them across different codebases
and settings, so previous experience working in a software engineering role at a company that’s
achieved a large codebase and some scale is helpful.
10. The ability to understand the latest deep learning and machine learning papers and implement
their architecture is also an important part of becoming a machine learning engineer for a
cutting-edge company.
The easiest path to that desired career, though by no means the only one, is to start off
with a software engineering background and then gain the statistics and machine learning
knowledge needed to work as a machine learning engineer.
You could also be an academic who is more involved with machine learning theory and then
develop your software engineering skills (though you might be a better fit for a data scientist
rather than a data engineer role if that’s the case).
A more difficult path involves teaching yourself both the software fundamentals and the
machine learning theory. It’s doable, and there isn’t necessarily stigma associated with people
who are self-learning in an industry like this that’s on the cutting edge of computer technology.
If you feel like you need some guidance as you explore how to get a job in machine learning,
Springboard has launched the first AI/machine learning bootcamp with a job guarantee. It
comes with one-on-one mentorship and weekly phone calls with your own AI mentor, plus
career coaching to help you begin your machine learning career.
Roles Within Machine Learning
While we’ve talked specifically about the machine learning engineer role—and that is
the most common job title for someone building and deploying large-scale AI systems—you
should know that there are other roles in the machine learning domain that you can also enter
if you just want to be in the broader world of machine learning.
This includes, for example, the data scientist or the data engineer role. Glassdoor reports
that data scientists earn $140,000 a year as base pay. In practice, data scientists work often with
machine learning engineers and data engineers, defining the business logic, tuning data models,
and communicating insights from any data work to business stakeholders. Machine learning
engineers will often work with data scientists, but with a bit more focus on data models and
statistical theory, as well as communication skills, they can become them if they wish.
Data engineers are a more general category that machine learning engineers fall under: machine
learning engineers tend to focus strictly on the frameworks and capabilities of working with
big data using machine learning. Data engineers will earn about $150,000 a year as base pay.In
practice, an interview for a machine learning position will always involve some mix of machine
11. learning theory and programming as well as your usual soft skills/culture fit questions. The
more of a data engineer/machine learning engineer position you’re applying for, the more your
interview will look like a standard software engineering interview with some machine learning
questions thrown in. We sat down with two machine learning engineers, who talked about
the typical hiring process.
Here are some insights from one of those machine learning engineers, currently working at
Airbnb:
“You will have one interview which talks a lot about the algorithms and what sort of machine
learning tools you can be using and just evaluating whether you actually understand what
machine learning is. There will be an interview about your experience, where you are asked,
have you actually built machine learning systems in the past and how you built them, what
could have been done better—things like that. Apart from that… we have at least two core-
values interviews for every candidate who comes to Airbnb because for us culture is the most
important thing and we want to make sure we don’t mess it up. And depending on the person,
you might be asked to one or two programming- or algorithmic-based interviews as well. I
think what Airbnb likes to see is a lot of execution capability—that is, you’re actually able to
write code quickly and then be able to implement it and make sure it’s working.”
Machine Learning Job Roles
Jobs related to Machine Learning are growing rapidly as companies try to get the most
out of emerging technologies. The chart below depicts the relative importance of core skills
for these general types of roles, with a typical Data Analyst role for comparison.
12. Relative importance of core skills for different Machine Learning job roles
How to Get a Job In Machine Learning
If you want to get a job in machine learning and start a career in the field, you’ll need
to think about the approach to finding different roles, the interview process, and how to
integrate with your new team once you’ve been hired.
Here are some helpful resources.
Approach and Research
You’re not likely to find machine learning roles on general job boards—they tend to be
specific roles within either large Fortune 500 companies or smaller tech start-ups. The best way
to approach finding job opportunities in the space is network-based: using informational
interviews with existing machine learning engineers to learn about their team and its hiring
practices, or attending machine learning-specific events such as the O’Reilly Strata series.
If you want to search online for how to get a job in machine learning, one of the best places to
go is AngelList, which tends to have a high density of start-up and tech jobs, and which help
connect you directly to hiring managers or recruiters. If you want to work a little harder but get
higher-quality connections, hiring managers will often post on Hacker News, specifically in
13. the “Who’s Hiring” threads that are available monthly. The latter often suffers from a bunch of
non-targeted emails sent to hiring managers: if you can impress hiring managers with your
passion for the problems they’re working on and proven projects in the space, you’ll leap above
all the applicants and get a direct line to a desperate hiring professional in machine learning.
Interview Process
Once you’ve secured an interview (it may take quite a bit of prospecting, given how
specialized and network-based recruitment is), you’ll want to get prepared for it. Here’s a
Quora thread on how different hiring managers approach the interview process for machine
learning. Since it’s a broad topic and there are many different opportunities to apply machine
learning, you should expect to receive some general questions on machine learning theory (e.g.,
what is the difference between kernel and non-kernel methods?), implementation of machine
learning (a common scenario is to walk through a typical algorithm such as K-means clustering
and ask you to talk through the math and a pseudo-code implementation without a compiler),
and distributed systems (what’s commonly known as big data—how do you handle large data
sets?).
Oftentimes, you’ll be asked behavioral and background questions throughout the process as
well. Make sure you have a coherent story of where your career is, how machine learning and
the role you’re applying for fit within that story, and how your past experience with ML can
help the team now.
Integrate With Your New Team
Finally, if you’ve gotten the job, you’ll want to learn exactly what your goals are and
what your role within the team is. Given that machine learning roles tend to be software roles,
you’ll want to get up to scratch on building high-performant code that is easy to read—and
learn how to communicate with both data and software teams. This series of answers on Quora
about the day-to-day of a machine learning engineer might help in that regard.
The Future of Machine Learning
What is perhaps most compelling about Machine Learning is its seemingly limitless
applicability. There are already so many fields being impacted by Machine Learning,
including education, finance, computer science, and more. There are also virtually NO fields
to which Machine Learning doesn’t apply. In some cases, Machine Learning techniques are
in fact desperately needed. Healthcare is an obvious example. Machine Learning techniques
are already being applied to critical arenas within the Healthcare sphere, impacting
14. everything from care variation reduction efforts to medical scan analysis. David Sontag, an
assistant professor at New York University’s Courant Institute of Mathematical Sciences and
NYU’s Center for Data Science, gave a talk on Machine Learning and the Healthcare system,
in which he discussed “how machine learning has the potential to change health care across
the industry, from enabling the next-generation electronic health record to population-level
risk stratification from health insurance claims.”
The world is unquestionably changing in rapid and dramatic ways, and the demand
for Machine Learning engineers is going to keep increasing exponentially. The world’s
challenges are complex, and they will require complex systems to solve them. Machine
Learning engineers are building these systems. If this is YOUR future, then there’s no time
like the present to start mastering the skills and developing the mindset you’re going to need
to succeed.