Agile Estimation – Story Points and Ideal Days


In Agile, estimating the project duration requires the estimation of the size to happen in first place. Size estimation of a user story or a feature or the entire project can be done either by story points or ideal days. Mike Cohn dealt this in great length in his book “Agile Estimating and Planning”.

Team estimates the size based on their experience (compared to expert judgement in PMBOK), analogy (compared to analogous estimation) or splitting a big story into smaller pieces and estimating it (compared to decomposition in PMBOK).

Let us see very high level overview of these two agile estimation methods:

Story points – Story points will be assigned to each user story based on its nature expressed by the team (big/small, complex/simple, risky/straight-forward, etc). Story points are relative i.e. simple user story carries 5 points, complex one (twice that of simple one) carries 10 points.

Ideal days – Ideal days are ideal number of days taken for a user story based on the assumption that the team works on the user story and only that user story (without any interruption).

In general, Story points are widely used as a measure of size in Agile but it is left to the team which one they want to use – Story points or Ideal days – based on their need.

Human Life is Scrum!


 

When I started thinking about Scrum principles in a wholistic way, I felt Scrum was closely knitted with all important life principles. That’s the reason why anyone can relate Scrum to life easily. Here are the few comparisons.

* In life what we receive as we grow are incremental effect of what we did yesterday. We build whole life day-by-day & of course one day at a time.

* One needs to remove obstacles in each challenge they face to produce the expected result.

Life=Scrum

* Retrospection of past is what more important in increasing purpose in life hence it will lead to successful life. At regular intervals, one need to list down what to be started newly, what to be stopped permanently and what needs to be continued to get expected result. We iterate those activities or behaviors what was acclaimed as good.

* One can think that entire life goals are like ever growing Product Backlog. At any given point of time we work on those highest important goals. Once we complete it we move to next. If we find the situation is not suitable, we are move it to Product Backlog and even move it to lower priority.

* Upfront planning of entire life is not possible – even planning the next day completely is not possible! Also, we will not be having complete information on life goals (yearly, monthly) when we set it. We get more details once we pick it up in hand when it pops up as highest priority one . We demonstrate the goal output to one or many people around us & take feedback on that too.

As I said, one can relate Scrum to life but similar to Scrum, adapting what is mentioned for better life is really tough.

Twelve Principles of Agile Software


Agile Principles - 1 to 6

Agile Principles - 7 to 12

