Programmers Should Get Into Machine Learning

Last Updated on

Programmers should get involved in the field of machine learning because they are uniquely skilled to make huge contributions.

In this post you will learn that as a programmer it can be easy to overlook the skills you have and overvalue those things you don’t know. You will learn about four opportunities for programmers to start making an impact in the field of machine learning almost immediately.

Professional Development Practices

The discipline of professional software development (or software engineering if you like that term) is all about how to the design, implementation and maintenance of reliable software systems that solve problems. Your skills as a developer are valuable and you can apply them to the field of machine learning.

Here are some examples:

  • Structure: When developing software, you structure a project. For example, there is a directory for source code, one for assets, one for documentation, and if you’re using a compiled language you have a directory for binaries. Using a well defined structure for a software development project is a best practice that introduces separation and consistency that supports collaboration. Anyone on the project will know where to make contributions to the project, and when same convention is adopted across projects, anyone in the organization can quickly navigate the project.
  • Automation: In a software project, you use build systems to automate common tasks for the project. Whether you are using a Make, Ant, Rake or any similar build system, it is natural to take common development tasks and put them as targets that can be repeated a whim, and organized into hierarchies of increasing leverage.
  • Repeatability: The convention-based structure you apply to projects and the automation you achieve with build systems allow tasks in a given project to be 100% repeatable. Anyone can check out the project and build it. Anyone can follow the release process and build a binary or deploy an update to the website. Repeatability is a default when developing software systems.
  • Testability: A class has one responsibility, a function does one thing. Simplification of systems creates small modular code that can be tested. You write automated tests as a measure of quality control to demonstrate unambiguously that the code does what it was designed to do and to detect any regressions you introduce when changes are made.
  • Maintainability: The behaviours above lead to one of the most important factors of professional software development which is maintainability. A successfully completed software project will spend most of it’s life in maintenance. Development is only a small fraction of the overall life of a piece of software, maintenance is the norm. We make software maintainable by making it structure, automated, repeatable, and testable.
software development

Photo credited to xJason.Rogersx, Some rights reserved

These practices of professional software development can be brought over to the field of machine learning. They can have the most effect in the early phases of a machine learning project. Three examples include:

  • When data is being derived from the original source into a form suitable for a given learning method. This process can be made automated and repeatable and the derived data stored in a directory structure separate from the original source.
  • When different machine learning methods are being tested to see which is the most appropriate for the problem. The testing of methods can be automated so that the results are repeatable and can be repeated if (when) bugs are found in the testing protocol.
  • When a method is selected and implemented to address a complex problem. It can be designed to be tailored to the problem and implemented to be testable and well documented to ensure it meets the broader requirements of the project, including nonfunctional requirements such as acceptance criteria on the performance and accuracy of the algorithm.

Production Level Implementations

A novel machine learning method is typically proposed by a machine learning researcher or team of researchers. It is common for a novel method to be presented with a prototype or demonstration implementation of the algorithm.

A problem is that the code is written by researchers that may or may not be trained in the discipline of software development. Nevertheless, the goal of the implementation is to present a working prototype of the method.

If a business or other organization is looking to harness one of these power tools, their options are limited. They may decide to adapt and run the prototype code in their production system. It is common for research code to be released under no obvious licence or sometime a permissive open source license. The code will be written to address toy problems for demonstration purposes and the programming quality of the system may be variable, although in some cases can be only good enough to demonstrate the proof of concept.

The only real option is to reimplement the method using good software engineering practices. There is an opportunity for developers to implement production level implementations of powerful machine learning methods that are in demand. In addition to getting a job to this effect you can also develop production quality software tools, libraries and APIs that organizations could use to address their problems.

Get the Word Out

Machine learning methods are presented in the languages of research, such as dry research papers, academic presentations, monographs, lectures, and textbooks. There are power tools that are effectively hidden away from mainstream software development, even mainstream applied machine learning. This is a fact. The migration of useful methods from research to operations can take decades.

