User stories - Card, conversation and confirmation [closed] - extreme-programming

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
I don't understand a thing about the Card, Conversation, Confirmation formula for user stories.
I don't understand if the conversation and confirmation part must be written down or they remain as a dialogue, in particular the CONVERSATION part.
To be clear: is it right if a write down ALL these things in user stories? (see example below)
Or do I have to write down only the CARD part?
Example:
CARD
As a user of a coffee machine, I want to be able to purchase a beverage.
CONVERSATION
- The user will not be able to purchase a beverage if they do not deposit enough money into the CoffeeMaker
- A user's money will be returned if there is not enough inventory to make the beverage
CONFIRMATION
1 user introduces the amount of money needed to purchase the beverage
2 user selects the beverage
3 user gets the beverage

The 3 C's is a saying used to serve as a reminder on what is important when using User Stories.
A simple card to write down the requirements - as opposed to a heavy weight document.
Having a conversation - collaborating to define the requirements and understand the value.
Confirmation - agreeing on the acceptance criteria, so you know when you are done.
There is another saying which sums up the idea behind User Stories nicely. "The card is a place holder for a conversation". This highlights that the conversation is the important part, not the card artifact. The card can be discarded once the feature has been developed and automation tests written using any suitable acceptable criteria.
The format of a User Story will typically follow:
As a (role) - This can be an end user or a business proxy
I want - A description of what need to be done
So that - the definition of the value
An attempt at your scenario
As a vending machine customer
I want my change returned
So that I do not loose my money
The confirmation part could just be bullet points on the back
Change should be returned if the customer does not put in enough money and then selects a beverage
Or you can use the context specification style, a BDD (Business Driven Development) technique
Given a customer does not put in enough money
When they select a beverage
Then their change should be returned
If you would like to know more I would suggest researching the INVEST principles and reading Mike Cohn's User Stories Applied.

You can do whatever you want ;), from writing down everything to memorizing everything and writing nothing. Personally I write everything down, so the next dev that picks up the story can understand as much as I do and pick up from there.

Related

How to get started with stripe payments with firebase and iOS? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 1 year ago.
Improve this question
I'm trying to get started with stripe to build out a Patreon like app. I've done a lot of searching and have even started with these docs from Stripe. Unfortunately, I am encountering many problems, probably as a result of a faulty integration.
What I am using:
I am using Firebase database.
Express accounts in stripe
iOS
What I am trying to achieve:
User1 can create a subscription of his chosen price.
User2 can join/pay the subscription.
User1 gets 70% of his money made from the subscription, and I the developer get remainder.
What I have done so far:
Created a Stripe account and set it up at a very base level.
created an Xcode project and included code up until step 2.3
I have setup firebase functions at a base level, and have some code in there from steps up to 2.3 in link above.
What I would like is to have a clear starting point, and path to follow.
How do I get started in achieveing this goal?
Just commenting on the Stripe portion -- what you can do is have a page where your content creators (i.e. User1) can create a Product. Each Product must be tied to a Price:
On another page, retrieve all active Products so content receivers (i.e. User2) can subscribe to it.
Full details can be found at https://stripe.com/docs/billing/prices-guide.
For the revenue splitting, Stripe doesn't seem to support this. Your only option is to do a payout to your business bank account, then further disburse the 70% to your content creators. For this, you must be able to match payment records on Stripe to your database, e.g. design your database in such a way it can answer the SQL query "what is the total amount paid to this particular content creator within a given time period?".

