Here is one thing I know about estimation in software development: It's not only hard, but it's also not about how accurate you can get.
Hey listen, I understand that the more time you spend in the Industry, the more experience will help you out coming up with estimates to develop features for a software application. That's clear, but that still will not make you a wizard that's able to see the future.
I've been related to software for more than 20 years, and foreseeing how long certain things will take is still as painful as day one. Sure, I'm probably doing better today, but I'm also still wrong most of the time.
But you know what? It doesn't matter.
If you put together all your estimates to develop a software product (and assuming you have enough experience to provide decent estimates), you can easily represent them in a bell curve: most of them will be pretty accurate, but you'll also have several outliers, both under and over the target.
From here on out is all about properly playing your cards: every time you come under, don't waste the remaining time; use it instead to offset those instances where you invariably came over. Whenever you are over, make sure you properly adjust deadlines and priorities. Communicate with your team and have them walk the journey with you.
There's no book out there, or course, or professor that can teach you how to get more accurate with your estimates for a good reason: you just can't change the fact that predicting is hard. But remember that it really doesn't matter. It's all the about the process, not the number itself.