As a product owner, you want to convey to your team the context around a desired feature. Who is it for? What do they need? Why do they need it? The more of this context you provide, the sooner your team will deliver the needed feature. Interestingly, the same holds true for generative AI tools. Over time, I have learned to carefully craft my prompts in much the same way I write user stories. If I leave too many assumptions unsaid, the machine’s responses are more likely to miss the mark for me. In order to get to the response I need faster, I use the same verbose approach that leads to better user stories.
A typical user story follows this format: As a [ROLE], I want to [ACTION], in order to [GOAL]. Filling in the blanks seems like a straightforward exercise, but it has its nuances.
As a [ROLE]
For whom are we building this feature? It seems reasonable to assume that it is the person who will be using the feature, but that’s not always true. Consider the case where a teacher needs to send a communication to a student’s parent. Should we focus on the teacher? They will be the one using feature. But who cares the most about the communication? Maybe the teacher is legally obligated to send it, but more likely it is the parent who wants timely information to guide their student’s learning experience. So in this case, I’d go with As a parent, but don’t carve this one in stone yet. How you fill in the other blanks may lead you to reconsider the target role.
I Want to [Action]
What does whoever you filled in for the role want to have happen? It is tempting to go literal here, but also tempting to presume implementation. Do not think in terms of the system. Think about what is happening in the real world here. We want to create a feature whereby a teacher can send a communication about a student to their parent. I purposely used the word “communication” as a way to be implementation agnostic. I could easily have said “send email,” but doing that so early in the process may lock us into a path the proves counterproductive. If we’re confident that “parent” should fill the role, then we should go with I want to receive a communication about my student.
In Order to [Goal]
This is the most important part of the user story. True, you cannot build a feature without knowing what you need to build (duh), but without guidance on how success will be judged, you are just shooting in the dark. This informs the test cases the team will write and the acceptance criteria the stakeholders will use when you present the feature at a sprint review. But the goal speaks to more than just how the feature might be implemented, it also should inform how it is used. In our example, we will likely fill this section in with in order to react timely to a change in my child’s situation. This tells us that the implementation needs to ensure that the communication is perceived by the parent, not drowned out in a sea of other messages. This also means that the teacher should only use the feature for significant issues. If it is used too much, the parent may ignore it at everyone’s peril.
That’s all well and good, but what does this have to do with the prompts I write for ChatGPT? Consider your interactions with the development team. There will be a lack of clarity leading to miscommunications and wrong assumptions. We’re human, that happens. That also happens with generative AI tools, but here’s the difference: Your development team can ask follow up questions, like “In two parent families, do we need to communication with both, or just one?” No tool that I’ve used is able to do that. You have to anticipate the questions and answer them ahead time.
I like to write funny reminders for the weekly Ten Mile Square status meeting, but if the muse isn’t talking to me, I don’t have time to come up with anything better than a bad dad joke. Enter ChatGPT. It generates much better prose than I do and it does it much faster. I haven’t completely given up writing the occasional reminder, but the goal here isn’t to prove how funny I am, it is to engage the team.
The tool knows nothing about you beyond your prompts. Besides, are you asking for yourself or someone else? Who is the target audience of the tool’s response. The more the tool knows, the more useful the response. In my example, the who is not me. I am not pretending to be the author of what I post. The target audience is the team.
This is the most important part of the prompt and, in this case, you need to be explicit about implementation. Tell the tool exactly what you want and how you want it. Tell it about the size, format, style and whatever else you need the response to be. I have to tell the tool to limit the reminders to 1 paragraph. Otherwise, it will give me 3+ paragraphs, far too much text for our purposes. I want the response to be funny, but I need to tell the tool how to be funny. I found asking the response to be written in a certain style, like that of an author, comedian, or TV show provides the right amount of guidance.
This final bit, while not of the same importance as with user stories, can be the final bit that leads to the perfect response. This should be presented as explicitly and objectively as possible. Remember, we’re working with a machine here. For my purposes, the team needs reminding that we have a status meeting today. OK, yes, that’s not exactly true. Everyone has it on their calendars. However, that bit of information informs the response.
You may have to iterate. Perhaps there’s some nuance that you need to make explicit. Sometimes your prompt is well-formed, but for whatever reason, the tool isn’t able to give you what you need. That’s OK, rewrite the prompt. If your tool provides a feedback mechanism, like thumbs up or down, make sure you use it. This help teach the machine.
My typical prompt looks like We have a status meeting today. Write a 1 paragraph reminder in the style of Shakespeare’s Henry V that I can send to the team. And the response:
Hark, noble colleagues! On this morn, as the digital sun doth rise, we assemble in the virtual realm for a momentous status meeting. Let not thy spirits be daunted, for in this gathering, we shall share tales of conquests and challenges alike. As Henry V rallied his troops on St. Crispin’s Day, let us, with equal fervor, unite our efforts to conquer the tasks that lie before us. Gird thy loins, prepare thy updates, and join me on this digital battlefield, where together we shall march towards triumph and glory. Onward, dear comrades, to the status meeting of great deeds!
NOTE: the prompt for the image we used above is Photo of William Shakespeare giving a presentation with an easel wearing a doublet, sleeves, breeches, belt, ruff, and cloak. He’s at a board meeting with a long table with a lot of people there, cityscape in the background seen through large windows. This will be used in a blog post about how to write an AI prompt. We did have to add the Ten Mile Square logo ourselves. And the system didn’t seem to know who William Shakespeare is. Perhaps this is a result of trying to dial back the use of others’ intellectual property. It will be interesting to see how that issue plays out over time.
Ten Mile Square Can Help
Maybe not with the humor part, though some of us are very funny. But definitely with the user stories. Contact Us for a free consultation.