Why would the manager be the one making estimates? That's a task either for the team, if applicable, or for the implementer.
edit: I work from home, every sprint we have a planning meeting where we do the estimates together, my manager isn't even involed in it.
Only if we're expecting to exceed an estimate by 20% do we contact the project manager (not my manager) so we can figure out how to proceed.
How we work: we have a bunch of tasks available that we create during the sprint planning and we pick them as we have time, some may be marked as priority. My manager only hears from me if I'm ever blocked for some reason and need him to either get in touch with the person that is blocking the task or similar, otherwise we don't.
For us at least the manager is someone who enables us to spend our time productively, generally speaking he'll have no idea what I'm doing most of the time. I guess you could say we're self-managed.
With my team(s) I (almost) always knew (more or less) the time for various tasks.
I was also expecting any feedback/'negotiation' to happen at the time of task assignment OR as soon as someone can see that deadline is at risk.
I know that Tasks from Tasks vary, but hey, this setup requires knowledge from both parties AND trust.
Also, depending on the organization, a 20% buffer seems on the low side. If you can guarantee zero distractions throughout the day, outside of 1 or two meetings a week, 20% is probably ok.
FWIW, if the developer makes the estimate, he is more likely to live up to it, because it's not just some number someone pulled out of their ass. I'm not saying that's you, I'm just saying how I've seen it happen time and time again. I like to think I give good estimates, but like you said, it's a negotiation and if a dev says it will take longer, it will take longer. They most likely know the codebase way better than some manager does.
I contest this. This assumes the manager is also some sort of software engineer plus I don't understand why would there be any negotiation: a project asks for an estimate and we give it based on how much we feel it's going to take, there is no negotiation; either the project manager accepts it or reduces scope and we make a new estimate, my manager is uninvolved.
I suspect this might be a work culture thing: in my country managers aren't timekeepers, their responsibility is making sure we have all the conditions we need to be productive and be "invisible" otherwise.
> This assumes the manager is also some sort of software engineer plus I don't understand why would there be any negotiation:
We have whole methodologies based on the premise that we (software engineers or managers) are incredibly horrible at estimating software.
You -should- never be blindsided by #3. Because that's why daily standups exist. That's why tasking out a story. If the person is going down blind alleys, the -process- should be what brings that out, via daily standup or whatever. No amount of colocation will fix that, only explicit communication. You're not going to passively observe someone going down blind alleys.
I've worked as an engineer for a company that had ridiculous engineering turnover rates because engineers were treated like children, and management would always give these kind of excuses where one guy was a slacker one time so everyone has to abide by ridiculous policies around required office hours. If you want to retain talent and accurately measure employee performance, you need to put effort into measuring outcome rather than working hours.
It's ok to treat adults with respect and empathy. Knowledge workers need more latitude to manage their pace.
1. Neither of us understood the full complexity of the task at the outset. If we want to improve, we'll have to put in more work upfront to figure out the problem.
2. You're less capable than I thought you were -- it just takes you longer or you make more mistakes than I had expected.
3. I didn't adequately describe the job to you, and you spent time going down blind alleys and readjusting trying to figure out what exactly I want.
4. You're a slacker, you didn't work very hard on it and so it took longer.
It's easy to say that I should manage outcome, but if you repeatedly fail to achieve the outcome, what should I do? It depends on why. If you're remote, you're going to say it was #1 with a fallback position of #3. If you're in the office I can probably get a reasonable sense of whether or not it's #4, and if it's #3, we're naturally going to communicate more and so I'm more likely to fix it sooner. This is why office space in SF costs so much.