I have been thinking about the practice of “prompt engineering” recently. Specifically, whether prompt engineering should be thought of as a sort of new, high-level, programming language or whether is it simply a temporary practice necessitated by our currently imprecise, early-stage, AI models.

If prompt engineering really is closer to a new programming language then, as a “Computational Thinking” teacher, that has some real-world implications for my curriculum moving forward.

Simon Willison recently wrote a compelling defense of prompt engineering on his blog:

Prompt engineering as a discipline doesn’t get nearly the respect it deserves… Think about what’s involved in being a truly great author of prompts.

First, you need really great communication skills. Communicating clearly is hard!

When communicating with other people, the first step is to figure out their existing mental model—what do they know already, what jargon is appropriate, what details are they missing?

Talking to a language model has similar challenges: you need to be confident that it understands the wider context, such that the terms you are using are interpreted in the right way.

[…]

Comparisons to programming are interesting. With programming, you have a fixed, deterministic target. It’s possible to learn every inch of Python or JavaScript or C to the point that you can predict with absolute certainty what a piece of code will do by looking at it. And you can reinforce that by writing tests.

That’s not the case with language model prompts. Even the people who trained the model won’t be able to predict the output of a prompt without trying it first.

[…]

So no, I don’t think the need for prompt engineering is “a bug, not a feature”—and I don’t think it’s going to become obsolete. I expect it to get deeper and more sophisticated for many years to come.

If prompt engineering does stick around as a valuable skill, I will be excited to see the effects it has on the perceived accessibility of programming to more traditionally creatively minded individuals. Although I think it is a largely inaccurate stereotype, programming is widely perceived to be a non-creative, analytical activity. Prompt engineering, though, clearly requires a huge amount of creativity! Just think about what the field of computation would look like today of programming began its life as written prompts instead of machine code; it would probably be a part of the linguistics department instead of mathematics!


To finish things up, here a bunch of resources I have collected recently about prompt engineering: