A character with faults is always more interesting than a perfect one. They turned James Bond into a more realistic character in Casino Royale, which ended up being one of the best Bond films. He was still a badass, but he also made a lot of mistakes. They did the same thing in the FX show Justified (if you're familiar with it). In the first season Raylan Givens is pretty much the perfect hero and is always one step a head of the criminals, and then in the second season he's constantly getting outsmarted and having his ass handed to him. I think it's better that way as long as they don't overdo it like in Metroid: Other M where Samus was turned into a helpless and clueless loser.