Wednesday, April 21, 2010

Estimation in Agile

Estimation in Agile is quite huge a topic in itself so here just i would give you a fair idea about estimation techniques in Agile
To begin with Agile is an interative incremental model where features/defects are addressed based on priority/severity in sprints/iteration(can be of two or three weeks).These set of features or defects are called as Product Backlog Item and each card is considered as a Story Card.Before the start of the sprint we have an estimation done for all the story cards.Estimation points are helpful in knowing the effort and complexity of the feature and also in determining the Team Velocity and generating Burn Down Charts .Ofcourse other than these two there are many other utilities you can derive from it.
There are basically two ways of estimating the story cards ie.,T-shirt sizes or Story Points(which is generally in fibonacci sequence).Please do keep in mind that estimation is always relative and it may or may not be correct...and also it may vary depending upon the knowledge of the person,familiarity with the system,Previous experience etc.
Estimating cards in terms T-shirt Sizes - we can mark a card as FreeB,Extra Small,Small,Medium,Large or Extra Large.Its more kind of a rough estimate mentioned in tshirt sizes.
Estimating in terms of Story Points - Putting it in terms of Story Points it can be marked in fibonacci sequence:1,2,3,5,8....The reason for it being in fibonacci sequence is the other card is sum of the first two card ie., the effort required to accomplish the third card task would be equal to the effort required to complete the first two cards task.It is considered a good practice to break the card of size is greater than 8(extra large) to cards of smaller sizes.This is done to reduce dependency and also to make sure that the feature doesnt take two continous effort or time because a large card implemented can hav lot of dependent code and modules.Below metioned are two most popular ways for estimating the story card :-
Planning Poker -In this technique everybody is given a card of various sizes and the estimate is asked.Everybody puts in their individual estimates .Finally all the cards are opened and majority among the card size is taken into account.
Analogous Estimating -It is an estimation technique where the entire team sits together and estimates the size of the story card.
Estimates or Story points is a measure of effort and complexity.And also your story points may vary from person to person depending upon the experience,knowledge and expertise.Finally a story point is given to a card for common consensus reached.
Please note that estimates includes the entire effort which can be spikes(R&D) required for the feature to be developed,requirements analysis,design,development and testing.
And card is marked as "COMPLETED" in Agile only when the card is tested and ready to be delievered.Development complete is not considered as complete in Agile :).
Estimates may or may not be correct and may have variance with the actual as many hidden factors say for ex-setting up your machine,Network issues,Wrong understanding of the requirement,Not clear of the scope etc such would come into picture.But remember its always an estimate not an actual.

At the end of each sprint or iteration we can determine the team velocity and burndown chart.The two things are described as under:-
Team Velocity: Velocity is how much product backlog effort a team can handle in one Sprint. Velocity is usually measured in story points or ideal days per Sprint. This way, if the team delivered software for 30 story points in the last Sprint then their Velocity is 30.

BurndownChart: This burndown chart is generated at the end of every iteration.Basically its variance between story points and time.An Ideal burn down chart is a straight line making 45 degress with X(Time or Days) and Y(story points or Effort) axis.i.e., As per burndown the effort should always decrease with time.But in realistic scenario it never happens since there is always a variance between estimates and actual.But the whole idea of estimating is do get more accurate estimates with time and also help in determining the velocity of the team which is number of story points a team can accomplish in any given iteration.
Basically two or three successful iteration are required to determine the average velocity of the team.Velocity of a team is number of story point you can deliver in the given sprint.
Burn down charts generated at any point in the iteration depending on when you need it..

The above article is just an overview of estimation in agile.Please get back to me in case of any queries..