Today’s software developers are the most likely candidates to become our next generation of programmers: Machine Learning Engineers. Some organizations, such as Amazon, are undertaking the task of preparing all their software development professionals with machine learning skills.
Does this mean software development is dead? No! We expect for the foreseeable future to have ‘programmers’ developing applications, coding integrations, scripting batch processes, and delivering solutions for a host of other needs. What will change is that a number of these activities will be assisted by or rely more heavily on the use of machine and deep learning.
What is the difference between conventional programming and machine learning?
When asked ‘what is the major difference between conventional programming and machine learning’, I always answer “it’s letting go of the rules.” What I mean by that is that conventional programming’s goal is to answer a problem using a defined set of rules. Whereas machine learning attempts to construct a model for the problem by analyzing data and its outputs.
An example of conventional programming:
Think of conventional programming in this way. If I select a cell in Microsoft Excel, it will bold. If I type the number 123, then the number 123 displays. The application is predefined by rules that are a result of the engineered code. Yes, Excel can do more complex tasks. Yet, each of these procedures have been built into the application and are guided by the logic and rules set by the developer. Never will Excel display anything but 123 if you have entered those keystrokes and have not otherwise modified the input for that specific cell.
An example of machine learning:
Machine learning on the other hand is the process of teaching machines to learn and complete tasks without direct human intervention. It requires the use of an algorithm that is trained on data and then continues to learn as it processes more data and outcomes. Although there are different types of machine learning (supervised, unsupervised, reinforcement, etc.), all rely on the algorithm to process data and complete decision making without a specific set of rules. In this case, you may input 123 and the output may be ABC.
To provide an example, I saw a recent demonstration where a person input photos of their face into an algorithm. Some photos contained the full face and the other wearing a medical mask. After the algorithm processed the training set of data, it was able to correctly determine when the person was wearing a mask or not. Yet, when the person covered a portion of their face with their arm it also thought they may be wearing a mask despite never having seen such an image in the training set of data – giving you a result of ABC when you may have expected 123.
The explanation above is a bit of an oversimplification of how conventional programming and machine learning work, and how you can compare one against the other. In both cases, the engineer is solving a problem. The Software Engineer takes a more rule-based approach to create an application or environment. Whereas the Machine Learning Engineer is going to rely more heavily on data and the selected algorithm to predict how you may want to solve a problem.
How to add machine learning to your skillset:
As we rely more on technology to automate decision making and processes, there will be more jobs for both Software and Machine Learning Engineers. Many of us understand the path to become a Software Engineer, but many are still unsure which skills you may need to become a Machine Learning Engineer. Let’s look at the knowledge and skills you will want to build.
- Math – You will want to brush up your advanced math skills such as statistics and probability, linear algebra, and calculus. Like software engineering, there are many existing algorithms to choose from, so you do not have to be a math professional to build them from scratch.
- Programming – You will need at least an introductory understanding of programming languages. The most popular languages are Python and R. Each provide libraries and packages that remove some of the more intensive coding, but you will need to be comfortable with code and development environments.
- Creativity – This is as much of a skill as it is a desire in your professional career. Although you do create as a Software Engineer, you are typically focused on creating solutions that are bound by rules. With machine learning, you will want to build responsible technology while solving complicated problems.
I hope that you have enjoyed my brief overview of the primary differences between software development and machine learning. It may have cemented your decision to continue your path as a Software Engineer, or for some, it may have created enough curiosity that you will explore the steps to become a Machine Learning Engineer. In either case, keep learning!
Interested in taking your machine learning skills to the next level? Become a Certified Artificial Intelligence Practitioner.