I was discussing the new wave of AI tools with an old colleague of mine the other morning. We’ve accumulated a lot of experience over the years - both having actively coded almost all our lives and doing it professionally for a large chunk of that time (I’ve probably spent 30 years coding for a living).
I’ve witnessed the rise of numerous tools and technologies designed to make our lives easier. The recent surge in AI-powered coding tools has certainly caught my attention - I pay for Copilot, and I find it incredibly useful. There’s no doubt in my mind that it’s a huge time saver and a helpful pair programmer.
But I’ve found it hard to get excited about the next iteration coming from GitHub, Copilot X. They talk a lot about improving pull requests, highlighting areas of code that can be tested, helping developers understand APIs, writing the boilerplate code etc…
Similarly, the demos I’ve seen of tools like ChatGPT, it’s great for explaining code, generating large chunks of code, giving suggestions for how to implement functionality etc… It is amazing, and I’ve used it for my own projects and to teach me new things. There is a feeling of “wow - that’s amazing”. But is it really that different from what we already have?
It feels like we’re just optimizing the existing processes we have.
Software development really doesn’t feel much different compared to 30 years ago when I started. It doesn’t feel like a leap forward in software development.
Despite the advancements in programming languages, frameworks, and tools, the core process of software development has remained largely unchanged. It’s surprising that, with all the technological advancements we’ve made, we haven’t found a way to revolutionize the software development process itself.
We still struggle with the process of getting from the problem to be solved, to the code that (may) solve it, confirming that we have actually solved it, and then going through the feedback cycle to get closer. It’s a terribly arduous process and honestly a lot of the time what’s produced is pretty mediocre (or often a complete failure).
We are surrounded by software that is buggy, insecure, and slow. Just take a look at some of the apps on your phone or the various websites you use - pretty shoddy stuff.
We need a transformative solution.
Imagine an AI system that could interpret high-level concepts and generate fully functional applications without the need for any coding.
It feels like this is getting closer. We have seen some demos from the latest version of ChatGPT that can generate a web app from just a sketch of what is required. But it still generates code that needs to then be tweaked by a developer. It would be very hard to incorporate a feedback loop into such a system.
I’m hoping that we can reach the point where writing code is a thing of the past, very much in the same way that it’s very rare to write assembly language, we should not be writing any code at all.
Wouldn’t it be great if the code was a black box that we never have to touch - it could be generated and tweaked by an AI that we instruct - and it could even be tested by an adversarial AI that tries to break it and checks that the problem has been solved.
I’m hoping that this will be the future of software development. And maybe what we currently see as “code” will no longer exist - what one machine generates and another machine tests and executes could be a completely different beast - maybe as humans we won’t even be able to understand it.