I've found that the best way to become a better programmer is to think of something that you'd like to do, even if you're nowhere near knowing how, and start figuring out what it takes to do it. As I've told many people, I set out to write a sound effects processor in mid-2003 and I've done everything but that. As soon as I started trying to write the basic parts of it (just the structure, nothing functional) I started learning about other new things and then started trying to figure out how to get those things to work, and after about 5 years "off track" I've ended up writing some very unique things. Admittedly, a lot of my practice has been reinvention of the wheel with such things as list containers.
Another way I've learned new things is by looking at questions on this board and learning how to solve them. For example, I learned how to program with sockets, the terminal, and parts of the kernel by looking at questions I knew I couldn't answer and then researching and practicing until I knew the answers.
Last edited by ta0kira; 08-13-2008 at 02:49 PM.