The Future of Code
With computers coding themselves, do humans even matter?
What is the scariest movie you have ever seen? For me, it’s 2001: A Space Odyssey. Maybe it does not have the gore factor or terror including chills, but HAL9000 is right up there with Alien, Predator, and Snakes on a Plane* for most terrifying villain of all-time:
“I’m sorry Dave, I’m afraid I can’t do that”
With every other villain, you are dealing with the irrational. HAL on the other hand is polite, rational, soothing and a 100% certified sinister serial killing computer. What makes HAL even more threatening to us however is the idea of our creations turning the tables us.
We are still well behind an intelligence such as HAL coming into existence. The pace of software development in this decade however may mean we have to reckon with the future sooner than we are prepared for. What happens once we step into the 2020’s?
A few of weeks ago I spoke on a panel called the “Future of Work” at Innovfest Unbound. Most of these talks tend to devolve into debates on whether humanity is going to be made redundant by the advance of machines. Luckily we avoided much of the doom and gloom and discussed more practical considerations of workforce management, upskilling, and the growth in entrepreneurship and freelancing. Underlying all of this change is software.
During the panel I shared how software has enabled greater economic opportunity and career freedom. The Internet and mobile apps have opened up both local and global marketplaces to supplement ones income or transition into entirely new careers. Supplementing these platforms and online gig marketplaces is more content than has ever been available and communities to help level up one’s skills. The digital economy is really the opportunity economy.
This has two implications in the near term. First, there is an even greater need for software developers to meet the growing demand for digital services. Second, with the growing interest in software development as a career, it has never been easier for someone to transition into a software role. Just this past weekend, I spent time with Rails Girls Saigon and watched women with no coding experience launch a fully functioning website in a day.
What does this means for code quality if so many newbies are entering the industry? Very few developers are of the 10X Engineer variety. Most software is written by average developers. So while issues of tech debt and leaky solutions are problematic, the code functions quite fine.
With the growing level of abstractions, the level of complexity of code and knowledge required to write working code has significantly decreased. When I started, I used C primarily and even with libraries, it required writing a lot of low-level code to do basic things like memory allocation. Just getting a server running to deploy an application was a pain. Scripting languages, cloud compute, and CI/CD pipelines have swept away much of that complexity under the rug.
If it has never been easier to write, test, and deploy working code then, couldn’t a computer do the same? That is in fact what one team of AI scientists was able to demonstrate through a process called neural sketch learning:
“It’s basically studied everything on GitHub, and it draws on that to write its own code. A developer can give Bayou a very small amount of information — just a few keywords or prompts, really — and Bayou will try to read the programmer’s mind and predict the program they want.”
Swarat Chaudhuri, Rice University
You can try Bayou out for yourself. Bayou however is not the only project. Microsoft and University of Cambridge used a similar technique to create DeepCoder which is able to craft small segments of working code. Google has a program called AutoML that writes machine-learning code more efficiently than the code written by the 1,300 people that built AutoML.
The reality of much of the code written these days is plugging things together that already exist with slight modifications. By some estimates, the majority of code in most organizations is open source. Wrapping legacy services with API’s has simplified accessing existing code for new services. Open API’s have vastly extend once complex software tasks and made them available through a single line of code. The plumbing has already been created..
So what exactly are human coders needed for then? Are we leading people into careers in software development that may not even be necessary in a decade?
No, but as in most things during a massive shift in technology, there will be a transition and new opportunities yet to be created. The first thing we need to understand is that the robots are not taking over anytime soon. They are merely accelerating the things we as humans are good at and automating the things that are slow for human minds. We cannot view and analyze thousands of API’s in seconds like AI can. We still need more humans and more creative thinking to guide AI towards problems worth solving:
“If we succeed, we think this can inspire new types of neural nets and make it possible for non-experts to create neural nets tailored to their particular needs, allowing machine learning to have a greater impact to everyone.”
Google AutoML Team
The second thing is that technology has already automated things that used to take humans days, weeks, and months to do. When was the last time you actually installed a server? We have cloud and automation for that. This is one reason for the rise of startups in the past decade, the tedium and capital costs of getting started has gone to nearly zero:
“The potential for automation that this kind of technology offers could signify an enormous reduction in the amount of effort it takes to develop code.”
Armando Solar-Lezama, MIT
The third point is that with greater automation comes new opportunities and industries. The idea of being a “software engineer” only emerged in the 1960’s. In the past decade, we have seen the rise of “full-stack engineers”, “data scientists”, and “cloud engineers”. People that build mobile apps was not a thing until 2008. Those apps in turn have created massive economies built to exploit the opportunities and gains in productivity brought about from software.
With any major shift in technology however, it means rethinking the skills that are needed in the next stage. We do not need more “coders” to pump out more lines of code. We need more thinkers and designers and problem solvers. The future of work for developers is turning business problems into logical flows and digital constructs that enable tangible functionality in the most efficient manner. AI is simply the forklift used by human programmers to allow us to handle ever more complex problems.
What do you see as the future of code? How is your organization leveraging technologies like AI to enable developers to be more efficient?
* Ok, maybe Snakes on a Plane was not scary, but it was at least fun…
A concise explanation of nil v. empty v. blank in Ruby on Rails
A concise explanation of nil v. empty v. blank in Ruby on Rails
Thanks for contributing an answer to Stack Overflow! Please be sure to answer the question. Provide details and share…
I often used these without knowing the details, but now I know …
I help senior IT leaders and companies solve the challenges involved in digital transformation and moving towards a developer-centric culture that delivers innovation and customer value. In my day job, you can find me here.