Note: A version of this post was published to Tom’s Tech Take II
As the fall season of tech conferences starts to wind down, something is quite clear – machine learning (ML) is going to be everywhere. Box is putting ML in content management, Microsoft in office and CRM, and Oracle is infusing it into, well, everything. While not a great leap forward on the order of the Internet, smartphones, or PCs, the inclusion of ML technology into so many applications will make a lot of mundane tasks easier. This trend promises to be a boon for developers. The strength of machining learning is finding and exploiting patterns and anomalies. What could be more useful to developers?
Here are some examples:
• Coding – The most obvious application of machine learning is in the coding of applications itself. Coding is based on patterns that are known to work (design patterns, best practices, etc.) and automating them is always going to be helpful. Automating the creation of new code, however, will have only incremental value at best. Modern IDE’s have a code completion library, API lookups, and automated code generation already. In other words, there is already plenty of features that help a developer to automate the more tedious and inefficient parts of the job. With the proliferation of APIs, SDKs, and code libraries in use, having more intelligent search is a useful application of ML. With machine learning, the IDE may be able to anticipate which APIs and libraries that a developer needs from the context of the code and suggest them.
• Debugging – Where ML will probably help the most will be in debugging. Debugging code is the hardest part of software development. Often, debugging feels like trying to find the needle in the haystack. It’s even harder to debug someone else’s code and this is where ML will come in handy. Most developers have certain patterns to the mistakes they make. It’s human nature, like always drifting to the right when walking in the woods. ML would help to find individual programmer’s patterns and styles and be able to look for instances where a mistake is being generated. In addition, there are distinct patterns in good code and the ability to discover anomalies in those patterns would help to identify bugs quickly.
• Testing – Another area where machine learning can help developers with managing test data. Intelligent creation of test environments, environments that mirror real-world patterns, can be derived by analyzing production applications and developing test data sets. Test data created this way could match the range of situations an application typically might encounter without using actual extracted data. Using machine learning to create test data would give developers the kind of test data they need without having to deidentify real data or risk violating customer privacy.
• Project Management – Large transformation projects pose considerable problems for project management. With teams spread out over distances, working on many parts of the project simultaneously, it can be difficult to coordinate resources and personnel to maintain development efficiency. Just getting a picture of the state of a large-scale project requires a number of people reporting on progress in addition to metrics gathered automatically by tracking systems. This can be highly inefficient. Much is left to the interpretation of generated data and subjective assessments of progress. Simple metrics, such as the burn-down rate, are interpreted in the context of individual manager’s goals and subject to bias. Development managers and project managers all have psychological factors that affect the assessment of a project and can delay acting on warning signs. Machine learning, on the other hand, can be used to analyze patterns in the development data over several parts of a project or over many projects to discern anomalies and warning signs. With this knowledge project managers will be able to manage dependencies, see the unhealthy signs of failure without bias, and gain assistance when rebalancing resources and addressing problems.
IT managers are still more interested in leveraging machine learning to enhance the product of their labors, not the process. In time, developers and project managers will see the value in employing machine learning to help manage large projects, especially when spread over the globe. The gains in efficiency and early warning system alone are worth the effort.