I'm an okay programmer. Not a great one, and definitely not a "rock star" or a "ninja". I'm fine with that, because there's no way in a million years I can live up to those labels. I have better things to do anyway.
Most of my code is lousy. The thing is, I know it's lousy. I come back to code I wrote a week ago and I can't stand the sight of it. But as long as it runs decently well, I live with it. I don't throw it out unless I have a good idea of what better thing I can replace it with. Maybe I'm wrong, and what I wrote actually isn't bad at all, and what I wanted to replace it with is nothing more than something that's too clever by half for its own good.
That's what open source is for; you have other people look at what you did, weight in on it, submit pull requests. Maybe something that took you a week of agony can be done in five minutes by someone not locked up in the same cage of presuppositions that imprisoned you. I don't like to make suppositions about how good anything I do is, and it can be difficult to maintain that without someone else peeking over your shoulder.
I always thought the idea of the "rock star developer" or "ninja coder" was false and misleading. Even when you're a team of one, it's still a bad idea, because your software still has to be used by other people. The only time such an attitude makes even a miniscule amount of sense is when you're writing something that's only going to be used by you and absolutely no one else -- in other words, a hack or a piece of scripting duct tape. And even then I still think such an attitude is a bad idea.
There are times when, yes, you have to put your foot down and say, no, I'm doing it this way for a reason, and not think everyone who crosses your path has a good idea even when they have more experience than you. But taking such a stand is something you do as the last step, not the first, something you arrive at only after a lot of toss-and-test on your own.
I'm not in love with my code. I'm in love with my project, and what it can eventually do for people. The code is just a way to get there.