Mind Map created based on Principles behind the Agile Manifesto (http://agilemanifesto.org/principles.html) available in http://agilemanifesto.org

Agile Scrum – Terms & Explanation


I will present some Agile terms & explanations in this post. Before getting into explanation, let us review couple of important questions.

Here is the podcast format of Q&A:

Here is the text format of Q&A:

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?
Answer:

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

“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 –

  1. What happened yesterday?
  2. What is the work plan for today?
  3. What are the obstacles exist?

All answers should focus on status based user story and no general discussions.

USER STORY

“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. [5]

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 CUTFITrules, 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

“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.

PRODUCT BACKLOG

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.

References:
  1. http://www.mountaingoatsoftware.com/blog/make-the-product-backlog-deep
  2. Essential Scrum: A Practical Guide to the Most Popular Agile Process By: Kenneth S. Rubin, 2012
  3. Becoming Agile: … in an imperfect world By: Greg Smith; Ahmed Sidky, 2009
  4. http://www.scrumsense.com/wp-content/uploads/2009/12/DoBetterScrum-v2.pdf
  5. http://agilepmstudent.blogspot.in/
  6. Scrum® in Action: Agile Software Project Management and Development By: Andrew Pham, 2011

Book Reading & Agile Scrum Method = An Analogy


Learning is easy when you develop an analogy with known & easy to remember items.Here is an analogy that you will remember for life about Agile methods.

Agile is like reading your school text-book. Yes! Let us go back to your school days.

Image

Start of the year, Teacher provides you a text-book (say Science subject) that have 12 chapters totaling 400 pages!!! If teacher ask you to study the whole text-book and write exam at the end of the year how do you feel? You may feel it will be very difficult, boring & you keep the book always in hand but don’t think you studied all content.

Take this way – Teacher says ‘Each chapter is around 35 pages long. I am going to cover one chapter for every 15 days. End of each chapter, I will test you with questions taken only from that one chapter. We will follow this method till we complete all 12 chapters.” Will it not give you entirely different feel?

One clever student asked “Pages for each chapter differs in that case what do we do madam?” Teacher told “You are right. Okay. Based on chapter size, we will make it 10 (for small chapter), 15 (for average chapter) and 20 (for big chapter) days.

Suppose she goes ahead and say ” We are not going to go in same chapter order. I will cover all important chapters first and then we cover other chapters.”  That make your reading even more interesting. Right? So, after 6 months time, where you will be? You are done with reading & understanding the entire text-book content!!!

Agile is methodology that is based an iterative, incremental software development processes. A group of methods implements Agile principles out of which one is called Scrum. Let me restrict my analogy to Scrum method. Book reading explained above is also an iterative, incremental process where we are performing study of whole book in given time period.

Here is the terminology match between text-book reading & Scrum:

  1. Entire Text Book with chapters ordered based on importance Product Backlog (A prioritized list of high-level requirements for a product)
  2. Each Chapter Sprint Backlog (A prioritized list of tasks to be completed during the sprint)
  3. Each subtopics in Chapter User Stories (an independent, negotiable, valuable, estimable, small, testable requirement (“INVEST”))
  4. Chapter Completion Time Sprint (A time period (typically 1–4 weeks) in which development occurs on a set of backlog items that the team has committed to)
  5. Test after each chapter Sprint deliverables (all features/deliverables completed in the sprint)
  6. Evaluation of test output Sprint Retrospective (Meeting with team to find out – what went well during the sprint? and What could be improved in the next sprint?)
  7. Pages finished & to yet complete in current chapter (goes down to 0 as we complete each page) Sprint Burndown Chart (Chart that shows daily progress for a Sprint  over the sprint’s length – remaining work in the sprint backlog)
  8. Pages finished & to complete the whole book (goes down to 0 as we complete each chapter)Release Burndown Chart (amount of work left to complete the target commitment for a Product Release)
  9. Rate at which each chapter is completed Veolocity (The total effort a team is capable of in a sprint)

With this analogy I hope you get fair idea about Scrum terms & its usage.

How Agile Project Management is different from Traditional one?


There is a proverb, You can’t teach an old dog new tricks. But this is not true in Project Management. Managers need to learn new techniques and adapt them as quickly as possible to bring project success.

Traditional project management methodologies widely used across different fields. It involves very disciplined and deliberate planning and control methods. The traditional PM approach, is a linear approach where you try to get it all done at one time. Everything should be planned before start executing tasks in the defined order. Traditional project management is best suited for engineering projects like construction, but it is used in all fields nowadays including IT.

The Standish Group 2006 Survey on IT projects revealed,

* 46% of projects over time or budget & 19% of projects failed;

* $80 -145 billion per year is spent on failed and canceled projects;

* Meta group estimated 60% – 80% of project failures can be attributed directly to poor requirements gathering, analysis, and management.

In today’s IT world, organizations needs improvement in performance and they expects for – rapid product delivery, increased revenue, more flexibility, coping with change, good quality. Agile Project Management(APM) meets these expectations excellently especially for IT projects.

What is Agile Project Management?

Agile Project Management (APM) is a way of managing projects to deliver customer value via adaptive planning, rapid feedback, continuous improvement and intense human interaction and collaboration.

— Sanjiv Augustine

Agile methodologies are new approach in Project Management and it is effective for IT projects where requirements changes too often. In APM, processes are iterative & incremental. Agile Project Management is particularly appropriate for projects that have:

* clear project value

* innovative business requirements

* unstable requirements

* incremental feature-driven development

* early and active participation of stakeholders

* resources, time & budget are limited

* visual documentation

* collaborative co-located development team

References:

Sanjiv Augustine’s Web Site: http://www.sanjivaugustine.com/

Principles behind the Agile Manifesto: http://agilemanifesto.org/principles.html