It very much does matter if it's a software project or a construction project, because the essence of a software project is that it involves an exploration into the unknown. If it were a routine process which could be estimated accurately, we'd have automated it already, and we wouldn't need to estimate it because we'd simply delegate it to a machine.
Software is nothing like construction. We don't build bridges, we draw blueprints for bridges, which our construction robots then build overnight; if it's a good bridge, millions of other construction robots go build millions more bridges just like it. If the bridge doesn't work, we have the construction robots tear it apart, and we try again with another one the next day.
When we get good enough at designing bridges that we start to see the patterns involved, we build a robot that draws bridge blueprints, and we have the blueprint robot tell the construction robots what to do while we sit around and think about urban design theory. When we get good enough at thinking about where bridges ought to be placed and what attributes they ought to have, we build ourselves a highway-design robot that orders around the bridge-blueprint robot that orders around the construction robots, and then we move on and start thinking about something more interesting.
Software is basically speculative investment. That is why we make the big bucks when our projects succeed.