I recently did a presentation on Artificial Intelligence and Machine Learning. I focused primarily on business opportunities, AI capabilities vs. Machine Learning, the notion of ML as “software 2.0”, the importance of data gathering and wrangling etc. Fairly high-level stuff; perhaps fluffy from a developer’s point of view.
Afterwards I got a question from the audience: “How can I get involved with AI and Machine Learning as a regular software developer?”
That’s a great question. Obviously, not everyone can — or should need to — dive into the hardcore forefront and start contributing to algorithm implementations. Not everyone needs to mutate into data scientists. Still, I believe every software developer should get a grasp of what the whole AI/ML genre is about. The reason being: when AI & ML is put into good use, it will likely end up as part of bigger application or system, which is mostly written by “regular software developers”, not by data scientists.
So where do you start? Here are some ideas.
Take the tourist tour
The absolutely easiest way to make your first “Hello World” AI/ML app is to start by exploring pre-trained models made available as cloud APIs. Tap into e.g. Microsoft Cognitive Services, Amazon ML Application Services, Google Cloud AI services. From a software development point of view, consuming these is no different from hooking up to other modern API services. You need zero math skills but are still able to explore some quite fascinating, narrow AI capabilities.
Of course, having APIs to call is no fun if you don’t have an application to plug the calls into. Spend a few hours ideating up a use-case related to some project you are working on. Could you add voice based conversational interactions? Recommendations based on selfies? Real-time translation of content?
Get some entry-level ML understanding
As soon as you want to go beyond consuming pre-trained models, you have to get an entry-level understanding of different algorithms and what they can be used for. Google around and read up on classification, clustering and regression. Read up on unsupervised vs. supervised learning and the concept of “training a model”. Read up on traditional algorithms and how (deep) neural networks work. There are plenty of excellent intros on YouTube that you can consume if blogs and books are too tedious. You can spend 1 day or 1 year on this topic; you need to judge yourself how deep you want to go, while continuing your life as a software developer.
Get acquainted with popular Machine Learning libraries
A lot of data scientists use R as their tool of choice for mangling data and running algorithms from various add-on packages. R isn’t that common among “regular developers”, but Python is another extremely popular language for data science. Python gives easy access to popular machine learning libraries like Scikit-learn, Keras, Theano, TensorFlow, PyLearn2, Caffe2, NLTK etc. As a software developer, you’ll learn Python quickly – if you have some spare time, this will pay off.
Alternatively, you can also start out by using libraries which can be called from your native language. E.g:
- Java: Deeplearning4J, Mlib, Weka, MOA, H2O, Encog, TensorFlow…
- C# / .NET: Accord.NET, Numl, CNTK, Encog, TensorFlow…
(In addition to those, you can of course use cloud services which allow you to train your own models without running anything locally.)
The easiest way to get started is to search for tutorials on these libraries: you’ll get examples of how the libraries are used to do ML stuff: train a model with a training data set, validate it with a separate data set, and evaluate how well it performs. Then you’re good to go and plug that into whatever application you want to build. Maybe wrap it up as a micro service. Or take the trained model and push it to a cloud service for execution. After doing this, you’ll have better odds of having a meaningful conversation with a data scientist, when it comes to building production grade applications that include ML models.
Tech-first use cases for machine learning
A lot of the AI & ML buzz is about how businesses can make more profit, or how to make life better for consumers. That’s important and nice – but again, for a software developer, there could be other opportunities as well:
Try to think of all the times when you had to write code without having super clear rules for how to detect and handle every single edge case. Maybe ML could have helped there?
Or think about all the times, when you were staring disillusioned at hundreds of thousands of log file entries, trying to see elusive patterns. Maybe ML could help finding patterns?
What about all the times you have struggled with an interface feeding your application with garbled data – or suspicious amounts of data – or no data – without anyone from Ops or Royal Department of Integration Monitoring ever noticing anything? Maybe ML could help detecting anomalies in interface traffic?
Try / catch
Give this stuff a try – either you’ll find a new passion in data science-flavored development, or, arrive at a conclusion that there are way more interesting things to learn as a software developer. But don’t dismiss this topic as fluff without trying.