Executive Insights on Machine Learning in Software Development
To learn about the current and future state of machine learning (ML) in software development, I gathered insights from IT professionals from 16 solution providers.
You may also like: Machine Learning in Software Development — Techniques and Tools
Here’s who I heard from:
- Dipti Borkar, V.P. Products, Alluxio
- Adam Carmi, Co-founder and CTO, Applitools
- Dr. Oleg Sinyavskiy, Head of Research and Development, Brain Corp
- Eli Finkelshteyn, CEO and Co-founder, Constructor.io
- Senthil Kumar, VP of Software Engineering, FogHorn
- Ivaylo Bahtchevanov, Head of Data Science, ForgeRock
- John Seaton, Director of Data Science, Functionize
- Irina Farooq, Chief Product Officer, Kinetica
- Elif Tutuk, AVP Research, Qlik
- Shivani Govil, EVP Emerging Tech and Ecosystem, Sage
- Patrick Hubbard, Head Geek, SolarWinds
- Monte Zweben, CEO, Splice Machine
- Zach Bannor, Associate Consultant, SPR
- David Andrzejewski, Director of Engineering, Sumo Logic
- Oren Rubin, Founder and CEO, Testim.io
- Dan Rope, Director, Data Science and Michael O’Connell, Chief Analytics Officer, TIBCO
And, here’s what I learned:
The most important element of using ML to develop software is to identify the business problem you are trying to solve and ensuring ML is the appropriate solution. It’s important to consider how ML can impact testing, automation, the importance of data, and the ability to improve time-to-value.
Understand what ML will bring you. You need the talent to define and understand how to solve the business problem, then someone with the technical depth to determine the type of model you need to solve the problems, then integrate the model into DevOps so it can be implemented. Just doing a lot of models and determining their accuracy is a research project. Know what business decisions ML is going to address. If you are going to spend the time and money to deploy ML, you need to make sure the business outcomes are significant.
Automate deployment pipelines. Decrease defects during release and optimize software performance. Automate testing and improve test coverage. Use ML to detect failures and implement self-healing tests. Automate drudgery by understanding what repetitive activities the developer is doing. This benefits anyone writing code regardless of how it’s written or operated.
The key theme with ML is time-to-value. The product must provide value to consumers and it must be delivered on time with good quality. ML injects intelligent error handling, produces optimized algorithms and improves deployment management consequently improving developer productivity, and improving the time from the first code to release.
ML has improved testing, automation, and the quality of software developed. Automated test authoring, root cause analysis, greater coverage, and the ability to test on multiple devices and browsers has led to 100X better testing. Visual testing enables the exposure of all the outcomes of functions. It takes a fraction of the time to offer and maintain new tests.
By implementing algorithms to self-correct code, ML significantly improves the identification and fixing of bugs, as well as improving and reducing the time required to fix and optimize code. Organizations can employ smart software development techniques to create outcome-driven processes. Such systems can auto-choreograph what needs to happen during the SDLC to meet objectives with a high degree of precision and accuracy.
ML tools and techniques most effective for software development involve the ability to version-control ML models, automate testing, and provide better feedback. Given the number of models you will be developing and testing, you need an ML data platform management system to track models with parameters and metrics.
Modern test automation tools enable self-healing tests, automated tests, automated crawlers that find bugs, and logging systems that find anomalies for security alerts. Tools simplify infrastructure and data engineering for developers.
With closed-loop functionality, smart agents can auto-detect and trigger re-learning and re-training processes to improve the performance and accuracy of models automatically. This leads to greater productivity, efficiency, and cost savings.
There are as many use cases for ML in software development as people that provided insights. These include anomaly detection, bug fix, building monitoring, cash flow projection, data extraction, dynamic pricing, eye tracking, and image recognition, just to name a few. Likewise, there is a diversity of industries using ML in software including automotive, financial services, insurance, logistics, professional services, and retail.
The most common issues using ML in software development involve data, transparency of the model, and skills. The most common issue Is poor data quality, having the right data, being able to access the data in a timely manner, and the time required to prepare the data. It typically takes a Fortune 500 company one month to get a data set to a data scientist. This is inefficient and hurts innovation.
Models tend to be a black box and not very transparent. It’s difficult to make definitive statements on how well a model is going to perform in new environments.
When building software with ML, companies need to realize it takes manpower with a specific skill set, it takes time to train people and the model, and retaining data scientists is challenging.
Similar to issues, challenges revolve around data, bias, and skills. Data is not specific to software. It needs to be clean and governed to generate trusted insights. There are concerns around getting the right data to eliminate bias, taking organizational values into account. There are inherent biases in training set data. The introduction of unintended bias into algorithms can skew outcomes. There is a need for trained and certified humans to train systems to pick the right algorithms with the right kind of gating measures.
The future is bright for the use of ML to develop higher-quality software faster. We will see a lot of opportunities to build automated systems that analyze and act on machine data to improve security, performance, and reliability of economically critical software services. There will be continued automation of bug fixes, testing, deployment, and code optimization. ML will continue to identify more tests that can be automated.
You will be able to deliver more, faster, with more quality and less human involvement by solving and automating small tasks done on a day-to-day basis to make intelligent decisions. The opportunity really lies in humans and machines working together intelligently enabling developers to build new skills and freeing them to focus on what they are good at while machines deal with the mundane. The key for developers is to execute the fundamentals of software development, understand how ML differs from code and application development, and always know the business problem to be solved. ML does not negate the need to adhere to traditional software design and development protocols. Maintain conscientious, diligent, and thoughtful software planning, design, development, and version control.
ML is the opposite of writing code. Models are constantly evolving based on training and data. Unlike code, you do not “set and forget” models. Understand ML models and their lack of predictability. Develop a partnership with data scientists and become sufficiently comfortable with data to be able to understand what apps are doing with models.
Developers and data scientists need to understand the business problem to be solved. Over time, data scientists will become developers as they become more focused on scripting. Roles are getting merged as statisticians learn Python and begin learning frameworks.
Figure out the guardrails to ensure you are getting to the right outcomes, ensure machine knowledge is transferable, build inclusivity into the outcomes, focus on optimization throughout the process, and know that feedback — collecting, interpreting, and incorporating it back into the data science is where you will find real success.