Agile – Are “technical user stories” allowed in Scrum

agileprojectproject-managementscrumuser-story

Are technical user stories allowed in Scrum? If so, what is the standard template for writing technical user stories in Scrum?
Is it the same As a <user> I want to do <task> so that I can <goal> ??

I have read in some blogs that as-a-developer-is-not-a-user-story,
but I have also read that Scrum does not mandate these. There are few blogs where they have shared user stories with system as user, its like as a <user who is not end user> i want to <system functionality> so that <some techinical thing>. So which one is the standard?

For instance, there are user stories like:

As a reviewer I want to upload photos of any hotel/food so that other users can see and like them

As a user I want to add photo comments so that I can explain my view better

Now for both these user stories, there is a big technical item – Saving and retrieving the image

So can I add a technical story titled "Image storing and retrieving mechanism", with the following description?

As a developer I want to develop a mechanism to store and retrieve images so that users can add/view images wherever required

Best Answer

Technical stories are allowed, but I would advise you to try to avoid them as much as you can.

For example, your story for saving and retrieving images can easily be written as two regular user-stories

  1. As a reviewer, I want my uploaded photos to be stored persistently, so that other users can view them at any time.
    (Note that this assumes that in your original upload story, the image will not be persistently stored after the upload. Although this might look strange, it is a valid way of splitting up stories to make them manageable.)
  2. As a user, I want to view uploaded images at a moment that is convenient for me.
    (This implies that stored images can be retrieved later.)

Technical stories should be reserved for work that is important for the organization, but not directly visible as a feature/functionality to the users. For example, adding load balancing to handle larger number or requests.

Related Topic