A brain and binary code
Coding has become a critical skill for many jobs. Some countries and schools are even considering coding languages to be an acceptable form of a foreign language. In the midst of all this, the nature of code is changing dramatically. Low-code and no-code platforms are demonstrating aggressive growth and making it possible for individuals and organizations to create powerful production applications with relatively small amounts of what would traditionally be called coding. The next step in this trend is AI generating code, as recently demonstrated by Open AI Codex and Github Autopilot. So what do these trends mean? Will coding become obsolete?
Before we answer this question, it is helpful to put these trends in context. In the early days of coding, assembly languages and coding directly in machine languages were the norm. Coding then evolved to higher-level languages where a developer could describe a high-level intent in a machine agnostic language, and have the compiler generate machine-specific code underneath. This trend has continued – today’s dominant languages, like python for example, come with many reusable libraries. It is now relatively straightforward to create powerful apps with minimal new code needing to be written.
Is this the same as low-code/no-code?
Low code/No code is the next step in this evolution. Developers no longer need to find and assemble reusable code blocks. Low code platforms are able to take high level directions, identify the right reusable blocks, and assemble the necessary code. Developers still make many decisions about what to build and how the software should behave.
Does low-code make some of its own decisions or does the developer decide everything? It is the former – and depending on the platform, the automation can make any number of decisions. This was even true of compilers. A developer using a compiler to write, say a loop, rarely specifies how the loop should be rendered into machine code. The compiler decides this – using a series of heuristics and algorithms painstakingly created by the compiler designers.
Can AI write code?
The most recent development, AI writing code, is one step above low-code. In low-code, humans (the low-code platform designers) may have assembled automation logic that is triggered to generate code when the user provides high level directions. In AI generated code, an AI has studied a massive corpus of existing code and determined these assembly rules for itself. To a user – it may look just like low-code, but it is AI created low-code. This means that it now easier to create new low-code platforms with AI that can determine the automation patterns.
These types of platforms can do many things
AI prototypes have shown promise in writing simple apps based on everyday language direction from humans. These AIs are trained with many examples of programs written in different languages. At its simplest level, think of it as auto-correct for your code. In its more complex level, think of it as an engine that can write code for a task the developer specifies.
Integrated Development Environments (IDEs) for programmers already identify simple syntactic issues in code. New AI technologies take this a step further. By analyzing code repositories, bug fixes and code updates, AI can be trained to detect common bug patterns and find them in new code.
Indeed. It is now possible to provide a dataset to an automation tool and have it generate the right type of code to build an AI out of the dataset. This type of AI automation is being used in learning contexts to teach AI coding to middle and high schoolers and to generate back end code for a variety of production AI environments.
This figure shows how compilers, human designed automation, and AI designed automation have expanded … [+]
Where is this trend likely to take us?
This trend will have profound implications. Many developers are concerned that it will put them out of jobs. I don’t think this is the case. Compilers did not put developers out of jobs – but rather massively increased the number of needed developers, the use of code, and the size and scale of apps being built. I expect these trends will do the same. It will change fundamentally the nature of coding however (if you are a skilled assembly language developer – jobs are limited). These trends put the human in the role of designer rather than implementor. Future developers will be free to focus on usability, design, feature functionality and so on, rather than worrying about nitty gritty details like how to use a particular API.
How far this trend will go remains to be seen. Production software is a complex endeavor that combines design, functionality, implementation, testing, revision and maintenance, DevOps and more. Anything that automates implementation frees the developer to handle the other items. It is fair to say that we are moving further into an arena where human tasks will be focused on functionality, design, ethics and such topics and low level implementation will be handled by AI and automation.
To answer the title question – will AI make coding obsolete? – I don’t think so. The job of a developer is to create a product keeping in mind the needs of the user, the specific circumstances that the solution needs to operate in (such as what technology the company uses, existing infrastructure, team skills, legal constraints etc.) and many other factors. AIs generating code is complementary to most of these things. I do however think that AI is and will continue to fundamentally change what it means to code. The key question is how we keep our education of coding up to date with what industry coding practices will become.
As a business or technology leader, it is important to ensure that your teams are apprised of these developments and how they can be leveraged. Low code is already helping developers be more productive. AI generating code is a relatively new phenomenon but we can expect it to become more pervasive over the next few years. Even skilled developers benefit from an ongoing program of education and training to stay up to date on the latest technologies. If you do not have such a program – instituting it is a great idea.
I am an entrepreneur and technologist in the AI space and the CEO of AIClub which pioneers AI Literacy for K-12 students and individuals worldwide
I am an entrepreneur and technologist in the AI space and the CEO of AIClub which pioneers AI Literacy for K-12 students and individuals worldwide (http://corp.aiclub.world). Previously, I co-founded ParallelM and defined MLOps (Production Machine Learning and Deep Learning). MLOps is the practice for full lifecycle management of Machine Learning and AI in production. My background is in software development for distributed systems, focusing on machine learning, analytics, storage, I/O, file systems, and persistent memory. Prior to PM, I was Lead Architect/Fellow at Fusion-io (acquired by SanDisk), developing new technologies and software stacks for persistent memory, Non-Volatile Memory File System (NVMFS) and application acceleration. Before Fusion-io, I was the technology lead for server flash at Intel – heading up server platform non volatile memory technology development and partnerships and foundational work on NVM Express. Before that, I was Chief Technology Officer at Gear6, where we built clustered computing caches for high performance I/O environments. I got my PhD at UC Berkeley doing research on clusters and distributed storage. I hold 63 patents in distributed systems, networking, storage, performance, key-value stores, persistent memory and memory hierarchy optimization. I enjoy speaking at industry and academic conferences and serving on conference program committees. I am currently co-chairing USENIX OpML 2019 – the first industry conference on Operational Machine Learning. I also serve on the steering committees of both OpML and HotStorage.