and maintainer of:
How do you develop/evolve as a programmer?
The 'Practical Programmer' states learn a new language a year.
I buy books, I go to local Perl Mongers meetings, I attend the local Perl Workshop and YAPC::Europe. Most important of all I program all I can, CPAN modules, client projects and own products/projects.
But still I feel that I am developing too slow, I am often relying on the same technologies as I always do, I am working within the same sphere of web development.
I had a friend in high-school who was a promising jazz guitarist, he talked to a professional saxophone player, this guy just asked him how many hours he practiced everyday, because if he wanted to turn pro he should play at least 8 hours a day.
So if you want to improve as a programmer you have to work as a programmer I guess, but practising as a programmer, what is that?
As a programmer this can be quite difficult, we do not just pick some standards and start jamming away (I do not know what jazz musicians do, I used to be a drummer in a alternative pop-rock band). I think we need problems (see also: this entry).
So how do we get exposed to problems? - Learning Perl is one of the best Perl books I have read and it holds exercises, or problems, which needed to be solved.
If we go back to the jazz and the standards, we could say that some standard exist in programming, I have implemented various sorting algorithms in several languages, just for the practice.
So where do we find problems? and is this the way to develop as a developer or are there other/better ways?
I think that working in the same problem sphere as I do, makes it hard to see that you actually develop, but at the same time I cannot afford to experiment too much, when doing projects, since I often have clients expecting something to be delivered within a certain timeframe and often you are hired to do the job exactly because you are in the sphere.