Estimates are notorious for all developers, not just new ones :)
Most people have a hard time realizing they are stressed out -- you are suddenly completely freaking out! If you wait until there is a problem, you've waited too long. Risk shows up way before it manifests.
Daily gut checks are an easy way to notice risk. Ask yourself "how is the estimate aligning with the actual work left?"
Once you know there is misalignment, the most valuable way to discuss is focusing on work left.
The most important thing to remember when you know you are stressed out is to take a deep breath and relax. Understanding how you are evaluated for success and primary business drivers will allow you to discuss risk and delays in a language that can influences others and address what is more important.
Things that really help estimations:
1. Thinking about work in relative complexity rather than time allocations. More complex work increases time exponentially. Unknowns are almost always filled with gotchas. Any work that is more than a medium in complexity is best experimented on in spikes or broken down into smaller pieces of value.
2. Use your gut. It knows better than your head because these problems are often too complicated and deep to really have any idea how long they are going to take
3. Firm up definition of "done." There is a lot of overhead beyond coding the solution that makes something complete. Having a well known definition of done that everyone agrees on will help consider all the things that are often forgotten.
Go easy on yourself. Your estimates aren't wrong, they are off. You don't make good money because you are solving easy problems with well known solutions. You are creating simple solutions to complicated problems. Estimating anything when its complicated is most often inaccurate...
When all else fails default to Uncle Bob's standard answer: 3 weeks :)
Good luck!