There are points in your career where you discover a piece of software or a library or a technique that you wish you'd known about it years ago. You can see how it could have saved you hours and made your life so much easier in a previous job or project.
For me, Docker and MongoDB both fall into this category. Although I was relatively early to the party on both of those, the impact they had on my day to day work and ability to deliver rapidly changed the way I work.
Machine learning is the latest. Until relatively recently, I may have been a little naive in believing that ML was something that was exclusive to massive companies which huge budgets and specialised ML staff who have access to mega servers. This is the situation that most tech news stories related to ML portray and, while at the top end of the spectrum this may be true, it is a spectrum and the basics are not that hard to grasp and access.
To make it clear, machine learning (and all it's sub categories) is a massive subject and I'm not suggesting that in a few hours you can train your car to go driverless. I am suggesting that, as a developer, you should be aware of the kind of jobs it can and can't do, how it can benefit you (and your company) and, should you wish to implement a basic ML solution, the route you'd need to take to get there. Or, to put it another way, you should have the ability to hold a conversation around ML when your manager/director/project manager inevitably drops into the conversation "I've heard so much about machine learning - I think we should be using it".
Maybe you work in a company in which you believe ML couldn't offer any value. You don't make driverless cars and you don't run petabyte scale search engines. There's a good chance, however that if your company works with any significant amount of data, ML may be able to benefit you.
Let me throw an example to you and explain how ML could open up some other ideas.
Let's say the sales department of your e-commerce company asks for an alert when a new customer makes their first purchase with a flag suggesting whether that customer is likely to become a long term customer so that the sales team can follow up personally. All we have to go on is the existing data of a few ten thousand existing customers.
A year ago, as an experienced engineer with no ML knowledge, I'd have embarked upon looking for patterns in the existing customers, first purchases, potentially their location and their further history. I'd have looked to write a function with multiple
if statements which determined their status. Job done.
The approach for ML also starts with looking at the data. We analyse the data and clean it into a way the at our model will be able to read ("features" is the term used in ML) and the outcome ("label") of whether they become a long term customer which we will know for existing customers. We could then train a machine learning model to associate the features to the labels. With a few tens of thousands of customers, this training wouldn't be too expensive on a decent PC (probably to the contrary of the impression we may have given ML articles in the press), We can then test this model to find its accuracy. If sufficient, we are in a position that our model can predict whether new customers are likely to become long-term customers or not.
At this point we've approached the same problem in two different ways and potentially produced two workable solutions. However six months later, the sales department inform you that the flag isn't as accurate as it used to be. Something has changed in the market and so have the habits of the customers and it needs fixing. With our engineering method, we'd potentially have to restart from the beginning and rewrite our function. However, with our ML solution, we may only need to retrain our model with the new, more recent data in order to improve its performance. In time we could train our model with new data as it arrives and your model will always be up to date.
So that's easy for me to say and just give an example but I know what you're thinking....
And neither do I. I'm not a data scientist and my experience of ML doesn't go beyond working with data scientists on a daily basis and a basic ML course in Python on Udemy which I'd highly recommended if you want a basic start. What I do have however, is knowledge of the kind of problems ML can solve. This is the tool I suggest all developers can benefit from. Having this will allow you to recognise when a ML solution may be useful and potentially more efficient for you.
If I've convinced you to have a look into ML, I'd suggest this video as a good follow on which will give you some very basic code examples. Laurence does a great job of introducing ML without going into heavy mathematical formulae. He also explains the crux of ML versus "traditional programming" really well.
Ultimately, traditional programming takes in rules and data and produces answers. Machine learning takes in answers and data and produces the rules (the ML model).
This approach is particularly useful as requirements become more complex or obscure (as examined in the brief e-commerce example).
Putting all of this together, I truly believe that the developer who can have a solid conversation around machine learning because they have an understanding of what it can do, will have a significant advantage over those who don't both within most workplaces and then further in to the job market. It's a fast moving industry.
Give it a go!