so I actually spent a bunch of time researching this because I'm also very self-conscious about my characters
something I found really helpful was from this book called "Understanding Fiction":
In other words, when the writer thinks of a character, he cannot think of him simply as a static portrait, or a psychological description… He must, rather, think of him as a complex of potentialities for action. A character is a complex of potentialities for action, for many different kinds of action, but not for all kinds of action, only for certain kinds of action which can finally be rendered consistent with each other. A hero may become a villain, or a villain a hero, but the reader must not be permitted to feel that such changes are arbitrary, that they represent real contradictions; rather, he must be made to feel that both kinds of action, the good and the bad, were potential in the character and are consistent with each other.
which just helped with my approach when it comes to creating characters? I kind of used to approach it like attaching a laundry list of character traits to a blank board and hoping something would stick.
whereas with this in mind, I can approach a character as this mess of potential decisions and ask "what would you never do, under any circumstances, ever?" and then try to understand why.
something that's also helped me is to try and figure out
1) how the character sees themselves
2) how the character thinks other people see them
3) how other people actually see the character
4) and how different 1, 2 and 3 are from what the character is actually like
because people are messy, and people aren't always self-aware. and it just adds whole new layers to characters that I've found make them seem more believable, if that makes sense.
so for example, take a random character A who
1) thinks their biggest flaw is that they don't love their friends well enough
2) thinks their friends see that as well, but are too good to say it to their face
3) other people actually think that character A is too self-sacrificing and doesn't let others take care of them
4) in reality, character A's biggest flaw is probably their weird mixture of pride and low self-esteem which results in a need to always take on everything on their own rather than sharing the burden (idk, this is just an example)
and in this case, you can have a delightful scenario where character A is determined to overcome what they perceive as their greatest flaw, without telling anyone about it because they don't share their burdens, by making increasingly dangerous attempts at protecting their loved ones. who, of course, get frustrated because they don't want character A constantly running into battle for them. but the more their friends tell A to slow down, the more A is convinced that they're a bad friend, which just creates an endless feedback loop.
and boom, we have 4 new layers of complexity in a character's storyline, just from considering the weird dynamic of self-perception and group identity.
so yeah. sorry for the essay-length response haha