"If you don't have anything nice to say, don't say anything at all" is bad advice and here's why.
During the process of discussing something
not nice we develop a vocabulary to express our discomfort with the item in question. Once we've developed this vocabulary we can then communicate our concerns within our community - the chances are, others probably share these concerns / frustrations, but they might not have developed the vocabulary. The community discussions might result in a resolution to the problem, or may be ignored, but at least you can feel satisfied that you tried.
It's kind of like that one person during a lesson / presentation / lecture that asks the exact same question you were thinking, when the question is presented a whole new slew of questions are asked as the class engages in discussion.
Conversely, saying nothing, does nothing, you remain isolated, and your concerns / questions / frustrations are permanent.
Speak your mind, you only live once, and most of us can accept that your ideas today will differ in the future - we change. More companies / people / organizations should take feedback as a compliment and encourage discussion.