As developer, someone that is passionate for his work, will tend to learn new stuff without being directed to do that. Also, a passionate developer probably will develop a software solution using its own initiative, publishing a Free/Open Source Software solution or simply a Proprietary Product that will be available for download on its site or something similar to Android Market. “Practice Makes Perfect”, it can lead a developer from being a junior developer to a senior developer in a short period. The more interest they have, the more they get induced to build better code and better solutions, increasing his knowledge and leaving behind common programming mistakes. Usually an interested developer visits programming forums and mailing lists, has a Blog discussing programming topics — which indicates that he can write and communicate better than average developers — and has better initiatives using its creativity to solve problems.
Programming does not have patterns, so you cannot learn programming using how-to guides or similar stuff. The highest level of abstraction that programming has is an algorithm, which can have very varying representations in real source code, so you cannot memorize algorithms in hard coded languages, and require that you must understand concepts instead of learning certain language approach. Usually a polyglot programmer will try to implement the same algorithm in different languages or similar languages to see how different are they and how he can handle the same problem using different approaches in the real world. A non polyglot programmer will tend to use algorithm variations to produce the same solution with different perspectives.
Practice is the act of rehearsing a behaviour over and over, or engaging in an activity again and again, for the purpose of improving or mastering it, as in the phrase “practice makes perfect”. Sports teams practice to prepare for actual games. Playing a musical instrument well takes a lot of practice. It is a method of learning and of acquiring experience. [Practice (learning method), Wikipedia]
The most common approach to practice is learning a new language. As I wrote in past posts, you can take a book to learn a language, but you must consider three types of books: tutorials, user manuals and reference manuals. The first one that you must handle on each new language that you learn is a tutorial, it will guide you in the very basic features that the language will have, the you should take the user manual and finally you must use the reference manual to see which components are common to its standard library. Also, those tutorials which are fulfilled with exercises are very useful to learn, since they require that you start practising while you are learning. Also you can find programming problems — which require from you a higher level of thinking — by finding those problems exposed in programming contests. Try to acquire some books related to algorithms, learning from them and then practising your programming capabilities by solving those problems exposed in programming contests.
I know that the number of programmers that care about practising his programming capabilities are lower than the average developer, so you as employer must take care of those programmers that really care about programming as a professional activity. You will not find them easily. Where those programmers — usually called passionate programmers — care about programming as an interesting activity, instead of those employees that only take care about the position that they are occupying in the organization. Keep practising, you will be a better programmer.