{{announcement.body}}
{{announcement.title}}

AI: #futureofcoding

DZone 's Guide to

AI: #futureofcoding

AI-assisted flow development provides AI suggestions with three options that are 90% of what is next based on more than 12 million code patterns.

· AI Zone ·
Free Resource

Thanks to António Alegria, Head of AI at OutSystems for taking me through how OutSystems is using AI to improve the quality and speed of software development. António also heads up OutSystems' AI Center of Excellence — Project Turing.

António began his presentation explaining that tools were key to humanity’s progress and that software became the ultimate tool to drive great achievements.

The tools to create software have evolved; however, there is still room to grow — program complexity is growing, we still have to manually update our games and TVs.

The best way to address complexity is to take a complex problem and to break into smaller components.

This is where Deep Learning comes in. It opens an avenue of possibility not previously possible. Deep Learning looks at huge amounts of data and leverages the compute power we have today.

Deep Learning can be used to map the transition of a balled up piece of paper to a flat sheet of paper one layer at a time: input space X > deep net: a smooth morphing from X to Y expressed as a series of simple geometric transformations (layers) > target space Y.

Deep Learning leverages backpropagation and optimization algorithms to search over the program space for a close to optimal solution. The program is a set of model parameters. It can also be used to optimize model architectures and hyper-parameters (Auto-ML). Deep Learning opens a new avenue of optimization.

António introduced the concept of Software 3.0 where:

  • Software 1.0 are programs humans can write, coded in a programming language, requires domain expertise, deconstruct the problem, design algorithms, solve problems that are easier to specify desired behavior and code, transparent, symbolic AI with planning and reasoning.

  • Software 2.0 are learned from data, requires less domain expertise, solve problems that are easier to identify desired outcomes from collected data, black box, geometric AI with pattern recognition and intuition.
  • Software 3.0 are programs assembled or assisted by AI according to a set of requirements or objectives. Programs composed of Software 1.0 (symbolic code) and Software 2.0 (pattern recognition, intuition) generating reusable modules.

Software 3.0 will make application delivery a more universal, creative and communicative endeavor, resulting in indestructible software accessible to everyone through AI

Software 3.0 will make application delivery 100X faster, delivering robust, high-quality apps of all complexities, while being accessible to everyone.

This is important because software development is still too hard and there is an ever-increasing skills gap. We need to shorten the learning curve.

The master plan is as follows:

  • Foundation — get the data and AI in a virtuous loop

  • Exploration — users benefit from AI-based features

  • Transformation — AI plays a major role in development experience

  • Disruption — citizen developers are enabled by AI architects to build indestructible apps

  • Transcendence — everyone creates self-evolving and optimizing apps as a creative/communication endeavor

What are we exploring? Three main vectors: 1) assistance – guide developers – accelerate power users and make it easier for novices to develop apps by suggesting and guiding on the next steps; 2) analysis – artificial expert – improve software quality by identifying bugs, bad patterns, and recommending architectural decisions; 3) synthesis – what if the software wrote itself? – collaborating with top research groups (Carnegie Mellon and Lisbon) to transform AI and software development

AI-assisted flow development enables development pros to think less and code better while empowering beginners to learn while doing. The platform provides AI suggestions with three options that are 90% of what is next based on more than 12 million code patterns. This accelerates flow development by 25% and is available for all logic flows.

Developers can apply for early access at outsystems.ai.

Following his presentation, I had the opportunity to ask António some questions about the current and future state of AI.

What Are the Keys to a Successful AI Strategy?

Guidelines and quality data. It's better to have smaller data sets with better quality when developing algorithmic models. In fraud detection use cases the amount of fraud is lower than legitimate transactions. You need good quality, representative samples of both to build a strong learning model.

Ideally, build the AI capability into the app so the users do not realize they are using AI to solve their problem. Simple interfaces are the most powerful as evidenced by the Lyft and Uber apps.

How Can Companies Benefit from AI?

Improve speed and quality of development. Create completely new opportunities. Leverage capabilities with the data and compute power at scale. With fraud detection, people used to write rules manually. However, humans cannot explore all of the complexities and subtle differences that a criminal, fraudster, or spammer might present. AI systems explore all patterns and combinations at scale, which is critical with thousands and millions of variables.

How Has AI Changed in the Past Year?

Democratization with tools getting better all the time. Proprietary things we did five to 10 years ago are open source today. This lets people enter the space and solve problems with fewer barriers and faster learning and scaling.

Image detection is being provided out of the box.

However, this is enabling people to just brute force the analysis rather than understand how to structure the problem and the data in a transformative way.

What Are Real-World Problems Are Your Clients Solving With AI?

Developers are coding faster, more securely, with better performance, and higher quality.

Developers are able to focus on higher-value tasks to solve business problems.

People are seeing advances with AI assisting in tasks with huge complex software development. The ability to handle bigger projects at scale is exciting. They tell us it's a cool feeling of having a partner working with you.

People have been seeing improvements in other products and are now seeing it in software development tools. We already provide a certain level of abstraction and high-level way of doing things by embedding AI in a subtle way that's helping rather than being disruptive

What Are the Most Common Issues You See Preventing Companies from Realizing the Benefits of AI?

Having their data in order and in a centralized place where they can do all of the analysis. In order to put into production, you need to see data from all systems in real time. If there's not a data structure in place, it can be difficult. It's easy to train a model, put it in the cloud, and call to get predictions; but, it doesn’t handle data transformation in flight.

Where Do You Think the Biggest Opportunities Are in the Implementation of AI?

People with different skill sets have a learning curve and a cost associated with that learning curve. The cost of learning is so high, we try to eliminate and reduce how to assemble systems and work together with the right patterns be successful and achieve business goals. We open new opportunities by reducing complexity.

What Are Your Biggest Concerns Regarding AI?

It's still a very hyped area with a lot of investment. Deep Learning will bring benefits. New innovations will fuel new opportunities. The state-of-the-art will mover forward to do different things.

Companies need to understand how AI works. Don’t accept high expectations that this is magic. It takes thought, work, and preparation. Help users understand the decision model so it's more than a "black box."

What Skills Do Developers Need to be Proficient on AI?

There are a lot of great resources online. Coursera has online Machine Learning courses with Deep Learning specialization that provides a good understanding of how it works and the limitations. Go on Kaggle and do data challenges. If you have access to data in your company, do experiments with data to solve a problem. Start small. Explore the Kaggle challenges beyond image recognition, try to tackle different problems with business-like data to understand how to transform data to solve business problems.

Topics:
artificial intelligence ,machine learning ,deep learning ,future of coding ,ai-assisted flow development ,outsystems ,software development

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}