In my 17 years in the IT industry, I’ve seen lots of changes in how we deal with features, but nothing like what’s going on now.
Why We Code
If we want to predict what the future of programming looks like, we need to understand why we do it in the first place. We write code because computers can’t work alone and need to be told what to do, to put it briefly. They function through the sets of commands (code) we send them to execute and we use English programming syntax in modern languages like C#, Java, Python or PHP to write this code because it makes our lives easier as programmers.
At the moment machines only understand machine code – not English. So, programmers use all sorts of tools and processes to transform English specific syntax into machine legible code.
But, this isn’t the future of programming.
See, the human element of coding makes it error-prone, highly complex and resource exhaustive. Just think of the scarcity of qualified (and available) programmers as well as the need for management everyone is running away from. Not to mention the fact that building quality software requires a wide range of skills that almost no one person alone has.
And if that wasn’t enough, new regulations like GDPR, don’t make software releases any faster.
A New Reality
Amazing papers about A.I. are flooding scientific news outlets as of late. Let’s take Google, for example.
What does this say about the future of programming?
I’ll stop with the references here, but with a quick Google search you’ll already find software related A.I. based services popping up. (UX landing page builder based on AI, recommendation engines and so forth).
A.I. – A Game Changer
A.I. is set to revolutionize the tech world in so many unforeseeable ways. But, the close future of programming is already in clear view. The current artificial intelligence to-do list has on it two major goals:
- Automation – There are so many tasks where computers will soon replace humans such as: code generating, code reuse, automatic deployment, workflow management, integrating new API’s/SDK’s, etc.
- Augmentation – DSL’s like SQL could possibly be replaced by natural language queries enabling the less skilled to do it.
The building blocks for A.I. coding are already in place.
Test-Driven Development enhances code quality and BDD focuses on delivering the right features. And, while developers don’t always necessarily love working with such structured practices and tools, A.I. won’t have any issue with it.
Tools like this, capable of generating better test coverage are currently being used with continuous integration. The only thing that’s missing is a set of test cases large enough to allow algorithms to predict the right outcome.
Therefore, I expect open libraries of test cases or data sets to develop quicker in the near future. Eventually, engineers may start building A.I. coders from bottom-up with Z3-like tools that automatically generate test cases for well-functioning libraries and reuse these test cases to create optimized frameworks.
The Next 5 Years
If an algorithm can predict the right code, what will a programmer do?
A vast majority will focus on managing constraints. Many will also monitor, maintain and optimize these A.I. systems. These tasks will still require a human touch, if you will.
(That’s not to say a small minority won’t continue typical programming activities, as some still develop in C or Assembler today.)
Let’s talk about this new family of developers that will manage constraints.
First, they’ll need to nurture the coding system with data. Then, monitor results until the software meets both new and old system expectations.
Customers will be gifted with a level of unprecedented agility.
So, 5-10 years from now people will already be writing less code and focusing on value-added data science activities.
Tasks related to:
- Integration & Interoperability
- Building/Adapting Data Models & Data Flows
- Architecture & Design
- Security & Data Protection (Although this will be the responsibility of far more sophisticated and reliable systems that are currently taking their baby steps)
This is truly what I believe the future of programming looks like. With time, A.I. will step away from being a tool for assisting developers in coding to being the coder itself. But, I won’t get too far ahead of myself. There’s a world of ethical and regulatory challenges to be tackled before that dream becomes a reality.
About the author, Cornel Fatulescu