
There's generally 3 main phases to any successful software project.
Roughly as follows: Optimistic - Hard - Bored/Relief
This is the base camp at the bottom of the mountain.
You're ahead of schedule even with all of the bike shedding, nobody is pointing fingers or making excuses, the deadline is months away.
There's no way you can fail, in fact you'll probably have tons of time left over and you can add some extra features, or maybe use your inevitable cash bonus on a vacation.
At this point you've declared your project "dev complete" or "99% complete".
You are now bumping into all of the edge cases and gotchas and things you hadn't thought of when scoping the initial project.
The last 5% always takes 90% of the time.
You're fixing issues like rate limits, library constraints, stakeholder feedback.
Oh shit you mean my app needs authentication???
This is the hardest part, but it's also your product's moat. This is where most projects run out of steam and/or cash.
You've passed the peak of the mountain, it's all downhill from here.
Your project is likely overdue and people are aggravated, but the hard parts are done and now you're just grinding out boiler plate.
All of the effort you put into phase 2 is paying off and your job has become boring and monotonous… but it's a good thing.
Timelines have become accurate because all of the unknowns have become known, you are going to finish this project and soon start another.
Congrats!