Your time estimates are wrong. Don’t try to fix them.
Yeah, I said that.
I have been part of millions of planning meetings. I have seen thousands of project plans. The time estimates in them are all wrong.
All of them.
Instead of spending time coming up with a very precise estimate for how long it will take to build a feature, spend about five minutes working with engineering to figure out if the feature is "Large", "Medium" or "Small" (otherwise known as T-shirt sizing) Define those terms by talking about the number of sprints required to get them done. You’re still wrong, but you didn’t waste days or weeks coming up with the wrong estimate.
For example:
Small = 1-2 sprints
Medium = 3-9 sprints
Large = 10 or more sprints
Once you accept that the estimate is wrong, you can move on to planning with uncertainty. When you stack rank, you know that "Small" things at the top of the stack will likely ship this quarter but not definitely. Similarly, "Large" items at the bottom of the stack aren't shipping any time soon. This drives your roadmap. Estimate by quarter how much work you will get in those chunks based on stack rank. Of course, smaller chunks are better than larger chunks. If possible, take a look at the large items and see if you can break them down further. The smaller the chunk, the more accurate your estimate will be.
Is your estimate correct? No, it is not.
If you spend weeks developing a time estimate, will it be correct? No, it will not be correct.
Is it possible to be 100% correct in your estimate? No.
So, instead of investing a lot of time, take a quick stab at it, base your estimates on some objective reality and move on. It's wrong, but that's OK. The broad estimates can still give you an idea of how many things on the roadmap will be accomplished in a quarter. The reality is that you are way better off just accepting this level of uncertainty than trying to get to a “correct” answer that you likely will never find. For a PM, this discussion is usually driven by roadmap. Your execs want to know when a certain feature will ship. Don’t make the mistake of committing your product team to a specific ship date for a feature under development. PM doesn’t commit to shipping deadlines. Only engineering can ship a feature. Let them answer the “when” question.
What you want to do is be very transparent about your stack rank and the size and complexity of features. Small features with low risk and high priority should show up soon. If they don't, there is something wrong. Focus on that. This type of discussion can inform your leadership of what you’re working on and why and give them a view of where the effort and risk is. That’s what they really need to know.
What you should be presenting instead:
A good stack rank. Is eng executing against the stack rank? If not, stop. Until you agree with eng on stack rank, nothing else matters.
A good view of complexity. Are "easy" features really easy? If eng says "piece of cake" do you get the feature quickly? If not, stop. If you don't have a good view of complexity and risk, you cannot estimate with any accuracy.
A VERY VERY rough idea of time. It's way more important to know that X comes before Y. If you say X is six weeks out and it ships in eight weeks, does it matter? Not really. If you tell sales that Y is "THE MOST IMPORTANT THING ON OUR ROADMAP" but you don't ship it? You have a problem.
If you have those three things, you can build a roadmap and get leadership buy-in.
I’ve said this before, but it bears repeating. There are really only two things that distinguish a good product team from a poor product team. Those are quality and velocity. If you are executing with a high degree of quality at a high velocity, your odds of success are much higher than if you are operating with low quality and/or low velocity. As a product management leader, quality and velocity should be the two things you focus on the most. What you should not do is try to manage velocity with deadlines. Artificially setting dates simply lowers quality and doesn’t really address the underlying velocity problem you’re trying to solve.