Focusing only on the flaws, imperfections and mistakes doesn't allow you to get better. You must look at yourself fairly. Knowing both your good and bad allows you to find solutions within yourself. You have to first help yourself before anyone else can.
At some point you have to realize being good is not foolishly sacrificing yourself for everyone because they make you feel like a horrible person if you don't. "It's okay." is not the right response to "Why are you letting yourself be used/hurt even when they don't acknowledge your efforts?"