Let me start this off with... PERFECT HEROES SUCK!!!
There, now that I've cleared that up, allow me to explain why. You see, if a hero is perfect, it's almost as if there was no story. Most fantasy stories are about exploration of the unknown (or of the already known), saving the princess and destroying the bad guy. But, if the hero doesn't grow along the way, we don't either.
It's like you just read this whole story and there was no moral. Because the hero is supposed to learn to moral as much as we, the reader, are.
Example: In The Lord of the Rings. Frodo was originally naive, weak and whimsical. And then, at the end he was wise, strong and much more serious. In fact, one of my favorite parts of the book is when Frodo, Sam, Mary and Pippin are all in the pub and they're saying, "Will we ever be able to go back to this kind of life?"
And it's really the question that can only come from the changing of a hero. And the reader only really learns what the moral of the story is when the hero changes. If the hero never changes, the moral doesn't really sink in.
"If the hero doesn't need the moral then why do I?"
And so, try to give your characters more depth than, "This is Tristan, the most muscular general in the king's army. He is an expert archer and is perfect in every moral and ideological sense!"
Instead, say, "This is Tristian, he's a lowly grunt in the front line of the king's army. Though struggling with his inner demons on the truth and morality of life, he is struggling to become a better archer."
Now, doesn't the second character seem more interesting than the first? Because you can do so much more with a character who is unsure of himself than with one who is fully aware of who he is.