Imagine standing on a very tall hill in middle of a thick forest. Your hill is tall enough to take you above the trees; when you look out over the trees, you can see for miles around you. Ahead you can see another hill sticking above the trees; this is your goal.
You want to reach that hill.
A question arises; you are asked, “How long will it take to reach yon hill? What will you need along the way?”
If you stood in a flat, empty field and looked across at your goal, it would be easy to answer the question.
You have some idea how long it takes to walk a distance across a flat, open ground. The time it takes is just a function of distance to cover.
You can see any potential obstacles, so you can plan to avoid them if possible or bring along resources (boots, ropes, ladders, cleats, whatever). And you can calculate the time either choice is likely to add to the trip.
It’s just common sense: It’s easy to plan a journey when you can see the territory ahead.
The problem is that the forest conceals your path.
It might be as easy as just walking down your hill and making a bee-line for the next hill; no problem, there might even be a beaten path.
Or there might be rivers or ravines to cross. There might even be dragons.
You can estimate the best case, problem-free, straight path. But any unknowns you encounter are most likely to increase the travel time.
After you’ve conquered a few forest paths you begin to get an eye for the lay of the land.
You begin to get a feel for the kinds of obstacles you’re most likely to encounter.
That makes you better at using rules of experienced thumbs to calculate better travel estimates.
But you still never know when there be dragons there.
I’ve used this metaphor to explain why estimating the time for any project can be tricky if it involves exploring new territory.
And the thing is, software development is likely to explore new territory. Invention is often a project requirement, and experience does make you better at guessing what lies ahead.
It’s not a bad metaphor about life: Invention is often a requirement; experience makes you better at guessing what lies ahead.
What’s the ancient saying about experience? “Experience is a comb life gives you after you lose your hair!”