As a programmer, I keep thinking...
Am I good enough?

It seems to me that hacking is difficult to improve at in certain respects, given the nature of trying to get better at facing totally new and different problems everyday.

I mean sure, you can learn more syntax, and even possibly master the simple concepts like (if you happen to do web programming) using cookies to maintain state, how to write packages, which methods of CGI you'll commonly use, or even slightly more advanced topics like how to use scoping rules to your advantage, when to prevent buffering...but how does one get good at facing the unknown everyday?

In my current situation, I battle the unknown everyday. It's sad to say, but I wonder if I'm any "better" now than I was when I started working here over 6 months ago. I know a bit more syntax, and I've touched on some very advanced aspects of the tool I'm using, but have I really gotten any quicker? I'm not too sure about that.

Now, admittedly one problem I'm having is the fact that I use a tool that I think is extremely boring (Powerbuilder is like the station wagon of programming languages, IMHO. Python, Perl, and now maybe even Lisp are much more the types of tools I'm excited about learning. Not to mention that I work in a Win32 environment, when my personal preference is definitely more of a Unix/Linux slant.)

Another problem is that I've been thrown into the Lion's Den. The project that I work on is probably easily the most complex one in this office (of 12 or so programmers, with about 6-7 different projects going on). Even after only 4-5 months here, I was doing things (difficulty-wise, not in terms of how fast I churned it out) that others who have been here 3 years are just starting to learn.

What am I doing wrong? I know that I love hacking, and that few other things would give me the creative satisfaction than to one day possess the skills of a merlyn or a tilly or a Dominus or know what I mean. :)

For the last 6+ months, I haven't felt like I've made much improvement (other than learning new syntax maybe, or using some new techniques that next time around I'll understand and be able to do quicker). But in terms of figuring out how I'll solve a new task (ie. how the proc should be written, in which object I should put the code I want to add, if a new object should be added and, if so, what methods, data it should know about, etc) it still often takes me a few days to come up with a reasonable plan of action.

How long did it take you before you felt like you really started to get it? I feel like after a little over 2 years of programming (1.5 of which was school) I should be better. How do you go from knowing nothing to being able to write something like this in 6 hours? (yes, the code and the article took tilly about 6 hours to write, he told me, which is mind-boggling. He did confess to having experience in doing such things, but STILL :)

I hate to ask a question that makes it sound like I'm a total newbie, but how does one get better at programming? How do you face the unknown everyday with the confidence that you'll figure out the problem before your boss fires you?

(On a side note, they recently laid off one of my co-workers who was hired at the same time as me, when it was decided that my skills were above his. But even though he had 2+ years of experience, I didn't consider "being better" than him much of an accomplishment, because he wasn't very good. My supervisor OTOH, with the same experience as said co-worker, is pretty amazing. :)