Comment Estimates are fine if.... (Score 1) 347
Except what usually happens is that a feature change will come along *AFTER* the design phase has already started, or else the requirements weren't unambiguous enough in the first place. Oh... and in the real world, at least in my experience, a developer isn't often in the position of being able to say "we can't do that", unless the developer is also very amenable to finding a different employer in the extremely near future.
This usually puts the programmer in the position of having to be a sort of prognosticator, and anticipating what the most likely types of design changes are going to be while doing development, and designing software that will be robust enough to accommodate such changes with only a modest increase in time spent, without losing any work on design that has already been completed. Sometimes, particularly with an experienced programmer, or one who really knows the people who are likely to make design change requests, and so may be able to predict what they are liable to really want beyond what was stated in the functional requirements documentation, this kind of forecasting is within the grasp of a human being to accomplish But it's never easy.