Moulding software
I don't know how LLM's work. I've been using ChatGPT for a few weeks. This post is conjecture about what might be possible if it's functionality is developed further. I'm not panicking about it, yet, because I don't know for sure whether the assumptions I'm making are possible.
Let's assume a few things:
- The input size into LLMs will increase further. Up to multiple gigagbytes of data, but this could work at the megabyte level too.
- We build tools that allow us to configure ChatGPT-like tools to do HTTP requests on our behalf. I believe tools like this already exist, and all they would require is some plumbing around the OpenAI API.
- Bonus (not neccesarily a requirement): Further versions of GPT will get considerably smarter and more accurate than GPT-4.
If these all happen then I'm not sure how valuable the skill of programming will continue to be over time, at least as we understand it now.
Imagine giving this version of ChatGPT the following prompt:
"Hi there, I'd like you to do some feature development work on my e-commerce website, the code is at this repo on GitHub. Download it and follow the instructions for getting your development environment set up in the README.
I want to send an email to users that abandon their shopping carts three days after any inactivity. Please evaluate open source libraries that might implement this for us. In particular, make sure that it's a library that seems like it will be maintained and that you (or future versions of you) will be able to understand and debug easily. Alternatively, if there are no good solutions, please go ahead and implement cart abandonment from scratch, again in a way that will be easy for you to debug if there are any issues. Please include automated tests that exercise the feature end-to-end that will be run as part of our CI system. Please step through the feature locally by hand to ensure it works as expected from the point of view of a user.
Once you've implemented the cart abandonment feature locally, please set post the diff implementing the feature to GitHub at a pull request for posterity, explaining some of the tradeoffs you made so that a future version of you could understand your reasoning. Please review your changes in terms of security and performance, and then address any feedback that comes up in the review.
Once the build passes, please deploy the change to production, then use a test account to confirm that the feature works as expected in production. Please record a video that walks me through how the feature works and send it to me when you're finished.
Work through all of this step by step and let me know how you get on. If you have any questions at any stage then let me know and I'll try to address them as soon as possible. Best of luck!"
The model would need to parse out actions it needs to take from this text, and make sure it has (and has verified) all of the credentials and access it needs to step through this. These are the instructions you might give to a junior developer for implementing this feature. We can generalize a lot of these instructions for all development though, so that the prompt is as simple as "implement cart abandonment notifications three days after a user leaves on my e-commerce website".
I imagine that in future versions of this, we could probably stop caring about GitHub repos, deployments to production, etc, and leave the internal representation of the code to the model. So long as future versions of the model can read, debug, and modify it's own code in meaningful ways, we don't need to care how it writes its code.
It makes you wonder though, in this universe, what would be the point of e-commerce websites? "Find me three options for the best air-fryer", "buy the second one" would also be things that the model could do for you. It feels like any direction you go in, software as we know it gets eaten by LLMs. Unless "generally intelligent problem solver" becomes a job, I'm not exactly sure how to continue being technically valuable in that universe.
🤔 🤷🏻♂️