I've been writing software for the better part of 30 years, and like many of my colleagues, I have recently had a difficult time identifying the last thing that has changed the way I work more quickly and massively than the current wave of large language model tooling like ChatGPT and GitHub's Copilot.
You're all also probably trying to figure out where this all goes, what it means for the future. What will die, what will be replaced, what will spring up, how fast this all will change.
I would like to share where I think this will go, what I see as the likely outcome of this new, unquestionably powerful tool that has shaken up so many industries and is coming for so many more.
As one of the cofounders of GitHub, I'm lucky to have been at the epicenter of the last big software development sea change that I can recall, the rise of Open Source software in the professional world.
I remember a time when most companies wouldn't touch open source software, reinvented every wheel they needed. I didn't know at the time that I would be involved in a central part of disrupting this in a way where today it's almost inconceivable to imagine a company that didn't use open source in some way.
And just as I depend on open source software for nearly everything I do in my job today, just as nearly every professional developer does, in the span of a few short months, I've now become dependent on code produced for me by trained language models. Every day, more and more of the code I write probably comes in some part from AI, a story shared by more and more developers every day.
So what does this mean? Where does this go? What is the future of developing software? Are we all out of a job soon? Will the computers write everything for us?
My guess is no. And yes.
I think if history has shown us anything, it's that increases in productivity doesn't destroy jobs, it creates them. Just like No Code solutions have increased the pool of creators, just like higher level languages and libraries and open source has helped people do more with less, our new coding tools will simply make more people be able to accomplish more with fewer resources and time. Will our jobs change? They already have, and they will undoubtedly continue to evolve, possibly very rapidly. But will people who love building things with software no longer have anything to do? Hardly.
But the question of if computers will write all our software is a more interesting one. I think the most interesting way of looking at it is that of programming languages. We're not writing assembly anymore to get things done, we're able to leverage tools that abstract that away and make it simpler. The code may rarely be as efficient, but much more can be done much faster with higher level languages.
I think that if we look a few years into the future, the most interesting thing that we'll see is the slow death of the text editor as the fundamental tool of the software developer. If you write software today, you can even start noticing how inefficient this method is for producing software. Opening dozens of files, writing code from scratch, manually testing things.
I think that what developing software will look like soon is having an interactive conversation with a tool that produces solutions for you. That software developers will become a conductor, an orchestrator of code generators. One still needs to have a fundamental knowledge of how these things work, just as I had to take assembly and compiler classes in University. But the real skill will be having taste and insight into what should be written, how it should work, not what exactly is written. Opening up files and editing them manually will come to be seen as inefficient, antiquated and unscalable. Frustratingly slow for little gain, just like writing programs in assembly is today.
I believe that as developers, we need to look down the road at what is fundamentally important and useful about the production of software. That it solves problems for people. That it reduces friction in people's lives. That humans can use it to do things that were hard or impossible before. Typing code is not what solves those problems, having people understand the problems and what solution could solve them well is. Whether that software is written by hand or machine is ultimately irrelevant.
But what is the most exciting part about this upcoming revolution is not that software solutions will be faster or more efficient to write. To me, the most exciting part is what the advent of computers writing code can mean for open source itself, that last large sea change in the development of software. Open source changed things because it's collaborative, because people can share and not reinvent the same wheels.
But what is inefficient about the open source process is the human element. In order to share code, you have to clean it up, you have to fix bugs and take contributions, you have to maintain it. To contribute to open source, you have to follow the rules, you have to make it understandable, you have to defend it. Every project is different, there are thousands of different contribution guidelines, hundreds of licenses to contend with.
But if machines are writing software, what could it mean if machines are sharing, if computers are collaborating? It wouldn't have to be entire projects, it wouldn't have to be full libraries. Every line, every snippet, every function could contribute to a database of solutions that everyone can take from and contribute to with little friction. Having our machines writing our code could open up a new era of sharing and collaboration, precisely because it removes the barriers that humans are simply not good at.
I believe this is the future of how every one of us will write, contribute to and use software in the near future. More open, more shared, more efficient and, to be honest, way more fun.