Author of the guide here. I attempt to address this in the "Why do we need prompt engineering?"[^1] section.
> ... we used an analogy of prompts as the “source code” that a language model “interprets”. Prompt engineering is the art of writing prompts to get the language model to do what we want it to do – just like software engineering is the art of writing source code to get computers to do what we want them to do.
Borrowing from Oxford Dictionary, the definition of "engineering" is:
> the branch of science and technology concerned with the design, building, and use of engines, machines, and structures.
I think it's pretty reasonable to say that "prompt engineering" falls squarely in the realm of "technology concerned with the use of a machine".
That's extremely broad. I know how to push the buttons on my washing machine. So now I'm a laundering engineer?
Maybe the answer is "yes", but I think it's a bit silly, and detracts from the engineering work that goes into building the machine, i.e. the work of understanding the connections and flow of electricity from button press to pumps and gears turning.
The person who shoveled coal to a steam locomotive was called a railroad engineer. I guess the distinguishing feature here is how much capital is tied to the process and how much value it creates - not how intellectually demanding it is as such.
If you had a button that switched on a thousand washing machines at a time I guess one could flirt with the title "washing engineer".
> If you had a button that switched on a thousand washing machines at a time I guess one could flirt with the title "washing engineer".
Since that button probably wouldn't work correctly 100% of the time, the operator would probably be forced to learn about problems and solutions related to that activity. Over time, that person would accumulate experience and knowledge which would make them well suited to that simple job of flipping the switch on and off. And at that point, that person would be more of an engineer than a random person who walked up and flipped the switch.
An _anything_ engineer is just someone who does that thing and the unnamed related things necessary to do the main thing.
The person who shoveled coal to a steam locomotive was called a railroad engineer.
Maintaining a constant head of steam while changing altitude, water level, external temperature, etc using a direct heat source is a really skilled job. Talk to anyone who works on a heritage railway and they'll explain just how hard it is.
I lived in the same city where George Stephenson invented the locomotive, and went to the same pub that the volunteers who worked on a replica went to. It's fascinating, and very much 'proper' engineering.
"Intellectually demanding" was a poor choice of word. I meant to say something along the lines "does not require to invent anything new" - which a railroad engineer does not need to do. That does not mean work they do is low-effort or trivial.
Surely we'd agree that not everyone who uses software is a software engineer, but writing software is generally agreed upon as "software engineering". If you consider my comment as a whole, and the linked document, then the application of the definition makes sense.
Large Language Models are incredibly similar to black-box non-deterministic interpreters. And prompt engineering feels very much like writing code for said interpreter.
I think here, like in a lot of places in our societies, there's a gap in language. Take the group of someone's grandma, john carmack, a 3rd year uni student and like a guy that writes YAML to control his home automation system.
2 words surely aren't enough. There's no way to draw one line through that group and get any real meaning (unless maybe it's above the grandma)
So, like in other parts of society, if we don't make new words, people will start using the words we already have.
I want someone to write a sci-fi book where our need for new language snowballs with increased technology and ends up being the great filter for life since it grows until no groups can understand each other.
I've never heard of non-deterministic programming languages. Is that really a thing?
(I mean - cue the JS jokes and all, but, really?)
Fwiw, to me, writing prompts feels most similar to management, directing, maybe psychotherapy (though I never worked in that, just guessing). Knowing how to adapt and use language to guide the "other" to achieve a goal, but without having insight into the exact way they go about it.
I feel like when I talk to ChatGPT I am directing it. "guide to directing AI bots" has its share of problems too, and "directing prompts" is just flat out unsexy.
> > the branch of science and technology concerned with the design, building, and use of engines, machines, and structures.
> I think it's pretty reasonable to say that "prompt engineering" falls squarely in the realm of "use of a machine".
It's not just "use of a machine", but rather "the branch of science and technology concerned with the use of machines.
That said, I don't have a stake in this battle. I just wanted to point out that it's easy to forget the earlier context when looking at lists like that!
But writing “source code” is definitively not “software engineering”. It has a name: programming. A software engineer is the person that creates a system from software mostly using software. AI-assistant engineering makes sense.
Prompt crafting is fair, informative, and accurate. And we (should) all know by now that craftsman/artisan != engineer.
Ask your favorite LLM to categorize the following statements as one of { reasonable, wishful } notions:
- writing prompts for LLMs is engineering. The science of engineering effective LLM prompts.
- writing prompts for LLMs is an art*. The art of crafting effective LLM prompts.
* almost all ‘art’ rests on fairly coherent communal ‘logic’ or ‘schools’. What distinguishes art from science is that this logic does not need have any basis in appealing to reason. Aesthetics in sciences, in contrast, is primarily used to select one of many contending scientific theorems in ambiguous contexts (as in “the beauty of the mathematics of the unverifiable <X> theory to me implies its truth”.)
> ... we used an analogy of prompts as the “source code” that a language model “interprets”. Prompt engineering is the art of writing prompts to get the language model to do what we want it to do – just like software engineering is the art of writing source code to get computers to do what we want them to do.
Borrowing from Oxford Dictionary, the definition of "engineering" is:
> the branch of science and technology concerned with the design, building, and use of engines, machines, and structures.
I think it's pretty reasonable to say that "prompt engineering" falls squarely in the realm of "technology concerned with the use of a machine".
[^1]: https://github.com/brexhq/prompt-engineering#why-do-we-need-...