Why estimates are always wrong (and what to do)
Software estimates are reliably optimistic for deep reasons. The answer isn't better estimates — it's depending on them less.
Everyone who has built software knows estimates are usually wrong, almost always in the optimistic direction. It's tempting to treat this as a discipline problem — estimate harder, be more careful. But the wrongness is structural, and pretending otherwise just sets up the next disappointment.
You can't estimate what you don't know yet
Most of the time in real work goes to the things you discover along the way — the edge case, the integration that's harder than advertised, the requirement that was vague. By definition you can't estimate the unknowns, and the unknowns dominate. That's why estimates skew optimistic.
Depend on estimates less
The fix isn't a better crystal ball; it's shipping in small slices so you're never far from a working state, learning the unknowns early, and re-planning as you go. Short feedback loops beat precise estimates every time, because they replace prediction with observation.
Stop trying to estimate the unknown. Ship small, learn fast, and re-plan — observation beats prediction.