When it comes to creating well-balanced characters, one of the ways I like to think of it is that every character is a double-edged sword. Any trait in any character has its positive and its negative potential, which can be drawn out, played with, used to create internal conflict, and/or increase external tension between characters.
For example, let’s say you have a character with a lot of determination. Determination is good, right? But what do you call determination in someone who is determined to do something you would rather they didn’t do? You call it stubborn, hard-headed, contrary, or possibly stupid, depending on what the person is set on doing. Double-edged sword.
A character with a lot of confidence – confidence is good, right? It means charisma, leadership skills, self-assurance. That character better watch out, though. Confidence can become cockiness, and that opens up a lot of potential problems for your character. Even if he has a healthy sense of his own limitations, maybe other characters perceive him as cocky and dislike him for it – confidence in one character can lead to jealousy in other characters. Double-edged sword.
Turn the tables on your characters. The things you admire or hate about a character, try to see from another angle. What’s the opposing force in the equation? What extremes would pull an attribute toward being a flaw, or a flaw toward being an asset? A character’s greatest weakness can transform in to her greatest strength, or vice versa. If a character isn’t very self-aware, he’ll be in constant danger of losing himself to the negative side of his own personality. If he’s hyper-aware, that’s an issue in itself, and he’s going to question himself incessantly (hello, Dostoevsky).
Does your character have another trait that somehow keeps check on one of her double-edged aspects? She’s confident, but doesn’t get cocky because she also has a strong sense of humility. Uh-oh! Humility? That might slide into meekness if her confidence is down for some reason. Your character’s internal struggle and the external dynamics have even more potential now. This is great stuff for plot material, even if the story’s focus isn’t strictly about a character’s personal growth. Characters should grow in any story, for it to be truly good writing. Spy novel or literary fiction, science fiction or mainstream – a story will always be better for character development.
Let your heroes screw up. Let your villains always try to do the right thing. Let your characters be full, rounded people, in spite of labels like “hero”, “villain”, “protagonist”, or “antagonist”. We don’t have those labels in real life, and stories with characters who transcend those labels are the ones that keep me, at least, coming back for more.