Software Makers Should Learn More About Machine Learning

We're thinking of software that develops software. Is machine learning of help?

Remember, machine learning aims on decision making support. Like any learning it is about understanding things better. In a machine learning project, we extract models from data and we hope that those models are understandable and computational.

But the purpose varies from analytics, over predictive modeling to control. And there's no one method that fits all. See A Master Machine Learning Algorithm?

What is the difference between doing a machine learning project and a development project?

In both, you usually deal with data. And data analysis as an exploratory approach should be the begin of anything. But machine learning experts have a different view on code than developers: developers derive programming paradigms from the problem decomposition. Machine learning experts do not think much about data-, function- or object-orieted decompositions - they're in the extracted models...

But monstrous amounts of data are produced by machines and the best way to deal with all that information is by machines.

So, people who do large scale machine learning think like software engineers of large scale, complex systems.

What about software analytics? 

Modern analytic and model-based approaches in software engineering aim on the automatic generation of software from domain models... For this task program code is data. That suggests that machine learning is applicable.

We made some experiments with defect prediction in large industrial software systems (static core analysis) and found out that fuzzy decision tree methods fit well to this purpose.

Software developers may enrich their development methodology with machine learning and apply machine learning in the software quality assurance process - creating a two-sided positive effect.