Yes, it depends. We never know how long does a task take with accurate assumption. But that's not helpful. Estimates matter. If time isn't a factor in whatever humans want to acheive, we might've acheived much lesser than where we're today.
Those bridges aren't 100% perfect, they may not be suited for heavy vehicles, but hey, if we invested more time in making it work for all, we might've never put a car on it.
Why's estimation a hard problem?
Time is a constant unknown factor we deal with.
Estimation is break down of a large unknown jigsaw puzzle into smaller unknown puzzles and time it takes to solve all of them.
Add to above, mathematics doesn't take human emotions into account.
We overestimate our abilities and underestimate the complexity. Time moves faster than the usual time we're used to.
Giving good estimates is hard. Living upto it, is even harder.
When we're about to give an estimate, we deal with several known problems and our time to address to them.
Along with, comes unknowns we don't foresee coming.
We tend to solve debt accured over time too, within this period.
The rabbit hole is often deep enough for us to never come out. Being good at estimating the depth, is indeed hard.
What can we do about it?
Communicate proactively. We all know a task is going to take longer when we discover new unknowns that are large in itself. It's important to communicate to stakeholders (sometimes, communicate to self in your task manager) about what's going to be delivered on the promised date and what's going to be delayed.
Reflection session. Why couldn't we foresee the unknowns? What went wrong? How can we be prepared? How can we deliver and deal with not adding debt for later?
Does our knowledge of previous unknowns amplify the knowledge of more unknowns?
Clear debt in installments. It's improbable for a middle class person to clear house loan in one shot. Don't even try. We clear it in installments. Missed an EMI? Can we pay only partial EMI? We'll clear it later when we've time.
Change the way you estimate. The usual to-do, in-progress, done might not cut it for every task or everyone. We may look at big picture and figure out how to solve it without smaller puzzles in place. Come back to smaller puzzles later.
Be deadline driven. What we promised and what we deliver may be completely different. But being deadline driven helps. People know there's at least something that works, at the end of the deadline. Everything in checklist need not be complete.
Avoid rabbit hole. We deal with a lot every other day and our curiosity need not address them all right away. If we can work with surface and time permits us to go some depth, we should be able to live with it. The deepest waters may have darkest secrets but time doesn't wait.
Yes, it's hard. But if you're good at giving estimates, you stand out of the crowd. After all, we're here to solve the hardest problems.
You may be interested in this too: GHOST_URL/context-switch-for-engineers/