I'd moderate this retarded if I could, but it's not an option. Probably Palin had it removed. Anyway, allow me to explain.
Not sure if I'm being clear here, but a "standard change" is not an estimate - it's something we've done before and know exactly how long it takes. If you are doing any actual estimating, the more "estimating" you do vs. using historical data, the more range of error you'll have. I'll babble on this subject for a while, but that's the gist of this post.
There are different types of changes. If you're estimating something you've done a hundred times, you know exactly how long it will take. Something like custom configuration for a client, routine maintenance, things like that. You'll be correct on how long it takes.
If a customer wants a new web service, and you've never done a web service, you're going to be wrong no matter how much you quantify. You can determine how many objects you need to create/update, but you can't tell how long it will take.
In other words, estimating has to take into account many different things:
How many objects will be updated/added
How many of those will be trivial vs. complex changes
Level of familiarity of the person/people implementing it
Assumption that the number of objects is correct, and nothing was missed
Necessary documentation available *and correct*
Historical accuracy of estimating (are you getting better at estimating overall?)
Historical accuracy of estimating the kind of change requested (are you getting better at estimating *this*?)
Overhead of gates/reviews and change control or other process
Testing resource availability, familiarity with the new items, correct documentation supplied to whomever is testing
If MSDN or man page isn't correct, you're going to do a lot of debugging. If the client's web service you're connecting to doesn't match what you were given, you're doing rewrites once you hit testing. If your change is ready to go but a company-wide routing change is scheduled for the same date so you can't test your implementation, you're stuck. If the CSS works until someone enters a long comment, and you need to find a workaround to the layout, you're better off just saying won't fix.
Bottom line, the more foreign something is, the more incorrect you will be. If you are estimating something you've already done, there's not need to estimate - it's already done! So by definition, we are either dealing with something simple like search/replace and run, or something foreign where you're going to be wrong no matter what.
I'll close with - in a modern company, all code should be reusable. So you only do things once. So you can't learn to estimate more accurately, since you're always estimating something different. The only way to have accurate estimating is to have a solid team working together for a while, and doing similar work. Just limit yourself to things you know, and you'll be right.