Good character development means making your characters as believable as possible. To do that you need a mix of characteristics and traits. Make your characters beautiful and vain, homely and giving, beautiful and unassuming, ugly and evil, lovely and evil, or even ugly and the kindest person in your fictional world. It’s up to you. The only caveat is to not make your characters with no flaws.
Everyone has weaknesses. People are not perfect and your characters shouldn’t be either. Superman has a reaction to kryptonite for a reason. Without kryptonite, Superman would be invincible. Kryptonite gives him a weakness which increases the suspense and tension of any Superman story. Let’s face it, without kryptonite, a Superman story would go something like this, a criminal commits a crime. Superman swoops in and saves the day. End of story. Boring!
Good stories require conflict and tension. Perfect characters make that extremely difficult. That’s why they created kryptonite. Perfect characters are not only unbelievable, they can mess with the story’s tension and suspense. Properly flawed characters provide us with opportunities for suspense. Would the recovering alcoholic hero save the girl or fall back into an alcoholic haze? Will the reformed thief return the million-dollar necklace or take it and run? These questions are the one your readers should ask about your characters, hero or otherwise. It adds suspense to the story.
Give your characters some flaws that could potentially prevent them from winning the day. Or make it reasonable they don’t win the day, depending on how you want your story to end. Give them flaws that will allow people to relate. Who could relate to Superman if kryptonite wasn’t there to take him down?
Just as you don’t want a perfect hero, you don’t want a totally evil villain. Everyone has some good mixed with the bad. Give your villain some good qualities mixed with the bad. Perhaps the villain’s childhood warped their perspectives. It happens in real life and can happen in fiction as well. No one is wholly good or completely evil. People are a mixture of both. Your villain should have it’s own moral compass – a skewed one perhaps but they should have one. Maybe the villain has a perfectly valid reason for what they do. Maybe they just believe the ends justify the means. Sometimes the glimpse of goodness in a villain make them more terrifying than if the goodness wasn’t there.
So give your characters a good mix of good and evil, strength and weakness. They will be more believable, which will make them come to life on the page. That, after all, is the goal. Create good, flawed characters and present them with problems to solve. Your readers will love them.