Individuals and interactions over processes and tools: how ChatGPT can make new Product Owners’ learning curve a bit less steep and painful, while always preserving the agile essence of this key role

Anytime we explore anything in the work area, we do this by remaining adherent to the Agile Principles.
E.g., when approaching to Team Productivity and Management tools (e.g., Jira, Azure DevOps, etc.), what we should do is to coach people through them and, only after that, helping them to use that software efficiently.

However, remaining loyal to Agile doesn’t mean at all to become Agile fundamentalists, dogmatists, nor extremists; instead, we want to remain flexible and open to experiment, exploring new ways in doing things and achieving better results.

However, anytime I’ve lost my way to the “Agile home“, the consequences did not didn’t wait around too much to appear…and, the later they came, the worst the situation to be rectified. Therefore, in this case, some skepticism about ChatGPT is very normal but, if you take it in the right way, it could be incredibly useful and, sometimes, a game changer.

After having had some interesting discussions with my colleagues in the past days, this morning I played around a little bit with ChatGPT trying to understand how to help new Product Owners enhance their capabilities in understanding user needs, translate them into user stories and virtually simulate the system they have to build in order to rapid test it, learn from their mistakes and see if there’s any ambiguity or lack of functional scope.

Prompt Engineering

Let’s clarify that I am not at all an expert, thus let’s tiptoeing into this domain with a high level explanation of what is prompt engineering and why it is so important when playing with Large Language Models (LLMs).

Prompt Engineering can be thought as the process of formulating questions or statements that we want to give as inputs to the model, being as much as possible clear, concise and specific: the more you will do so, the higher the likelihood to get back qualitative and precise responses.

There are a number of existing patterns that you can use to predispose the LLM to answer and “think” in certain ways. For example, the Persona Pattern sets the LLM to take a certain point of view or perspective of a person who is expert or very knowledgeable of a certain topic (Persona) and then give “laser-focused” replies.

Indeed, this practice goes far beyond just posing questions to GPT bots: it can be thought as the art of knowing the right way to frame inquiries, being able to actively influence the type of responses a particular prompt might elicit.

The Challenge of Neophyte Product Owners

Any Product Owners who is new to this role, very soon has to deal with user needs and requirements, transform them in user stories and hope that:

  • are written in a consistent and understandable way
  • user are small enough, independent, testable and estimable

Additionally, the practice of backlog management is such that it could happen any time, according to the emergent very nature of Agile and the backlog itself.

Therefore, a Product Owner needs to be sure that all the necessary user stories for the system that need to be build, are actually documented in the Backlog. Additionally, the backlog should not have overlaps between stories or, even more important, inconsistency between some of them (e.g., user types with different names, different behaviors in doing the same thing against the system, too generic descriptions, etc.).
We all know that is a very difficult, if not sometimes traumatic, task to be done.

Here’s when ChatGPT comes into play.

Disclaimers

First of all, disclaimer #1:

What is reported from now on, needs to be intended as an experiment,
a test on how LLMs and related bots, can be used for the sake
of possibly improve how to coach people in embracing Agile principles
and learn how to apply its related practices, through accelerators like ChatGPT

For no reasons at all this must be intended as a substitution
of Agile roles, any Agile core activities, nor avoiding or delegating any responsibilities  

Then, disclaimer #2:

If you copy and past the prompts below,
do not expect to obtain the identical results,
but the overall behavior should be consistent

…this last one was easier :o)

The Agile Requirements Simulator

Now:

what If we could “program” ChatGPT in such a way as to “behave” as an experienced assistant
able to acquire a series of user needs, requirements and user stories,
simulate the to-be-built system, and help finding any possible inconstancies?

Well, having a personal assistant like this one, for sure, would be a great help for anyone who needs to step in a new pair of “working shoes”: think for a moment to new or junior Product Owners.

As a convention, what we will report in “superscripts and in italics” represents our input, everything that shows a blue bar on the left is a response of the bot.

Let’s start.

Let’s tell ChatGPT it needs to act as a Requirement Simulator:
“Act as a Requirement Simulator. I firstly insert requirement specifications (RS:) or user stories (US:). Use the requirements to guide your behavior. Then, I will insert scenarios and you will tell me if that is possible given the scenarios and in case it is not possible write the missing requirement needed in the format of a user story.”

Absolutely, I can help with that! Feel free to provide the requirement specifications (RS:) or user stories (US:), and then we can proceed with the scenarios.

Then we proceed with inserting some basic requirements:
“RS: user need to login to use the system; RS: users need to register to set user name and password”

Understood! I have the following requirements noted:
RS: The user needs to log in to use the system.
RS: Users need to register to set a username and password.

Now let’s introduce the first user story about user creation, and see what happens:
“Add this US: As a new user I want to insert valid user name and password, presses confirm, to acquire the status Registered User”

Thank you for adding a user story to the requirements. You now have two requirement specifications and one user story to guide our evaluation

Now let’s introduce a coarse-grained user story of how to become a Premium User:
“Add this US: as a Registered user by using the user detailed form I want to submit a payment to become Premium user”

Understood! Now, we have two user stories:
1. US: As a new user I want to insert valid user name and password, presses confirm, to acquire the status Registered User.”
2. US: As a “Registered” user, by using the user detailed form, I want to submit a payment to become a “Premium” user.