There is an opportunity for programmers that know some machine learning to find out about what methods are working and help to get the word out. You will have to learn just enough to be able to recognize these gems and have the imagination to think about where the methods could be applied in business or online, and have the ability to communicate or even implement those ideas. You don’t even need be a developer to take this on.

Put Machine Learning in Applications

As a programmer, you already know how to make applications for users. They may be applications on the web, mobile or on the desktop, or even something else more exotic. Perhaps the biggest opportunity for programmers like you is to put machine learning methods in the applications you are developing.

This is not as big and scary as you may initially believe. Remember that machine learning methods address a specific decision problem. Incorporating machine learning means identifying a complex problem in your application that can appropriately be solved by machine learning or more likely build an application around a suitable problem. It also means that you need to learn enough machine learning to make this happen, but you have already started that journey.

In this post you learned that programmers should get into machine learning because programmers are uniquely skilled to make huge contributions. Four contributions that programmers can make to the field of machine learning are:

  • Bring professional software development practices to machine learning projects.
  • Build production-level implementations of machine learning methods.
  • Get the word out for novel machine learning methods
  • Put machine learning methods in applications.

What are some software development practices that you think could make a big difference when experimenting and testing machine learning algorithms? Leave a comment.

15 Responses to Programmers Should Get Into Machine Learning

  1. Franklin Tchakounté September 7, 2015 at 7:10 pm #

    Machine Learning algorithms require higher device resources. For smartphones, I think that it is useful to just extract rules from the learning process to insert into the application, rather to insert the whole classifier code.

  2. Sofwan July 30, 2016 at 4:22 am #

    A software developer make a software to solve problems. For fixed problems we can solve them with fixed formula but for problems has many uncertainties, fixed formula can’t handle it. Machine learning can solve that.

    • Jason Brownlee July 30, 2016 at 7:09 am #

      Nice Sofwan.

      Yes, machine learning problems have no one “right answer”, just lots of candidate solutions that have to be discovered.

  3. Prof. S Kotrappa July 7, 2017 at 8:05 pm #

    Very nice article, yes in machine learning there is no single obvious solutions every time you run you get different answer!

  4. Jesús Martínez February 4, 2018 at 8:53 am #

    I think the best way to use machine learning coming from a software development background is to add it as a module or component of an application. A good instance of this is Netflix. Many things comprise the application but the recommender system is one of the modules that make it a great software product.

    Also, I think it is important to know when to use machine learning. As programmers, we tend to be very enthusiastic about new technologies and we are eager to apply them ASAP, anywhere. There are problems that at first one might think are a perfect fit for ML, but in reality, a simple heuristic would suffice.

    Where would or do you apply ML in your professional endeavors (besides this blog, of course)? I’d love to know! 🙂

    • Jason Brownlee February 5, 2018 at 7:42 am #

      Really nice point!

      I’ve used ML in the analysis of customer data for SaaS and, in more generally in the development of cyclone forecasting systems used by bench meteorologists.

  5. Siya Carla March 5, 2019 at 8:27 pm #

    Good article, and agree. Machine learning does require the use of skillful programmers to implement algorithms and all.

  6. John March 13, 2019 at 6:40 pm #

    Great article. I myself have been programming in Java for 20yrs mostly doing business applications. Recently I’ve been thinking about incorporating machine learning in our Accounting Information System solution but I still have no clue to what extent and at which part of it.

  7. Jai Bhatt June 5, 2019 at 1:40 pm #

    I feel machine learning aims at solving a particular, very specific problem rather than generalising the problem for every solution. I think it would be very beneficial for me to incorporate it into my business and programming methods.

  8. akeo June 24, 2019 at 9:04 pm #

    ML is now the current and trending topic. Everyone is working on this platform for more advancement in technology. Thanks for sharing this informative post on ML.

Leave a Reply