How To Transition Into Machine Learning as a Software Developer
Over the last decade, machine learning (ML) has morphed from an obscure discipline studied in a few University research labs into a mainstream corporate technology that promises to do away with language barriers and give us self-driving cars.
This transformation has led to a skyrocketing demand for professionals who understand how to develop and deploy this technology in commercial products.
Opting for a career in machine learning can be a very intelligent move. Quite often, a career breakthrough is a matter of doing the right thing at the right time, and getting into machine learning now can potentially be such an opportunity for you. In this post, I will show you what you need in order to make the best of this transition.
Why Move Into Machine Learning?
Some job opportunities are about great compensation; others about employment prospects. Machine learning combines both and is fun at the same time! Let’s take a closer look at the reasons why choosing a career in machine learning is worth it.
According to Glassdoor, the average annual salary of a machine learning engineer in the United States is $127,000. If you become a recognized expert in the field, 7-figure salaries are possible. Ilya Sutskever and Ian Goodfellow, two machine learning experts at Open AI and Apple, respectively, both commanded salaries that exceeded 1 million USD per year.
Improve Your Career and Employment Prospects
Developers with a sophisticated understanding of machine learning are still quite rare. Machine learning is here to stay, though, and will likely become increasingly important in everything we do.
Many people are scared of moving into the field because they associate it with complicated math, but most applied machine learning is programming. As a software developer, you have a huge head start, and learning resources are plentiful.
If you invest the time to develop at least a basic technical understanding of machine learning models and deployment scenarios, as well as its business use cases, you are in a prime position for a technical leadership position.
It Is Fun and Rewarding
As programmers, most of us know the addictive feeling of getting in the flow. When a problem is hard enough to challenge us but not too difficult to frustrate us, we become laser-focused on the task at hand.
Machine learning entails the same programming challenges. You need to import, model, and preprocess data and feed it to a machine learning model. This often requires building complex code constructs that are very similar to what you build in traditional programming. In addition, you get to play detective and hunt down irregularities in the data.
Last but not least, you actually construct and iteratively optimize your machine learning model. Seeing how the model’s performance gradually improves in response to your tinkering is extremely gratifying, especially once you get to see the actual output.
Imagine you are training a language model, and at the end of your efforts, your computer starts speaking to you and answering your questions. It almost feels like magic—especially to people who do not have a technical background, so you get the added benefit of impressing the people around you.
What Do I Need?
When talking about entering the field of machine learning, I believe it makes sense to clearly distinguish between ML research and applied machine learning to solve business problems. Unfortunately, most information you find online does not draw this distinction. This often leads to an overemphasis on math and theory, while programming is underemphasized.
In fact, machine learning has been democratized over the past several years to the extent that developers with little more than high school math can become applied machine learning engineers.
Today, it is very unlikely that you have to program a neural network or a support vector machine from scratch. There is an abundance of packages to do this for you. For most industry jobs, the ability to write clean code and to handle data at scale is much more important than knowing how to do Eigenvalue decompositions and solving partial derivatives.
For the most part, I’ll be focusing on applied ML here, since this is probably more relevant for software developers working in industry jobs or running their own businesses. The most important aspect of moving into machine learning is to develop the necessary skills.
As a software developer, you already fulfill the most important requirement: You know how to program. The dominant programming language used for machine learning is Python, so if you do not yet know this language, you need to pick it up. Your focus should be on learning data manipulation using packages such as NumPy, Pandas, and SciPy.
The good news is that learning Python should be a breeze for anyone with previous programming experience. The most important and most difficult skill for production ML systems is the ability to cleanly structure your code and practice clear separation of responsibilities and APIs.
As a software developer, you are much more likely to have these abilities from previous experience than a mathematician or physicist who has only written code to perform experiments in an academic context.
Machine Learning Algorithms
Most contemporary use cases for machine learning in the industry revolve around helping companies make sense of their data and generating insights that help the business make more money.
While neural networks and deep learning are all the rage these days, more traditional learning algorithms such as linear regression or decision trees are often sufficient for these business use cases. Unless you are aiming to become a computer vision or natural language processing engineer, I suggest focusing on traditional machine learning first before diving into neural networks.
Become familiar with linear regression, logistic regression, support vector machines, decision trees, random forests, and gradient boosting machines. Understand in which scenario what method is most appropriate.
Commercial Machine Learning Tools
Often you can go even higher-level than tuning your own machine learning algorithms in Python, as cloud providers like AWS and Google have made a range of fully automated machine learning tools available. If you use them, all you have to do is send data to an API and retrieve the results. Interacting with APIs is probably something you have done many times as a software developer.
Become familiar with tools such as Google’s AutoML and AWS Sagemaker. These are higher-level tools than TensorFlow and PyTorch, that make it easier for developers without specialized machine learning knowledge to solve custom machine learning problems.
Google and Amazon have computational resources, as well as expertise, that put them at the forefront of democratizing machine learning. By learning these tools, you take a glimpse into the future of what applied machine learning will probably look like in the near future.
Databases and SQL
Machine learning runs on data. Being able to obtain, retrieve, and store your data in a scalable manner is one of the most essential skills for any machine learning practitioner in the industry.
As a software developer, you probably have some experience with databases. If you have a solid understanding of SQL, you are in a prime position for commercial machine learning.
In addition to traditional relational databases and SQL, becoming familiar with NoSQL data storage technologies such as MongoDB and object storage providers such as AWS S3 is definitely also a good idea.
Familiarity With at Least One Cloud Provider, Containers, and the Command Line
The command line shouldn’t be new to you if you’ve developed software before. You might also be familiar with deploying software with cloud providers such as AWS or Azure.
Machine learning models such as deep neural networks often have to be trained on a GPU because they perform lots of parallel computations. Therefore, you need to be able to access the GPU via the command line. Often, you may not have the ideal infrastructure, so you deploy your models to a GPU in the cloud for training.
Once your model is ready for production, you need to deploy it behind an API. Again, this isn’t very different from deploying traditional software in the cloud.
Usually, machine learning models are deployed as containerized software modules. Accordingly, becoming familiar with container technologies such as Docker and Kubernetes is another vital building block in your machine learning career.
What About Math?
Unless you want to go into machine learning research, a basic understanding of linear algebra and statistics with a bit of calculus is all you need. I’ve composed a series of blog posts on machine learning math that explain all the math you need to hit the ground running as a freshly baked machine learning engineer.
Machine Learning Is a New, Exciting Field
Machine learning has been democratized in recent years. To build production ML systems, programming and software engineering skills are more important than knowing complicated math. As a software developer, you are in a pole position to enter this new and exciting field.
Not only does machine learning offer great compensation and interesting prospects for your career, but it’s also fun and rewarding. Moreover, it’s quite likely you already have most of what you need to get started: The fundamentals of programming, some familiarity with databases and containers, and you’re already on your way to a fascinating new career.