tags:

views:

138

answers:

6

Im the context of pair-programming ...how do you estimate? A 5 point story ...split in to 3 tasks...each task being swarmed by 2 members. Does it mean it mean it is finishable in half the time?

+4  A: 

You estimate using points. The number of points achievable by a pair is called velocity. Check this: http://en.wikipedia.org/Planning_poker

Pierre 303
+1  A: 

Most Agile methodologies suggest that you should estimate in points. However, there are many successful teams out there - including several advanced and highly productive Kanban teams - who estimate in hours. Points come with their own games, perverse incentives and problems. YMMV. Anyway...

I've heard figures of 25% more dev-hours for a pair completing a task. So, the task would be finished in 62.5% of the time, using two developers instead of one. However, the quality of and knowledge-sharing often increases too. Since bugs = rework and rework takes longer than doing it the right way the first time, pair-programming usually pays for itself. This differs for different tasks and levels of skill, eg: simple bug fixes, novice programmers, etc.

In my experience 2/3 of the time is a pretty good ballpark figure. It's longer than 1/2 but less than it would be with just 1 person.

Sallyann Freudenberg is a good name to look up regarding pair programming research. You could also check out the refs on the Wikipedia page: http://en.wikipedia.org/wiki/Pair_programming

The figure is mostly borne out by the data in this report by Alistair Cockburn and Laurie Williams: http://collaboration.csc.ncsu.edu/laurie/Papers/XPSardinia.PDF

Lunivore
+1  A: 

The important thing about Agile is that you shouldn't get stuck on the time it takes. Sometimes you get stuck on something that you did not predict and sometimes it goes faster than you thought. Something that is very common is that you predict the stories in points since you need to do quite a quick decision. When you then split the story into several tasks, you can estimate the tasks in time, because then you think more about what to do in a more detailed way.

The idea of having pair programming is not to finish the story quicker, but to do it with more quality and therefor not have to go back to the story again after delivered to the testing department or even to the customers (internal or external customers, whomever you are writing to). The total cost for the story, from a product perspective, will therefor be cheaper than if you were one developer.

MattPro
A: 

Pair estimates how long it is going to take them. Any estimate is based on experience - the longer experience team has with the project, with technology and with working together in pairs the better the estimates will be. Any arbitrary percentages like add 25% for pairs etc. are of any use only at the very beginning - with new project and new team on new technology - where you have nothing else to base estimation on yet. As soon as experience starts building the estimates will improve.

Remember though, that they are just this - estimates, that is our best guess of the future derived with the help of experience and knowledge from our understanding of the present. It's like weather forecast - the more data we have, the more experience forecasters have the better it is, but it is just a prediction, not reality.

Which is why points are so great, because they help you estimate one parameter you can - how "big" the tasks at hand are.

Andy
+2  A: 

I always stress story sizing over estimating. If you can minimize the variation in size between stories, then estimates become much less interesting. That is, estimation activities lose their value when the difference in size between any two stories is small, which helps fast teams recoup the cost of estimation and put it toward something productive (like building product).

With that in mind, I would suggest proactively pruning the backlog and splitting five point stories into smaller ones (still thin vertical slices) whenever possible. Until your team is experienced, I'd suggest you continue to have estimation parties, but prompt a default estimate of 1 point to each card, with a quick consensus check or discussion as to why any justify a bump to a 2 or 3. For anything that's clearly bigger than a 3, I'd suggest challenging that one of two problems is present: the baseline value of "1" is too small or the story should be split (either made more specific or tracked as an epic).

As the team establishes a decent velocity, the activity can hopefully shift its mindset from estimation to mere story vetting. That is, the question during planning of "how big is this story?" becomes "is this story abnormal?" The latter question takes significantly less time to answer.

Justin Searls
This is just an expansion of Amber's comment (*In general - experience*) but shows how to get there. +1
APC
A: 

1) A simple, concrete way to think about estimating units is the number of check-ins it would take to complete the story.

If you're doing TDD, continuous integration and refactoring you'll be working in small, chunks of work, keeping the build green and checking in regularly so under those conditions single check-ins can be a meaningful unit of estimation.

2) Alternatively, think about blocks of uninterrupted pairing time in a day e.g. after stand-up to coffee break, after coffee break to lunch, after lunch to mid-afternoon break, mid-afternoon to going home time - say 4 periods a day.... so say 4 units is a single day. That gives you a bound on what you could expect to do in an interation...

Personally I go for the number of check-ins, because I can sketch out roughly the tasks involved and get an idea of check-in numbers.

The great thing about number of check-ins is that it doesn't matter if you're pairing or not - you're just tracking what you can get done.

cartoonfox