Ask Joel about Offshoring features a very interesting (and long discussion) only one point of which I want to quote here. It’s the second sentence.
In reality, a developer spends around 80% of the time designing and 20% actually coding. If you really want to spec the problem down to pseudo-code, then you’re solving the complete problem twice – clearly inneficient. Alternatively, you design to a high level, maybe down to individual method names, which still leaves the developer loads of ‘design’ work, as much real work is actually happening inside the methods.
Note for Daniel: That’s what I tried to explain yesterday in our After-Exalted discussion.
Note for the rest: to refer back to my post about conceptual points. Here’s another problem with concepts: of course I could give them a very very detailed estimate of the time needed, if I did an analysis that would equal about 50% or more of the time of my original estimate and then it would probably take me one or two days to implement all that but I don’t think it’s the point of a concept to have done everything before the tasks are actually scheduled. Therefore I can give only rough estimates of the time needed, because I have to include eventualities and risks in it.
My actual problem with that is that it sounds really lame to say: hey I need about 15 classes (including tests) for this, I need 7 days (it sounds even lamer than my actual estimate this way).