The Advent of Software 2.0 and Its Implications on Enterprise Application Delivery
The rapid advancements in technology have had an impact on almost all industries and sectors, including enterprise application delivery. As low-code and no-code application development platforms find their way into the hands of citizen developers in organizations democratizing application delivery, another concept that is fast gaining popularity is that of Software 2.0. This allows technology to augment the capabilities of a software developer. Recently, the CEO of Google Sundar Pichai has talked about software that ‘automatically writes itself.’ And certainly, if you consider software development to be little more than the creation of oft-repeated segments of code, then the rapid advances in AI and the emerging concept of Software 2.0 would give software engineers a key reason to celebrate.
Traditionally, software developers have written software as a series of hard-coded rules: If X happens then do Y. The human instructs the machine, line by line. That’s Software 1.0. But Software 2.0 recognizes that — with advances in deep learning — we can build a neural network that learns which instructions or rules are needed for the desired outcome. Andrej Karpathy, the director of AI at Tesla makes the compelling case that we won’t really be writing code anymore. We’ll just be finding data and feeding it into machine learning systems, which would help generate the desired software. In this scenario, we can imagine the role of a software engineer morphing into a ‘data curator’ or ‘data enabler’, who is no longer writing lines of cumbersome code.
As exciting as this may sound, traditional software engineering or Software 1.0 is not going away anytime soon. As we witness this space unfold and the role of the technology developer morph, there will be ways in which this technology shift will empower the practitioner of Software 1.0. While we’ll certainly have help from deep learning neural network systems, they would most likely allow the software developer to do his current job better, rather than completely look to replace him.
Software 2.0 – Automating Software Development using Machine Learning
The traditional method of software development has been slow, tedious, and error-prone, having software developers and testers spending days working on a program that should work, but just don’t. We have built systems and applications carefully and painstakingly telling systems exactly what to do, instruction by instruction. And most of us have been surprised when some program that has been reliable for some time suddenly screws up at some slightly unexpected input. The last bug is always the one you find next; if someone hasn’t already said that, someone should have.
Karpathy suggests something radically different: with machine learning, we can stop thinking of programming as writing a step of instructions in a programming language like C or Java, or Python. Instead, we can program by example. We can collect many examples of what we want the program to do and what not to do (examples of correct and incorrect behavior), label them appropriately, and train a model to perform correctly on new inputs. In short, we can use machine learning to automate software development itself.
While we are only seeing the advent of Software 2.0 – there are glimpses of what might be in store for us. There are AI-powered systems on the web that can generate a logo for your business and refine that logo based on your feedback. Today, your phone automatically checks your spelling and suggests the next word. When you’re writing code, a similar tool highlights the possible errors. For example, someone who does pair programming would be naturally drawn to think about Software 2.0’s impact on the way they work. Considering the advances in machine learning and conversational interfaces, it’s conceivable that a machine could one day be one-half of a pair programming team.
Now imagine a far more advanced AI assistant playing a much larger role in the future. As you’re writing code, your machine partner might determine what kind of function you’re writing and fill the rest in for you, based on your style, using high-level predictive analysis. Essentially the machine writes the rest of the code for you, then you approve it. Another area an AI assistant could help with is test-driven development. A human could write the tests while the machine partner iterates millions of times to find the right piece of code to solve those tests. Instead of doing both jobs — writing the tests and making the tests pass — you’d have a machine partner that does the latter. The software developer would spend less time on implementation code and more time on understanding and solving business problems.
Which parts of programming can be moved to the deep learning 2.0 framework?
This raises the ultimate concern: will machines just replace software engineers altogether? The reality is more likely that at best we’ll get to that more than 90 percent competence. But that still means failure 1 percent of the time, which results in unpredictability. That means you need a monitoring system to ensure that the code which is written actually works. Maybe this is a new role for software engineers - monitoring the code and helping the machine learning system achieve closer to a 100 percent accuracy rate.
Now that we’ve outlined the potential benefits, the next question arises: what parts of software programming can be moved to the deep learning 2.0 framework and what should remain in the traditional 1.0 framework? Today, it’s clear that these deep learning neural networks do well in supervised learning settings if they’re provided training data with good examples and bad examples so they can learn what to output correctly. Some machine learning systems are getting so good that they’re bumping up against the human-caused flaws in the training data.
Xamun Automated Development – Software 2.0 in Practice
We are at the edge of a revolution in how we build software. How far will that revolution extend? For starters, most companies don’t have the AI expertise to implement Software 2.0 as training models or building data pipelines and deploying ML systems aren’t well understood yet. This is compounded by a lack of skilled people, trouble finding the right use cases, and difficulty in finding data.
That doesn’t mean we aren’t seeing tools to automate various aspects of software engineering and data science. Automated software development platforms are using the principles of Software 2.0 to build enterprise applications not only 70% faster than traditional development methods, but also at a fraction of the costs. Companies stand to benefit immensely from these new technology enhancements and they could look to launch market-ready custom software in weeks. This could mean a fully-functional, high-quality Web, iOS, or Android Apps without all the headaches, unacceptable timelines, or exorbitant price tags.
It’s increasingly getting clear that AI can and will have a big influence on how we develop software and should you want to join the revolution, reach out to one of our digital transformation evangelists HERE to get started.