I am an enormously self-critical person. If I'm going out to a party, or having dinner, or even just giving a presentation, I'm constantly playing back my speech and my actions in my head to see where I went wrong. It sounds like two awful television sports announcers who follow me around only to trash whatever I think or do or say.
DICK: And here comes Matthew, shuffling into the presentation arena, sporting a wrinkled button-down and black slacks with ugly shoes. He clearly wants to make an impression, Bob.
BOB: Right you are, Dick, though I'm not sure what kind of impression that will be.
DICK: The meeting has now started, and look at this! Matt is waving his arms around, trying to provide emphasis to his explanations! Has he lost control of his limbs?!.
BOB: He'd better rein in his enthusiasm here or he'll be mistaken for someone who is suffering a seizure.
DICK: Let's listen in.
MATTHEW: ...So here's why we might want to consider using SOLID principles in our everyday coding...
DICK: Did you hear that, Bob? All of those conditional words! "Might want to consider," wow! Could he be any less decisive?
BOB: I don't know, Dick, but obviously he doesn't know either.
I'm really hard on myself. I know this, and I accept it. I'm not sure if this is because I expect better or worse of me, but I do know that it leads to some really interesting conversations, during at least one of which I actually yelled at my own brain and startled the hell out of my dog.
Still, this state of mind is useful to me in my professional life. In an industry that expects us to keep with ever-changing technologies, being self-critical is important to our careers. After all, how can you know you need to improve on something without first being able to recognize that you're not good at it? In that vein, recognizing your shortcomings is a boon, a helpful reminder that you might need to work on some things.
After a while though, constantly reminding yourself that you suck gets rather disheartening.
I suck at jQuery, I should practice more, you think. But the next day it's I suck at mongoDB, I should practice more, then I suck at Technology X, I should practice more and eventually you're surrounded by demands from all sides to practice more, write more, DO MORE. It's never enough, and it'll never be enough, but you're not aware of that fact because you're too busy trying to keep up.
It didn't help that I was seemingly surrounded by more competent people than me, even though that was only my insecurity talking.
I'd see "rock star" programmers pass through my organization and think Wow, if I could have a tenth of his knowledge, I'd kick ass at Javascript. That other programmer might have been terrible at SQL, but he was a God of Javascript, and so I'd aspire to be like him. Anybody who was clearly better than I was at a particular aspect of development caused me immense envy. I was comparing the grand total of my technical knowledge with the best parts of theirs, and coming up short.
Hit your head against enough walls and eventually you realize that you have a headache. I'd gotten sick and tired of caring about what other people knew or didn't know, and so I found myself actively trying to stop being concerned about it. I had to reorient my mind, to focus on how I can improve my technical knowledge without comparing it to others. I had to stop making comparisons altogether.
The unexpected outcome of this was that, because I wasn't making comparisons anymore, I no longer cared whether I sucked at a particular technology. It just didn't matter.
The day all of this clicked into place, the day that I realized I didn't need to compare myself to anyone, was a glorious day. I was free, more free than I'd been in a long while, free to improve my development skills without the shackles of other people's perceived stardom binding me. I was free to learn what I wanted, when I wanted.
Sun rise at CuaLo by Handyhuy, used under license
With that freedom came a price, though; how could I know I was getting better if I couldn't compare my skills against anybody else's?
That's the paradox; if you no longer care whether or not you suck, how can you be assured that you are improving? I have a simple question that can give you the answer: are you learning? If the answer is yes, you're getting better. Otherwise, you may want to reconsider your position.
It took a while, but I finally discovered that the best way to offset my highly self-critical brain is to stop caring whether or not you suck, because it doesn't matter as long as you are learning.
Now if I could only get Dick and Bob to just shut up for a while. Does anybody see the remote? I'd like to change the channel.