Welcome to

Magenic Technologies Community Blog

Sign in | Join | Help

Aaron's Technology Musings

Who let this guy on the podium?

I Promise To, Never Again, Estimate By...

* Screen Count

Leads to the idea that Google.com can be replicated in 2 days if you can knock out 1 screen per day.  Not all cases are Google, but seriously, estimation by screen count is a horrible idea.

* Number of Objects/Classes

For one, it implies you know the design up front, which as we know, we almost never do.  This is especially true since I tend to be writing estimates during and/or prior even to doing requirements, and therefore, speculating what classes and objects we will have and estimating them is the pinnacle of silliness.  Don't do it.

* Number of Database Tables

Like the above, but even worse, unless the app is total CRUD, in which case, you should be using MOSS/Infopath of some other generator technology.

At the last Chicago alt.net user group meeting, Bobby Norton* of ThoughtWorks moderated a fantastic discussion after his presentation on Cruise.  I am told we will soon have video of this conversation, but the essence was that we all have estimation FAIL on our resume, and we need to get better at it.  My big question, which is what I alluded to in a previous post, is that I am curious about how people actually do agile estimation.  The whole idea finally clicked for me that has been around for awhile - estimate by user stories (think use cases, only different), assign "story points" for use case complexity, and if a use story is above a certain "story point" threshold, break down the story into something more manageable.

This is different than screens based estimation because IMO it does a better job of capturing the complexity of a screen when you are talking in user understood language.  One screen may happen to be the place where a user will experience a great variety of stories.  It also gets away from enumerating the design prematurely - as it states things from the perspective of the user, without trying to assume what artifacts are going to be developed to meet that complexity.

The real benefit, though, is on the measurement side.  The key metric is how accuratley a given estimator can pin story points to complexity.  Once you are storing information and graphing it - so you have some history about how much time goes into, say, an "Aaron Erickson story point" or a "Your Name Here story point", you get better at being able to predict what you can accomplish in a given time frame.

Is it perfect?  No.  But remember the word we are using here - that word being estimation.  By continuously improving your estimates by using evidence of accuracy in the past to guide your future estimates - you do your client a great service.  You have evidence you can base your estimates from, which in turn, gives you the real "predictability" you are looking for.

Evidence based estimation is where, I believe based on, well, evidence (HA!) the world is going.

* Apologies, got my thoughtworkers confused last time

Published Monday, August 18, 2008 1:53 PM by Anonymous

Filed under:

Comments

# re: I Promise To, Never Again, Estimate By... @ Monday, August 18, 2008 12:32 PM

I've never heard of estimating by those methods....sounds pretty, um....stupid.

Pretty much the two ways to estimate via agile is user story based and you can break those stories down by tasking and estimate the tasks.  How you go about getting actual numbers can be laborious or fun or somewhere in between.  

the problem I have with estimating by story points is that first iteration - really in the dark about what *will* fit in the iteration.  I've had more success getting estimations using perfect engineering hours, assigning risk/confidence and then loading the estimate.  Excel is perfect for doing this...using a projector with the team looking at the stories, tasks and estimates.

The key to accurate and predictable estimates is getting a velocity over the course of the project....and feed that velocity back into the load factors.  

Jim

# re: I Promise To, Never Again, Estimate By... @ Monday, August 18, 2008 1:06 PM

Jim, you would be surprised by what I have seen out in the wild.  I have seen entire companies based estimating models off such things.  Thankfully, not Magenic.

That said, there are clients who, on occasion, demand we put estimates in that form, because some other firm espoused it like 10 years ago as best practice.  It is that case where I am saying "enough", and deciding to persuade away from that model rather than deal in it.

Anonymous

# re: I Promise To, Never Again, Estimate By... @ Monday, August 18, 2008 1:34 PM

I've found that if I say every task takes a week, my lead will add 50% and then my PM will double that. Some will take less, some will take more. It all balances out.  ;)

Chris from Minneapolis

# re: I Promise To, Never Again, Estimate By... @ Monday, August 18, 2008 2:07 PM

And you see, thats the point.  I want to get to where when a tech person estimates a task, they estimate in story points.  At that point, I then multiply your individual (if its a solo gig - or the team is new) or ideally, teams (if it isn't, and it is an already working team) recorded history of time per story as a baseline.

From here, you can go into special factors that can up or down the estimate.  Widening factors such as how new the client is, how familiar with the tech the team is, and all the other factors that can reduce estimate accuracy.

Otherwise, we get estimate inflation, which then leads to some smart aleck sales person negotiation with developers to lower estimates, or simply loss of the project.  Which then causes missed expectations, angry clients, and all the other pain we feel when things don't happen correctly.

Rather than go through this unpleasant process, I would rather go a different direction and use history as a guide.  While history isn't perfect, making s*it up is much *less* perfect.

Anonymous

# re: I Promise To, Never Again, Estimate By... @ Tuesday, August 19, 2008 12:00 AM

"Like the above, but even worse, unless the app is total CRUD, in which case, you should be using MOSS/Infopath of some other generator technology."

I know it's not really the point of your post, but, MOSS/InfoPath really don't belong in the generator category.

Michael Cummings

# re: I Promise To, Never Again, Estimate By... @ Tuesday, August 19, 2008 7:01 AM

@Michael - didn't mean to imply that - I should have rephrased it to "something like MOSS/InfoPath or code generation."  That is, Infopath can allow you to create quick cruddy stuff very quickly if that is all you need, and if that isnt an option, so can code generation, asp.net dynamic data, or a number of other technologies.

Anonymous

New Comments to this post are disabled
Powered by Community Server, by Telligent Systems