Software cannot be estimated the way your organization wants, and it's time to stop trying
Managers and organizations want to know exactly when features, bug fixes, and other work will be done. Many have not been software engineers themselves, so they ask for exact dates. Sure, you can be off by a day or two—maybe!—but more than that, and it's a problem. After all, their boss needs to know what to promise customers. What's so hard about knowing when you'll be done?
Sadly, software cannot be estimated that way, and we need to stop pretending otherwise. It's a myth—a pervasive one—and perpetuating that myth only perpetuates its harm.

Sure, if a task is almost identical to some previous task, a precise and reliable estimate really can be communicated. Unfortunately, that almost never happens. If the work ahead were so similar, someone would have done it already using copy and paste. If it's similar and the engineering team wanted to set themselves up for success later, they'd refactor the system. That refactoring itself can be a hazy fog of unknowns. We've all been there many times.
In my fifteen years as a software engineer, I've worked in many different kinds of organizations, from a small non-profit research and development lab (the Open Publishing Lab at RIT), to a medium-sized, quasi-non-profit business with a deep and pervasive developer culture (the Mozilla Corporation), to a for-profit startup in the music industry (Inveniem), to a publicly-traded conglomerate with an estimated 100,000 employees (Honeywell). Although I have fond memories with all of my former employers, in my experience, not one was even remotely better or worse than any other at software estimation. Clearly, something more fundamental is wrong. I think the problem is obvious. They all wanted to know the unknowable.