4 ms·
I pay for ChatGPT-4. It's helping me program noticeably better and much faster, even with mid-sized projects involving many files. This is the process that I fo
by juanre 4y ago
I pay for ChatGPT-4. It's helping me program noticeably better and much faster, even with mid-sized projects involving many files. This is the process that I follow:
- I write a system prompt with a succinct description of what I want to implement: "X is an online app that does Y, with these features: ..." I try to be exhaustive, and I write as I would if I were describing what I want to do to a very proficient programmer who needs to understand the problem and the solution. I save this to a prompts/0-system.txt file that will be part of the project.
- I design an architecture and define the general boundary conditions. I may ask ChatGPT for opinions, but at this stage, it's mostly based on experience. I add it to the system prompt.
- I write a description of the first chunk of functionality that I want to implement, usually a set of functions or a class, at the individual file level. For example, prompts/1-dal.txt.
- I (actually ChatGPT) wrote a very simple recursive cat script (https://github.com/juanre/catprompt https://github.com/juanre/catprompt) that combines several files into a single prompt (a file can include other files, etc). I add a line to prompt/1-dal.txt pointing to the system prompt, and use catprompt to create a combined prompt that will include the overall description and the specifics of the functionality I am after.
- I give this prompt to ChatGPT, and it produces the code. It's typically perfectly fine. I add it to the project, for example, as dal.py, review, and fix whatever may need fixing.
- I ask ChatGPT to create tests in the same session. This also tends to work fine.
- Then I move to the next piece of functionality, in a new session. I write another description, in another file, including the system prompt and usually the code already created.
The prompts remain: they become a description of the code (and of my intentions) for other programmers, and they can help ChatGPT write documentation as well.
I enjoy programming like this. The effort I make in writing concise descriptions helps me think more clearly. I used to love literate programming back in the 90s, and this feels very much like it. Knuth described it thus:
"Let us change our traditional attitude to the construction of programs: Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do."
Replace "human beings" with LLMs, and I think that's where we are now.
- xk_id 4y agoAnd would you say this process saves you time? Instead of traditional programming? Or do you find other upsides to it?
- juanre 4y agoIt certainly saves me time, and I end up with better code and better documentation. I can stay thinking at a higher level, which removes cognitive friction. I usually don't want to be programming: I want the functions I need to be written and working. ChatGPT-4 takes care of that quite well.
- ParetoOptimal 4y agoI've essentially been using ChatGPT-4 in the same way and can confirm that the code it gives typically works. If not I just decompose pieces of it once and try again. If it fails there I just write it myself.