I dunno. This is a hard one. I think being good at anything depends several things. The three that come to mind are:
- Skill. O.K. so you weren't born with keyboard in hand. Oh well. Neither were 99% of the programmers in the world.
- Attitude/Tenacity. Be stubborn. Re-visit concepts that you don't understand/grok.
- Goals/Expectations. What are your expectations?
Do you expect to be another Linus Torvalds, Bill Gates, or the inimitable John Skeet?
I've definitely felt like you about the basics, and believe me, my first several years of programming just sucked sooooo bad. I'd be forever shamed if any of that code found its way into the World Wide Web.
My 10 years thus far in the BIZ look like this:
- First 3-4 years of total sucki-ness coding, struggling to grok stuff (started with vb 6, vb script and notepad as my IDE)
- I spent about 2-3 more years slowly progressing, but mostly just languishing and suffering. (started .Net programming versions 1.1/2.0 of the CLR), trying to figure out where I was going or if I would stick around.
- The last 2-3 years I feel like I've taken the training wheels off, that I'm finally starting to move it to the higher gears (learned C#, asp.net 3.5, LINQ, OOP design patterns, etc.)
For the most part I'd say I'm still here cuz I wanted to understand stuff like I wanted to breath. I love coding even though I'm not a genius. I just wanted it bad enough that I've bashed my head against the wall to the point where, one day, I sat down at 'el computer' and voila! It FINALLY made sense. Finally.
Some people are born to code. Some people can speak natively to machines in assembler, but most people I'd say have paid dearly for their coding "stripes".
To make an analogy to baseball, there will always be the Babe Ruth's, the Mickey Mantle's, etc. of the industry (i.e. people that can walk up to the plate and hit a 95-mile-an-hour fast ball without really trying that hard). But even the major leagues are mostly filled with average major-league players that worked/played/practiced their a$$es off to get there. Maybe they had a little talent, but they'll never win a golden glove, be another Cy Young, or make the hall of fame.
A lot of what makes sense to programmers, only makes sense because they've suffered and felt the pain of doing things the "wrong" way.
Keep yer chin up aLostMonkey. Hopefully you won't have to suffer TOO much, but if you wanna play bad enough, keep swingin' that bat. We'd all love to have ya 'round.
Maybe one day, Skeet'll be asking you or I a question here on S.O.
Hey, we can dream, can't we!?