|Syntactic Confectionery Delight|
|( #3333=superdoc: print w/replies, xml )||Need Help??|
The top of the list is a willingness to learn. Have you ever noticed that the people you see exercising are always the ones who don't need it? Well the same holds for learning. The best programmers are ones who get onto a learning curve and never bother getting off.
Beyond that take a look at 70113 for some insight into my learning technique. It seems that programming is a lot like math. Sitting down and learning straight through does not seem effective. My pattern goes like this. I learn a little. Integrate a little. Review a little. Realize a gap, something didn't fit what I thought so it is time to go back and review something in earnest. Then continue on. All the while doing a lot of routine stuff, but constantly staying aware during it and ask myself if I can integrate what I have learned into what I am doing.
This seems to work well. The key here is that you are not aiming to learn anything in great depth, or learn a lot of trivia. Instead you want to have a reasonably wide and very well integrated knowledge base. When you see something that kind of fits something that you know, you don't want to be able to deliver a set-piece lecture if that were only pointed out. In real life problems come to you dirty and it is up to you to be able to recognize the connection and take advantage of your knowledge.
All that said one suggestion that I recommend following up on is to not learn programming in isolation. You can read a lot of theory, but a little experience will go a long way towards making that theory relevant, and giving you a concrete sense of what you know and what you think you know. If you can't take a job programming right now, then do volunteer work. Perform a code audit on an open source project. Do documentation. Write something. Do volunteer work for a local charity. Find a reason to write code that someone will find useful. Spend a good chunk of your learning period actually writing code.
For the record I have not been programming that long either. I started programming in November of 1997. I started teaching myself Perl in January of 1998. Since October of 1998 I have been a full-time Perl programmer. (OK, I have learned to be able to program with varying amounts of competence in several other languages in that period.) I figure that if I keep programming for a few more years I should become reasonably good...
In reply to Re (tilly) 1: What does it take to LEARN Perl?