Artificial Intelligence will improve, accelerate, disrupt the software development life cycle &
For decades, Artificial Intelligence programming and algorithms to transfer human knowledge, business rules & decisions by computer scientists is much slower & time taking. Limited domain knowledge proved a poor substitute for human expertise; AI systems were only as good as the "intelligence" programmed by the human engineers.
The new AI approach is to build systems that learn by themselves, becoming experts using model, business rules & decision from the data fed to them. Such systems deal with complexity with increasing precision, adapt to the unknown, and expand their capabilities beyond their original programming.
Traditional natural language processing (NLP) techniques, rules-based reasoning, and knowledge representation are now being augmented with machine learning — particularly deep machine learning — to gradually strengthen AI. Early results are promising: New business apps are emerging in a variety of domains. The expanding basket of AI goodies will change developers' jobs.
AI Makes Developers Smarter
The AI technology landscape stack is full of old and new technologies. Deep machine learning and neural networks are the basis for stronger AI; applying them to and combining them with existing weak AI technologies such as knowledge representation, NLP, reasoning engines, vision, and speech technologies will strengthen AI. Developers must first understand what these technologies are and what they can do differently and better with them, both in the software development life cycle (SDLC) and in new types of applications. Recent survey with 30 industry players to uncover the ideas they have coming from their research labs, their new products and services, and their experiments with clients. Imagine for a moment that AI will allow developers to:
Quickly turn an idea into code & running application. Transforming business need into working prof of concept is still a major source of problems, even as Agile, DevOps, and the latest requirements definition practices have improved the process. What if a dev team could just write its idea in natural language and the system understood the request and turned it into machine-executable code? While that's still science fiction, it's very reasonable for NLP and expert systems to suggest possible changes and where to apply them in the project. AI will enrich requirements models and test cases with more sophisticated text recognition, enabling better code generators.
More precisely estimate user flow and timelines. Precisely estimating the time to develop code from requirements is hard — if not impossible. To even get close to a reliable estimation, experts need a well-known context, with the same team using known technology. But a solution based on predictive machine learning and business rules will enable project leads to take the huge amount of data collected over time from many projects.
Quickly and confidently pinpoint production bugs and remedies. DevOps teams spend huge amounts of time trying to figure out where and why operations bugs happen and who can quickly fix them. AI would enable them to use data on who wrote the code and what skills they had to intelligently search for DevOps with similar profiles who worked on similar projects and who have time available. Likewise, a team could use data generated during past project life cycles to predict what might go wrong in the current project as it unfolds and take steps to avoid problems.
Automate decision-making on what to build and test next. Code that implements incorrect or unused requirements causes lots of unnecessary regression testing. That in turn means time wasted in manual testing and building automation for features nobody uses - and wasted time and money for the operations team. A solution based on machine learning with business rules could leverage production data to show how the application is used and analyze the social sentiment around it. Data intelligence would help developers and testers prioritize their efforts based on business risk. AI would not only help spot high-risk areas but also automate the right tests to execute in the automated continuous delivery process.
AI Makes Solutions & Applications Smarter
A new generation of apps that can speak, listen, sense, reason, think, act, and execute is hitting our mobile phones and desktops. The list of vendors pushing AI products, solutions, and technologies enabling these new apps is growing quickly. Solutions come in the form of embedded capabilities, point solutions, platforms, and deep learning services. AI will allow developers to build applications that offer:
Straight forward human interaction. We've created unnatural ways for humans to interact with computers. Developers spend time building apps with windows, data entry forms, pull-down menus, graphics, dashboards, and other graphical artifacts to make it "easy and efficient" for people to interact with them. AI will bring new and better options into play, enabling apps that see their users, write to them in natural language, hear and understand what they say, and respond to them through voice. Bots like Siri and Alexa are an early manifestation of this.
AI Will Help Developers Make Better Apps - And Move Beyond Apps
Customer-obsessed organizations provide experiences that win, serve, and retain clients. AI will gradually be able to deliver unprecedented types of applications to those customers. Businesses will need imagination and experience to develop AI-enabled applications; they'll also need to adapt to a new world where developers no longer create an app for a specific outcome but can build software that can handle a range of outcomes and next steps. Caution is the order of the day.
Enterprises need to adopt AI in small steps by getting the business, data scientists, and developers with AI expertise to experiment early on and in an agile way. We expect such experiments to unfold in three overlapping stages:
Make existing apps more conversational today and more fluent tomorrow. Developers add some cool features to business applications with limited scope and within a confined domain like repetitive language or finite commands to improve customer engagement.
Improve reasoning, decision-making, speech, and understanding. A smart combination of reasoning capabilities, technologies, and data enriched by machine learning algorithms will give applications the ability to reason and deduct information by analogy.
Develop apps that aren't apps any more. Bots and intelligent agents will quickly take center stage in development; developers won't be programming them but rather teaching them.
THE RISKS, CHALLENGES, AND COSTS AI has a checkered history. Media hype alongside science fiction create anxiety for businesses considering investing in AI. But by no means will AI come close to replacing human intelligence in our lifetime. Rather, research and industry should focus on governing the evolution of AI, while working in the direction of developing a technology that helps and supports humans rather than replacing them or "taking over." The principal challenges and risks companies face are:
Inflated expectations. AI can support customer contact centers with bots, NLP, and AI advisers suggesting customer engagement tactics. Financial services firms are piloting projects to use AI to scale and increase the quality of their contact centers. AI technology is here, but it's not yet perfect.
Underestimated integration costs. Any enterprise adopting AI will take on architecture and integration challenges to leverage AI services in its existing software landscape. Let's be clear: Integration won't get any easier, there won't be less of it, and it won't become cheaper. Glue code needs to be designed, developed, and maintained to link bot platforms or machine and deep learning algorithms with existing systems. Data flow from one algorithm to another needs to be programmed and managed. Solutions to these new problems will come, but in these early days sharpened integration skills are required to deal with AI integration efforts.
Lack of big data or computing power. Deep learning algorithms are generally available for simple scenarios; we train them on desktop graphics processing units (GPUs) and run them on our mobile devices. But training large, multi-layer deep learning algorithms, especially for complex problems, requires huge data sets and significant computing power.
Uncertain AI testing regimes. While AI will help improve the testing of existing applications, challenges remain about testing AI itself. How do we know that the AI application is giving the right recommendation? How will we know that the neural network is learning the right thing or when it has learned it?