How to handle a change in acceptance criteria for a user story? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
I'm interested to find out how people deal with changes to acceptance criteria of user stories on a process level.
Example:
You write a user story with acceptance criteria for feature XYZ. That
user story gets implemented in a sprint of release 1.0. Some time
later for the 1.2 release the product owner wants the acceptance
criteria to be different (e.g. 1 minute timeout instead of 30
seconds).
How do you handle this change? How does it change the status of your original user story? We're using JIRA/JIRA Agile and I'd be specifically interested in hearing if you e.g. re-open your closed user stories and work on them in a new Sprint.
We're using Confluence to write our product specifications and the user stories in the PS are loaded directly from JIRA via a query. If one was to change acceptance criteria of the original user story and reopen it - how would one ensure that the product specification for version 1.0 wouldn't change?
EDIT:
I need to add some more information about our process: every user story has as well as the acceptance criteria some steps which can be used to test these criteria. These steps are used to generate a verification/test protocol which is used to check that all product specifications have been implemented properly.
Now this means a change to the user story would directly affect even already reviewed and signed off product specifications and test protocols since data is loaded via the jira query. I guess that this might not be an adequate way to pull the content into Confluence, something more permanent seems advisable.
Even if we weren't using these direct/dynamic queries, the question is still valid: how does a change in requirements/acceptance criteria affect the user story?
I would consider this to be a new user story, like "As a user, I would like the timeout increased to 1 minute for reasons best known to myself".
So after the product has been released the Product Owner comes back to you and says that they would like:
1 minute timeout instead of 30 seconds
This could be deemed an issue; It's not a bug as the timeout facility works fine, it's just that they have an issue with the period. Hence you could create an issue, associate it with the original story, and then break it up into tasks to implement this change.
However:
how would one ensure that the product specification for version 1.0 wouldn't change?
If the original product specification stated a timeout of 30 seconds, but you have now changed it to one minute, then there is no getting away from the fact that the specification has been changed. Creating an issue and linking it to the original story will mean that you won't need to edit the original story though.
Thank you everyone for your answers. We have since found a way suitable for us to handle changes to user stories.
What we ended up with are the following principles/steps:
Once a software version has been released all user stories which are part of the product specification for that release must not be changed anymore
If the acceptance criteria of the user story should be changed after the release, a change request is filed and linked against the story
The change request is then processed - in the course of it the affected user story is cloned, adapted to the changed acceptance criteria and then added to the product specification for the next release while the old user story is removed
The new user story can now be implemented during a sprint
This way we have a product specification for v1.0 which contains the unchanged user story and a product specification for v2.0 which contains the updated user story.
The important fact is that years later you could pick up the product specification for any version and test it against the acceptance criteria and still get a PASS. This wouldn't be the case if the original user story had been modified.
I hope I managed to explain this in sufficient clarity. Please let me know if I need to elaborate on any parts of the solution.
I would say that your original story remains good. Given that there is value in the change of timeout, you have a clear need to change the acceptance criteria for your original story. This is especially true where your tests are automated. I would create a new story:
As a
I Want to change the timeout value for fraggle thrunge bracket manipulation
So That
Writing this new story will focus the mind wonderfully on the value that this change will bring about. If it adds no value, then don't do it.
You can not change the acceptance criteria of the user story once it is done(yes, refer to definition of done).
If the product owner needs to change the user story acceptance criteria, he/she has to create new feature/user story with "Acceptance criteria".
If the change has come in the middle of the sprint and existing Acceptance Criteria will not make any sense to project, remove the user story from the sprint backlog and add this to new(change should not be accepted in the middle of the sprint) sprint with new/modified acceptance criteria.