Let’s move forward and insert some cirteria constraints for the password:
“RS: password must be 8 characters length and has to contain 1 capital letter and one number”

ChatGPT’s response shows all the items we have available in the requirement system:

Great! We now have the following requirements:
1. RS: Users need to login to use the system.
2. RS: Users need to register to set a username and password.
3. RS: Password must be 8 characters in length and has to contain 1 capital letter and one number.
4. US: As a new user I want to insert valid user name and password, presses confirm, to acquire the status Registered User.”
5. US: As a “Registered” user, by using the user detailed form, I want to submit a payment to become a “Premium” user.

Now we can do a step further and ask the simulator, given the requirements it acquired, to show a possible form that allows a new user to register:

“I am using now the system. I am new to the system and want to register. Please provide how the form should look like”

Let’s raise the bar, what about describing a potential registration form?
“Hey, I am now using the system made of requirements specified. I am new to the system and want to register. Please provide how the form should look like”

Registration Form:
1. Username: • Field Type: Text • Validation: Unique (not previously used in the system)
2. Password: • Field Type: Password (masked input) • Validation: Must be 8 characters in length, contain 1 capital letter, and 1 number
3. Confirm Password: • Field Type: Password (masked input) • Validation: Must match the password field
4. Submit Button: • Action: Upon pressing, if the username and password meet the criteria, save the user into the database as a “Registered” user.
5. Help or Information (Optional):
• A brief description or link to information explaining the requirements for username and password (such as the password criteria)

This form aligns with the requirements you’ve provided. Once the new user has filled out the form with a valid username and password, they can press the “Submit” button to register and become a “Registered” user in the system.

Well, as an assertive assistant, ChatGPT suggest also some improvements:

Example of Possible Additional Fields (if needed). Depending on the system’s specific needs, you may also include:
Email Address: For account recovery or notifications.
Agreement to Terms of Service or Privacy Policy: Often required for legal compliance

Now, being a neophyte Product Owners, we are looking for advices on email validation:
“Create RS: containing the basic information to validate the Email Address”

RS: Users must provide a valid email address during registration. The system must verify the email address by sending a confirmation link or code to the provided email. Users must click the link or enter the code to complete the registration process.
Email Address: • Field Type: Text (formatted for email input) • Validation: Must be in a valid email format (e.g., user@example.com)
Email Verification: • Process: After submitting the form, the system sends a confirmation link or code to the provided email address.
User Action: Users must click the link or enter the code sent to their email to complete the registration.

What suggested seems to be absolutely reasonable and we want to exploit it by transforming in a user story:
“Transform the Email Verification into a user story and ask me if it needs to be added to the official requirements of the system”

US: As a new user, after I provide a valid email address and submit the registration form, I want to receive a confirmation link or code to my email. By clicking the link or entering the code, I can confirm my email address and complete the registration process.

The user story is not fine-grained, let’s refine and decompose it:
“This user story is too big and not fine grained. Please decompose it and create as many user stories to let them fine-grained and auto-consistent”

Certainly!
US1: As a new user, I want to provide a valid email address during registration, so that the system can send me a confirmation link or code.
US2: As a new user, I want to receive a confirmation link or code to my email after submitting the registration form, so that I can verify my email address.
US3: As a new user, I want to click the confirmation link or enter the code sent to my email, so that I can confirm my email address and complete the registration process.

Now it’s finally time to use the simulator:
“Let’s simulate the use of the system. I am a new user and I insert as User Name ’emiliano’ and as password ‘soldi'”

And here ChatGPT catches us at fault!

Certainly! Let’s proceed with the simulation. Based on the provided input:
• Username: “emiliano”
• Password: “soldi”

We’ll need to evaluate the input against the Official Requirements (OR):
1. RS2: Allows users to register by setting a username and password.
2. RS3: The password must be 8 characters in length and contain 1 capital letter and 1 number.

The username “emiliano” seems to comply with the system’s requirements, as no specific rules have been defined for the username.
However, the password “soldi” does not meet the criteria defined in RS3, as it is only 5 characters long and does not contain a capital letter or a number.

Great :o)

Now let’s export this in a CSV compliant with Jira Align and we are ready to discuss them with the team:
“Now, create a formatted CSV list of the user stories compliant with Atlassian Jira”

The result from ChatGPT is a table reporting the correct CV format, headers and contents for being imported in the tool.

What’s Next

ChatGPT, of course, cannot be used as a backlog nor as a repository of your user stories or requirements in general. The example above was intended as a quick exercise on how to exploit it for your advantage, accelerating our understanding of the product to be built.

A possible use is to apply what above described to limited and specific backlog areas or functionalities. For instance, you can use that simulator for stories belonging to a specific Epic or Features and, stating from there, moving on exploring, learning and improving.

Actually, what you need now is to get more in confidence with LLMs, GPT bots and, moreover, with Prompt Engineering, which has the power to help save lot of time and create far rich and more qualitative results

Conclusion

What we wanted to test was how using tools with the right Agile mindset does not detach individuals from each other, nor depower them. And ChatGPT ant its usage, needs to be thought as such.

In reality, in this example, new Product Owners, accompanied in this simulation by Agile Coaches, can literally launch themselves into their new role, not neglecting the intrinsic responsibilities neither forgetting the magical Agile essence in it.