As a developer I have heard this a million times, and my response is – I don’t know. Anyone who claims they can estimate with any kind of accuracy how any feature or fix will take is a liar. Flat out. No exceptions.
From a managerial standpoint the ONLY budget that can possibly work is this. “You have 10 days to implement X, let’s see what you can do”. And this is where management needs to understand the dynamics of software development, and understand it well.
Imagine you ask a painter “how long will it take you to paint this wall”. Some might say 10 minutes, others might say a full day.
The manager did not expect this. In his mind, “painting” means something more than just splattering color on the wall. But here is a question for the managerially inclined out there. If you go back to the painter who gave you the long estimate, do you think his estimate is going to change. To some folks, since the work is half done – the “slow” painter should be able to do it in half the time now!!! right??
Here’s another dimension you need to consider. The painters have painted hundreds of walls, they know that some walls are even and easy to paint, others are crooked and dimpled and need more work. But why not ask the guy who painted your house how long it will take him to give your new Porsche a new coat of paint? Its pretty much the same thing – right? For the house-painter to give you a good estimate, he would need to KNOW how to paint a car, and to know it, he’d need to do it. And when he has done it, do you need the estimate?
The world is full of idiots who think they can estimate the time it will take to do something that is as vaguely defined as it is when people ask about features for software. To them, the answer “I don’t know” is a sign of incompetence, when in reality – that question is the hallmark of incompetence. Clearly, laymen will ask these things, and we’ll be happy to give them a ballpark number, but it always comes with a disclaimer, and most end users understand this. But if you work in the business, you should not keep asking for estimates every day, and then make a business plan based on those estimates.