I'd say that one reason people end up under schedule pressure is because they are too optimistic in their estimations. Trying to estimate how long a task or a larger entity will take is just hard. Usually developers are good at estimating how long it will take to code something. However, usually there are also much more that needs to be taken into account: testing, delivery/deployment, documentation, unclear requirements, discussions with the customer and so on.
One way to improve is to track how good the estimates are and try to improve their accuracy over time.
As I said, we suck at predicting future.
It's not just estimations. Estimating is really a small part of it. We make incorrect assumptions about the requirements. Project scope changes. Someone had to take a sick leave...
The further we are in a project, the more we know about it and only then we can tell whether we'll be on time. Sometimes we have to re-estimate or reevaluate.
and estimates is what it is: an estimate. An estimate is a guess. No commitment is implied. No promise is made. Missing an estimate is not in any way dishonorable. The reason we make estimates is that we don’t know how long something will take.
The problem here is that business and management often view estimates as commitments.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.