I will present some Agile terms & explanations in this post. Before getting into explanation, let us review couple of important questions.
Question: I know all tools, processes & familiar with practices of Agile methods. Can I go ahead and follow Agile in my Project today?
Answer: Nope. Agile is more than just mere practices & terminologies. Agile is a mindset. It requires a change in work culture which boils down to organization culture. Agile advocates bringing people together in single platform (by a shift in the mindset) than just following the defined processes.
Agile Manifesto’s first statement says “Individuals and interactions over processes and tools”
Agile is flexible in terms of processes, tools and you are free to customize/tailor-made them based on your project need. But it is requires constant interaction & collaboration between people with mindset to deliver value to customer through developing usable working software. That is the complex part everyone forgets to appreciate in early stages of Agile adaption & struggle with failures later on.
Question:Why Agile is a great phenomenon you should follow in current economic trend?
You can consider following Agile methodology due to following reasons:
1. Even if you fail, you will fail faster & fail cheaper
2. Providing value to customer by providing important features fast so ROI will be better
3. Will get faster feedback which is good to take corrective steps well ahead before it becomes blunder later on
“Daily Scrum” is a short (approx. 10 – 15 minute), daily recurring, stand up, status meeting conducted mandatorily during the sprint & everyone expected to attend including Scrum Master. Scrum team need to answer 3 questions –
- What happened yesterday?
- What is the work plan for today?
- What are the obstacles exist?
All answers should focus on status based user story and no general discussions.
“User Story” is Scrum term for user requirements. It has short descriptions of user/customer valued functionality that is used for planning & act as reminders to have conversations with customers.
A user story generally has 3 sections: <Who>, <What>, <Why> of a functionality.
Example: As a <Who:Manager> I need to <What:view orders submitted to me> So that <Why:I can take action on those very fast>.
User story can hold short test descriptions that can be used to decide whether story is done. User stories are written in a card that is size of sticky notes, so it needs to have a phrase or two that act as reminders to hold the conversation & notes about issues to be resolved during the conversation. If required, team can use backside of the story card to list testing related notes.
A good user story should have six attributes (acronym INVEST
(I)ndependent – No dependency with other stories so that it can be executed in any order & can be prioritized based on value to the organization.
(N)egotiable – User stories are functional requirements in business terms but they are not contractual agreements. Details can be negotiated & modified in a dialogue between customer and dev team.
(V)aluable– Understanding value of a functionality is useful in prioritizing & delivering top features during initial iterations. Value of user story captured insection.
(E)stimatable – Developers need to come up with time to complete each user story, so it should be estimatable.
(S)mall – User story needs to be small enough so that it can be accommodated in an iteration. Big user stories are called ‘Epics’ that may contain a 1) complex user story 2) compound (multiple) user story. Epics can be divided into multiple smaller independent user stories.
(T)estable – User stories should contain information with which test cases can be generated without much confusion & decision of done can be arrived.
A question often arises is how someone knows whether he/she is done with writing a user story, without having to flesh out all the details, as we had traditionally done within the waterfall environment. One can stop writing the story when:
1. The user cannot decompose a story into more end-to-end stories, meaning stories that touch all the layers of the application.
2. The team can derive tasks, ranging from 4 to 8 hours, to start their development work.
3. It’s possible to estimate the “point” of the story. 
There are many ways to help verify that the requirements are well written, above we saw INVEST rules for user stories. Another one is known as the CUTFIT
rules, which we used extensively to help validate the user stories.
(C)onsistent: A consistent requirement does not conflict with another requirement.
(U)nambiguous:The reviewers of a requirement statement should be able to draw only one interpretation of it, regardless of their role.
(T)estable: We should be able to create test cases for a requirement. If a requirement is not testable, trying to determine whether it is correctly implemented is a matter of opinion.
(F)easible: It must be possible to implement each requirement within the known capabilities and limitations of the system environment.
(I)ndependent: No “user story” should be dependent on another “user story”.
(T)raceable: You should be able to link each requirement to a user and to his goals.
“Sprint” is Scrum iteration time length(typically 1 – 4 weeks) in which development team work on certain prioritized set of backlog items and produce some tangible value to the customer. Sprints are time-boxed & should have same length throughout till the final product delivery. Generally, no scope change is allowed within a sprint but modification user story can be prioritized and included in subsequent sprints.
Each concept in Agile Scrum has one or more benefits (of course any item in this world also have drawbacks too!!!). Here are few benefits behind timeboxing of sprint –
* As Agile focuses on delivering value to customer, timeboxing compels prioritization of work that in turn increases focus.
* Whatever be the status of user stories, sprint comes to end exactly on timeboxed end date, so team focuses on completing all user stories planned for the sprint otherwise it will be added to next sprint.
* As number of items taken in hand (# of user stories) are limited in a sprint so items under development status will also be in limited number.
User stories are planned either by number of days or story points. If total product backlog measured as 150 story points & each Sprint length is determined as 30 story points (based on team’s comfort-ability in delivering the potentially shippable product increment), then there will be 5 Sprints/iterations (5 Sprints * 30 story points) for product completion. User stories that add up to 30 story points can only be planned in one sprint. At the end of each sprint, goal set for the sprint is achieved based on agreed definition of done.
One can give a day long lecture about “Product Backlog” as it is the heart of the Scrum framework. Let me put concise explanation about it.
The product backlog is a prioritized list of desired product functionality. It is a highly visible artifact that is accessible to all project stakeholders. A PB item can be a feature, change in existing
functionality, defect, technical improvements or even knowledge acquisition (prototype or POC development). Most PBIs are features – items of functionality that will have tangible value to the user or customer.A good product backlog should have DEEP attributes.
Roman Pichler, and Mike Cohn use the acronym DEEP to summarize key attributes of a good product backlog.
(D)etailed Appropriately:User stories on the product backlog that will be done soon need to be sufficiently well understood that they can be completed in the coming sprint. Stories that will not be developed for a while should be described with less detail.
(E)stimated: The product backlog is more than a list of all work to be done; it is also a useful planning tool. Because items further down the backlog are not as well understood (yet), the estimates associated with them will be less precise than estimates given items at the top.
(E)mergent: A product backlog is not static. It will change over time. As more is learned, user stories on the product backlog will be added, removed, or re-prioritized.
(P)rioritized: The product backlog should be sorted with the most valuable items at the top and the least valuable at the bottom. By always working in priority order, the team is able to maximize the value of the product or system being developed.
Defining & documenting product backlog item is called Grooming. Amount of work in a product backlog is executed in multiple iterations called Sprint & sprint backlog is created with subset of high-priority items in the product backlog. At the end of a sprint, in case any item is still pending or new items found they will be inserted into product backlog in the correct order to be worked on in a future iteration.