TechTalks With Tom Smith: How Machine Learning Has Changed Software Development

Machine learning in software development.

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, "How has machine learning changed software development?" Here's what we learned:

You may also like:  Using Machine Learning in Software Development — Keys to Success

Testing

  • The tools they are using are smarter. Test authoring, root cause analysis AI can help and save a lot of time.
  • The lowest hanging fruit for ML is reducing maintenance work but there are broader goals. With visual testing, you can expose all the outcomes of functions. It will take a fraction of the time to offer and maintain new tests, you can automate more, you can get greater coverage. You are able to test 100 times faster on multiple devices and browsers. A visual grid the test runs once, extracts other resources and uses them to render the same UI on all browsers and devices at once. By automating the SDLC, you can actually get to great speed in delivery with better quality without human intervention. This saves resources, time and people.
  • It’s happening actively right now with the advent of X-Ops all playing a major role in the lifecycle. Having the ability to manage models as services is becoming more critical. Moving more towards open systems. The testing impact is critical in the lifecycle. Suggestive AI algorithms help users be faster and more productive.
  • ML can be used effectively in SDLC around automation, testing. You can have developers write a test or write them automatically. Diagnosis is an important area where ML is used. There are scenarios you may not be able to simulate with simple tools. ML can rerun thousands of permutations. Determine how much value it will add before you do it. Test to see what level of improvement you achieve.
  • Applying ML in the SDLC enables better access to what your data can provide insights to. Particularly, ML in the SDLC allows for rapid prototyping to perform immediate testing to highlight areas of concern or possible future ineffective outcomes.

Automation

  • By implementing algorithms to self-correct code, ML is useful for significantly improving identifying and fixing bugs. In addition, ML can help improve and reduce the time required for code fixing and optimization. Finally, ML can be incredibly powerful in generating and automating testing. 
  • We in the stage of learning and experiencing ML. We’ll see it in the planning stage and during design, there will be automatic code development. In testing, they will be able to auto-generate test cases and able to predict the outcomes of feature steps. Automate deployment pipelines. Decrease defects during release and optimize the performance of the software. Use computer vision for the UI after you ideate and get the business requirements using computer vision to create the UI codes. 
  • ML has undoubtedly changed the SDLC. Take the typical construction of a software product – at the elemental level, you have an input (data input or user input), a piece of logic that operates on the input and produces an output. By combining the data input with some logic, you create the output. This is so old school now. AI and ML present a dramatic altering of this landscape. With ML-enabled technology, organizations can now employ smart SDLC techniques to create outcome-driven processes. Specify an objective, feed the train/test scenarios and data set, systems can now self-compose and build certain types of applications.  Such systems, empowered with smart agents can self-compose appropriate product modules — including anticipating variations in inputs, types of interactions and optimizing and building interfaces to cater to such needs. Such systems can auto-choreograph what needs to happen during the development lifecycle to meet that objective with a high degree of precision and accuracy. For example, we built an application where an interactor would respond to a specific type of information asks, and the system would automatically act/react and capture secondary and supplemental information in an iterative fashion. To achieve this mode of self-composting systems, we only created a knowledge base for the system, and employing AI and ML, the system built appropriate interaction interfaces, form layout, object compositions, error handling and even morphing its interaction patterns to suit the host medium. All by just leveraging a knowledge base and user actions/reactions. By using ML, versus physically creating and testing several such interaction interfaces, we saved a lot of time and labor, as well as reduced critical human errors. 
  • The SDLC used to be a cyclical, almost step-wise, function-driven process, where you run certain activities, complete them and move onto the next. Applying ML brings together the functional aspects and the data-driven aspects, and allows for more feedback loops, which in turn enables the process to be more iterative and drive toward solutions faster. As you think about the SDLC, we have the traditional stages of analysis, design, as well as implementation, testing, deployment, and maintenance. ML allows us to bring more data-driven driven decisions into each of these stages — enabling us toward the desired outcomes — more quickly and easily than ever before. This is sometimes talked about as Software 2.0 — instead of writing direct code, the machine processes the data and fine-tunes the algorithms. Applications, where this has been applied in the industry, include things like image classification or language translation.

Optimization

  • On the product management side for the definition and design especially in organizations that are agile or want to be. Train observation models based on user behavior. Use machines to remove drudgery.

Other

  • There is a class of problems in software development which do not have simple, rule-based answers because there are far too much complexity and corner cases. This is the sort of problem where in the past, engineers might have tried to lay out long lists of rules that would quickly become untenable, but ML provides a much better solution: teaching a service to predict a correct answer, and carefully measuring and designing the rest of the system around how often the service is correct.
  • We are able to inject ML learning models into even legacy applications. Take an old legacy app, migrate and power on our platform and inject ML so that it becomes part of the fabric of the application. First-gen applications were greenfield built on low-level components on Hadoop. We can now inject ML into legacy applications.
  • We’ve seen huge explosions in libraries like TensorFlow and Pytorch along with cloud computing. You need to be able to process large amounts of data. Leverage cloud compute to make accurate ML models.
  • Since data is the first-class flight passenger in ML approaches, it requires a company to adapt or even drastically change some software development practices. You have to be quite organized since software development tooling does not yet support all required functionality for such cases.
  • We see companies at different ends of the maturity cycle. The more mature are changing the organizational structure, roles, and responsibilities, how to code review, bias, ethics, and fairness, the onus is on the developer to understand data more than in the past.

Here’s who we heard from: