I am on a lot of programming mailing lists. One thing I see all too often is the, "This doesn't work as I expect it, there must be a bug" type of posts. While there are many cases where there very well could be a bug, I think people look in the wrong place too soon. ...
Some of the lists I am on are for projects that are currently still in beta, or even alpha status. On those lists, you most likely have got a bug. Even in those lists, it is important to run several tests with different types of data so that you can pass on as much information as you can to the developers.
In a majority of cases, on the lists of production software that has been thoroughly tested, people seem to jump the gun. "I want it to do 'X' and it doesn't, there is a bug!" However, the first thing to realize when things don't work is, "You don't know everything". Be humble and realize you've probably made a mistake in your own code or maybe you don't quite understand certain concepts well. Perhaps your bug report would be better as a feature request.
I'm lucky, I've only been doing this a few years. So my initial response when something doesn't work is that I made a mistake. Then I dive into the documentation, read related books, search the web and maybe ask a question on a mailing list to learn the best practices for what I'm trying to do. Sometimes I have to clear my head and do something else before coming back to the problem. In the end I've learned quite a bit and I can tackle even larger problems.
Screaming bug isn't as bad as crying wolf, but it can be annoying. Bugs are out there, but often times there's a better way to do what you want.