So in my current organisation for the past year we have been doing the "full-blown" Agile stuff to create software. From planning, refinement, daily SCRUM stand-ups, programming and testing in 2-weekly cycles, through to sprint reviews and even postmortems.
Our software chugs along and we make a reasonable amount of releases. As a dev team we are fairly happy because we go through all our rituals according to our Outlook calendar. Management are generally pretty relaxed because we have many small customers instead of a few large ones (losing one is not a big deal).
However, I feel like the biggest reason for Agile was supposed to be to bridge the divide between developers and management, and also keep customers on the same page - esp. with the Extreme Programming flavour. When my boss asks individual developers when they can expect a feature that is currently being worked on to be released for customers, we are dumbstruck and can't give an answer. We estimated based on effort, not hours - so we intentionally didn't communicate poor estimates to management. We know that our estimates are often incorrect, and we work to improve them. However, we still try to hide behind the guise of not telling management our estimates, as per many recommendations with Agile online and in books. We simply tell them what tasks we think we can fit into a Sprint.
As mentioned, this is all good, until a customer wants to know when it will be done so they can achieve some level of planning for their business. And management want to know because part of their job is to know. Furthermore, management never join our sprint reviews so we never get to talk about this kind of issue.
What are we doing wrong as developers / scrum masters? How do you suggest we could improve this kind of situation and feel more comfortable when the boss asks us an important question?