Shinichi has flaws. He is arrogant, overconfident, and doesn't tell his allies what he is thinking and in doing so hurts them and ruins his own plans. Haibara commented how he was choking others. His silence has backfired more than once. The most glaring was when he did not tell Agasa his suspicions about Vermouth, which resulted in Agasa inviting over Vermouth to treat Ai. If Jodie wasn't there, Vermouth may have tried to kill Haibara because Conan was out at the time and Vermouth had the opportunity. He never apologized either if I remember correctly. I still think Shinichi/Conan is annoying, especially because he never seems to learn from these mistakes (still not telling anyone about Scar Akai in the Bourbon arc!), but flawless he is not.
I don't like Kaito much however, although that's mostly because I have disliked most of Kaitou Kid's recent cases (Pretty much all but the first three or so) rather than his character. Either they were stupid (GLASS pistols tricking people, WTH?), too easy (Kaito's teleportation), or g-ddamn wordplay (anything with thrice damned Kichiemon).