TechTalks With Tom Smith: Using Machine Learning in Software Development — Keys to Success
Identify the business problem you are trying to solve and ensure ML is the appropriate solution.
Join the DZone community and get the full member experience.Join For Free
To learn about the current and future state of machine learning (ML) in software development, we gathered insights from IT professionals from 16 solution providers. We asked, "What are the most important elements of using machine learning in the SDLC?" Here's what we learned:
There are three things that fundamentally matter:
- Organizational – data silos mess up teams for ML. Typically ML teams are outfitted with data engineers, SQL pros, ML scientists – math people, R, Python, and statistics. What’s missing in these projects are SMEs who know the domain and app developers who should be the users of the ML models coming out of the project. If an ML model is not connected to an application, it’s not delivering business value.
- Identify the application. Just building a lot of models and determining their accuracy is a research project. How to use ML and what business decisions it’s going to address. If you are going to deploy ML, you better make sure business outcomes are significant. Measure the business outcome as part of the results.
- Most important is the cultural change that has to happen. It impacts the SDLC and completely throws out traditional SDLC. You have to instill a culture of experimentation. In an ML project, there is not go live, there is a stay live. You have to constantly change your models. Markets change, engineering context changes, data scientists need to operate on real-time data, create a feature factor with new ways to address problems.
The predictive signal comes from a representation of the data. Most applications require deep thinking data scientists partnered with SMEs to create features that are predictive. Need to manage workflow and deployment of models in a culture of experimentation.
It’s all about the use case and the right experience for the customer. Make sure the model is accurate and representative of the use case. Consider how to integrate the model and data engineering into the application.
- Improve test coverage.
- How long does it take to achieve that coverage? It’s critical that everyone is part of the process. If you’re a developer that can run end-to-end tests you can release faster — get to continuous delivery (CD).
That comes when everything is automated. How fast can you automate something?
Automating testing and improving test coverage. You can increase coverage by automating more than by writing test scripts.
Automation of drudgery by understanding what a developer is doing will be the first use case. This benefits anyone writing code regardless of how it’s written or operated. A product manager or program manager will analyze developer efficiency and map tasks to what developers are doing to correctly assign work. You can tailor to the source of code you write the entire SDLC.
QA is really interesting, especially in the implementation and management side. Developers hate manual testing. They have the ability to train models with ML for missing test coverage and do things like integration points. We can’t test everything. ML is great way to test what matters first.
ML should be part of the DNA for software development. AI/ML is becoming more of a core requirement. More developers need that background. Every product uses data. Make sure you are making enough investment in developing people.
ML approaches can be quite different from classical solutions regarding their treatment of data. Data is a first-class flight passenger in ML approaches, in that it is sometimes treated as more important than code.
I believe in outcomes-focused development – there are two elements to consider here – one is knowing what those outcomes are and being able to apply (or write) the right learning algorithms in order to get to those outcomes. The second is having and collecting data that allows you to both train and fine-tune the learning algorithms so you can get to the desired outcomes.
In traditional software development approaches, the programmer will use a specific language to write software code to get the desired outcome. In ML techniques, data is fed to the computer and learning algorithms are applied and iteratively fine-tuned to get to the desired outcomes. Using AI and ML in SDLC can repurpose the role of a developer — moving away from traditional programming to controlling and analyzing outcomes.
What we’re finding is that by introducing this technology and embracing this change of mindset increases developer productivity, rapidly and dramatically improves the time from first code to the release, and on to the actual deployment into production. This is an evolution rather than a revolution– but we have seen it begin to transform both the employee and customer experience, in terms of the development process and end-user outcome.
Time to Value
You need a solution to work fast and be optimized. You can use ML for a variety of tasks. Focus on tasks where you have data to improve existing processes. It’s OK to fail and use ML to detect failure like self-healing tests. You can fix several things and use statistics to improve. Even 70% accurate is good because you can always improve. It’s OK to fail and you will fail less over time. Remove duplicates from logs.
There are many opportunities for easy wins with ML. It’s more challenging when you need extreme accuracy. Use ML to eliminate dirty work. If you change the UI you save the human from looking at all the iterations of the changes on different platforms and devices. Don’t use ML when you’re trying to build a general-purpose solution rather than a specific solution. Be fast, improve existing processes, be accurate.
Historically, organizations set time-to-market as a primary objective to drive useful SDLC. Today, the key theme is time-to-value. The core objective of the SDLC is to build a product that meets a specific goal and helps you succeed with a set objective. The product must provide value for its consumers and be delivered on time with good quality, ML plays a critical role here. You can compartmentalize the SDLC in a few different segments — and ML impacts most, if not all, phases of the process. For example, ML enhances the SDLC by
- Injecting coding efficiencies: ML injects intelligent error handling and error correction capabilities into your code, optimizing the construction, as well as deployment and maintenance phases.
- Producing optimized algorithms: ML helps deploy optimized algorithms to meet the set objects during the design and the construction phases.
- Boosting deployment management: ML delivers efficient optimization of algorithms to enhance code for target deployment platform.
The most important elements of using machine learning as part of software development are surprisingly simple, but too often not done:
- Decide exactly what metric you want to measure and optimize.
- Make sure there is no simpler way to solve the problem than using machine learning.
Too often, people throw machine learning at tasks where it isn’t really necessary, or they try to optimize one metric, but then are disappointed when another metric drop. Machine learning is a tool with very particular use cases — not a cure-all.
The most important idea developers must keep in mind when working with ML within the SDLC is the elements of the traditional SDLC still apply to ML projects. Planning, analysis, design, development and implementation, testing and deployment, maintenance, and version control are all critical to successfully delivering beyond the build.
Analysts on staff make data science easy to consume. Provide starter applications for dynamic pricing, case management, anomaly detection. Once you have a model your application depends on, you need to monitor because it will change over time. Pass/fail metrics will change over time. The model has its own lifecycle. For risk management and anomaly detection, you are trying to stop fraud in real-time. Dynamic pricing tries to identify a premium quote some are accepted, and some are rejected. Clients want to give an aggressive pricing option based on real-time information.
Understand what ML will bring you. Something as simple as regression analysis is now called ML. From basic modeling regression, Monte Carlo analysis, neural nets, and deep learning. Understand where in the spectrum to start and then go deeper. You need the talent to understand the business problem and then someone with technical depth to determine the type of model you need to solve and then integrate into DevOps to implement. Know where to start any type of model to solve the problem. ML is the evolution of analytics.
Here’s who we heard from:
- Dipti Borkar, V.P. Products, Alluxio
- Adam Carmi, Co-founder & CTO, Applitools
- Dr. Oleg Sinyavskiy, Head of Research and Development, Brain Corp
- Eli Finkelshteyn, CEO & 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 & CEO, Testim.io
- Dan Rope, Director, Data Science and Michael O’Connell, Chief Analytics Officer, TIBCO
Opinions expressed by DZone contributors are their own.