Every single one of us starts with an empty source file, every time.
Really? I work with tens of other Perl devs, in a code base that was rooted more than a dozen years ago. Most of my projects involve modifying a bunch of non-empty files.
The only way that you can truthfully say how long it will take to develop a piece of software is to know in advance how many unforeseen, vexing, absolutely show-stopper bugs you will encounter, and to know how long it will take you to solve each one. But if you did know that ... if you could possibly know that ... then you would not have an obstacle at all: you would merely have a milestone be a millionaire sitting on the deck of your two hundred fifty-foot yacht in the Bahamas, thumbing through your yacht-catalog and thinking about buying another one. Or three. Or thirty.
I find this a lot of crap. First of all, if you have some experience, you ought to be able to quickly give a reasonable estimate on how long something is going to take. Someone ask you "how long will it take to do X", and you should be able to at least say "hours", "about a day", "a few days", "about a week", "weeks", "months", "years", and not be too far off. If you can't, given the years of experience you claim to have, you just aren't a good programmer.
Having said that, the IT world has a bad reputation of projects going way over budget, never getting finished, be full of bugs, and being scrapped before ever going live. I think that's a sign of immaturity.