How AI is paving the way for the arrival of 'Software 2.0'
Collaboration between human and AI programmers will create a new paradigm for coding
Recent developments in computing speed and capacity have helped bring AI out of the realms of science fiction and into the real world, as more and more organisations have used it to become smarter, quicker and more efficient. The practical benefits of giving systems and networks the capacity to learn and perform problem-solving functions have applications in almost every industry, and as a result, it is likely that a number of job roles will be transformed.
AI systems are typically built by software development teams, coding general problem-solving logic into the algorithms needed to roughly simulate cognitive functions characteristic of AI. Software development is an iterative process: a programmer writes a few lines of code, tests it, and then builds upon the results to inform the next few lines of code. Interestingly, these types of processes are exactly what AI systems can automate, taking over the job of iteration from software developers and freeing up time to focus on new and innovative solutions.
Cloud & Infrastructure Live 2019 returns to London on 19th September 2019. Learn about the latest technologies in cloud, how to keep one step ahead of the regulators, and network with an audience of IT leaders and senior IT pros. The event will include keynotes, panel discussions, case studies, and strategic and technical streams. Best of all, the event is FREE to qualifying attendees. Secure your place now.
While the use of AI in software development will transform the roles of developers, these roles will by no means disappear. Instead, as Tesla's Director of AI Andrej Karpathy recently stated, collaboration between human and AI programmers will create a new paradigm for coding, known as "Software 2.0."
A paradigm-shift in approaches to software development
The current model of software development (Software 1.0) consists of programmers creating oft-repeated segments of code as a series of rules: if X happens then do Y. Software 2.0 will be based on a neural network that learns which instructions or rules are needed for a desired outcome, replacing the need for developers to "write" software with developers now focused on feeding data into machine learning systems.
A machine partner focused on program synthesis might determine what kind of function is being written and fill in the rest based on style, using high-level predictive analysis. Essentially, the machine writes the rest of the code, then the developer can tweak and approve it. Just like a smartphone uses machine learning to automatically check spelling and suggests word, a similar tool can be used to highlight possible errors when writing code. Considering the advances in machine learning and conversational interfaces, it's conceivable that a machine could one day be an indispensable member of a programming team.
Collaborating with AI on software development projects
One successful approach to writing software is taking an iterative, test-driven approach. With AI-enabled Software 2.0, a human could write the tests while the machine partner searches for a suitable implementation, iterating millions of times to find the right piece of code to solve those tests. Instead of doing both jobs (i.e. writing the tests and making the pass tests) a developer constructs the former while a machine counterpart does the latter. As a result, less time spent writing implementation code, freeing up developers to spend more time on identifying and understanding new areas in which business problems can be solved creatively through software.
Down the line, Software 2.0 might even help guide test-driven development and suggest the next test to be run, providing justifications along the way. Imagine the marketing people go to the development team and say they want such and such functionality. If they can express what they want in a way the machine can understand, the machine could help choose the tests that are needed and then suggest next steps, leading to faster idea-to-execution cycles.
The potential issues of Software 2.0
Today, it's clear that deep learning neural networks do well in supervised learning settings, if they're provided training data with good examples and bad examples, they can learn what to output correctly. But those systems are only as good as the training data they're fed. As a result, improving a model's performance frequently involves improving the underlying code and deployment environment as usual, but also providing clearer and more accurate training data. The reality is that neural networks are not a silver bullet. Rather, we need to design neural networks to work with other solutions. There are certain parts of software development that will work really well with deep learning and there are other parts that won't.
Starting the journey toward Software 2.0
AI-based automation stands more to help than to hinder software developers. As the effectiveness of pair programming shows us, software development is a process of constant collaboration with other colleagues. Every time a new pair comes together, the partners bring different experiences and different approaches to tackling a problem. With Software 2.0, a new partner is constantly available to help developers do their job better. This gives rise to a more energetic collaborative environment that leads to ever more effective solutions. And that's good for everyone.
Ian Huston is a data scientist and engineering director at Pivotal Software Inc., Dublin