But there are so many managers up the chain that take all these estimates as the truth. Before the project starts, before any data sheets have even been read, we're asked to come up with all tasks we think will be needed, then give an estimate for each task. This all gets put on a chart and managers stare at it. Then you'll be asked what percentage of time you can work on each one, and you'll say 50% maybe because they get really mad at you if you are honest and say 10%. Then the chart gets printed and put up on some walls.
The problem then is that the chart is not updated. The developers are too busy to figure out some goofy planning software so that they can budge their estimate and the managers don't always do it. Along the way half those tasks you thought were needed either vanish or are replaced by something else and some new ones are added (because now you have some datasheets and requirements, you thought of something you forget, etc). We open and close tickets that aren't on any project plan. The planning and actual work just don't coincide, they're done by different groups of people with completely different sets of motiviations.
I have been at one place though that managed to estimate things well and had some good planning. I honestly don't know how they did it, except that they moved slooowly. They weren't developing a brand new product from scratch (like I am now) but just adding incremental features, lots of time spent planning before starting by people who are engineers and not managers, a set of bug-fix releases were pre-planned, and there was a multi month back end for QA. They spent more time on documentation than some entire projects I've been on. And it was waterfall. But that was only for two years of my career.