This is a great question, and I'm so happy to see that you're trying to make the best use of this opportunity that is being presented to you. I gave a talk at Google DevFest West titled An Engineer's Guide to Learning About Your Users, which has a lot of advice for the best ways to go about doing it.
The first thing to remember is that it's your job to listen. You want the people who you're observing to talk as much as possible and share with you what they know, what they're thinking, what works for them, and what doesn't. If you're ever stuck and can't figure out how to get more information about them or how to formulate a question, "tell me more" is a magic phrase that can help you in amazing ways. You should speak as little as possible: you already know what your opinion is and what you think your product should do, you want to hear what their opinion is and what they think your product should do. Talk enough to get them talking.
The second thing to remember is to be open to all feedback, whether it's positive or negative. Feedback is a gift. Be open to receiving it. Remember: if someone's really angry, it means that there's a mismatch between their expectations and what your product is delivering. You've got an awesome opportunity to understand what that expectation mismatch is and how to solve it, and thus turn a detractor into a supporter.
When you're asking questions, avoid leading questions. I try to avoid starting off with "best things about the product" or "worst things about the product", but rather starting with "what do you think about the product?" This allows you to learn whether the first thing that comes to their mind is positive or negative, which is really important. If you feel like you're only getting one type of feedback, you can later probe to see if there is something on the other side of the coin (ex: if they only give positive feedback, let them give that feedback and then ask what they don't like about the product).
Likewise, it's important to understand what their need is, not what they think will meet their need. Asking about what features they want focuses on the solution. Your opportunity to truly innovate and make an awesome product is to instead understand what problem they're trying to solve, or what task they want to complete, or what their workflow is. Once you understand that, you can create an innovative solution that meets the needs. It might not be the same thing as what they would suggest to solve the problem, but it might do a much better job of actually solving the problem that they have.
Don't forget to share what you learned as widely as possible. Not everyone is getting this opportunity to learn from your users in this way. Let others know what you learned and what you think could be done to make your product a better one.