Rails: CouchSurfing-Like Database Structure [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
So my idea is to have an user A requesting any number of arrangements (any service) from another user B. Both user A and B can leave feedbacks to each user B and A (only one per user and service). Just like CouchSurfing
I had some thoughts about the setup on the database and ruby on rails, but would be glad if you would have a quick look on it, since I'm still a beginner seeking for knowledge.
Lets have a sample scenario:
But first a quick note: It's important that every user has the ability to become an acceptor or requestor.
User A requests this service off another user B (in this case user A becomes the Requestor and user B becomes the Acceptor, who needs to accept the request of user A). Once user B accepted the request, an Arragement is built having its primary key made of the ids of user A and B. Inside this Arrangement Table are several informations related to the arrangement. Once the arrangement took place, both user A and B are allowed to give feedback to the other user (but only one!)
This is why I have set up seperate tables for the Acceptor, Requestor and Arrangement. I want to control how many feedbacks a user can give database-wise.
Now each user has (for sure) a user-show-page where all of his received feedbacks are shown. Means: Every user has N feedbacks (or messages, if you see it database-wise). And that is why I extracted a Message-Table out of the Feedback-Table
In short: It should be very similar to CouchSurfing. E.G. the stay at ones home is an arrangement and both the host and guest can leave one feedback to oneanother.
What are your thoughts on this setup? Is it good/bad? How can I make it better?
Sounds reasonable, but your design limits A and B to having only one Arrangement with A as Requestor and B as Acceptor.
Generate an int id for the Arrangement to use as PK (and as the FK in Feedbacks) and you're there.

Pass quiz score to Desire2Learn Valence via API

I am trying to integrate an external multimedia application with Valence. The application presents the user with quizzes along the way, with each question mapping to a learning objective. Using the API, how can I send the results of each quiz/objective to D2L so it's part of the overall course grade?
Thanks for your question, it's definitely a good one that I'd love to hear more about!
Right off the top, I'll say that unfortunately the short answer is that Valence currently doesn't support retrieving quiz information, nor accepting question responses to contribute to the user's quiz grade in the grade book, and competency-based evaluation. We recognize this is a big gaping hole in Valence, but the reason why we don't have it yet is due to an assessment tools re-architecture which we're embarking on now, which will put things in place to expose more assessments tools functionality via Valence.
That said, I'd love to capture more details about your use case so that we # D2L can be well-positioned to support it in the future.
Can I assume that you would want to perform the quiz create, update, delete operations, inclusive of learning objective question association, directly in D2L, and not via Valence?
Get Questions: Would you be looking to retrieve all quiz question information, providing a quiz identifier?
Submit Responses, and Trigger Evaluation: Would you be looking to submit all quiz question responses, in order to trigger automatic evaluation, to populate the quiz's score in the grade book, and contribute to competency-based evaluation? Would you ever have a case where a question response was provided which required manual evaluation (such as a short/long answer question type)? If so, how would you like to see that handled?
Many thanks again, I appreciate your time to communicate this request.

Recurring payment or special category. Question about billing [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking for code must demonstrate a minimal understanding of the problem being solved. Include attempted solutions, why they didn't work, and the expected results. See also: Stack Overflow question checklist
Closed 9 years ago.
Improve this question
I'm working on an ruby on rails app that has a special billing method.
I'm creating a store where users can reserve products but will not get charged for these products until a certain amount has been reached. This amount cannot be quantified by time so I'm wondering if this is a recurring payment. However, accounts will have to provide a payment method in order to reserve these products and it is cumbersome to have them give their information every time. What's more is that I need their information so I know they want the product but I won't charge it right away.
What to do?
First you want to capture card details up front, but not make any charge.
That can be done with most payment service providers (PSPs). Usually you will redirect from your site to a site hosted by the PSP which captures the card details. Once the user leaves that page they will redirect back to your site, and you will receive a payment Token, which is essentially a GUID which can be used in future transactions instead of a card number.
Each time you want to take payment from that card you can submit your Token Id and payment value to the PSP for authorisation and settlement. Bear in mind that its entirely possible that the authorization could fail or be declined.
This is technically known as a recurring payment in that there are potential complications which your PSP should handle for you, such as credit cards expiring, or being replaced. Decent PSPs will make use of the Visa Account Updater service, or the equivalent Mastercard Automated Billing Updater to ensure that behind the scenes the card number is automatically updated. Worth checking that your chosen PSP provides this capability.
I recommend outsourcing this to a company that handles payments, I advise against PayPal because of charges. You will end up getting into a lot of trouble if you are writing everything from the ground up.
Beyond that I am assuming this is a real world scenario. In that case I wouldn't consider it a recurring payment, on account of it is a once and done payment. Forgot to add, store their information with a 3rd party vendor or get really good at knowing the rules of what you can and cannot store online.

Resources