I'm a very advanced programmer in several languages. I don't know if that make of me a polyglot programmer, but I'm at least on the path.
Here are the thing I consider important to get this qualifier and some tips on how to get them.
First of all, you need to master several programming paradigms :
- Object oriented
- Event driven
To get to this point I suggest two things :
- Try programming languages that promote paradigms.
- Try paradigms in languages that do not promote them (it will show you what a given paradigm is about, what problems it does solve, and what the computer is actually doing when you use them). Good exercices are OOP in C (build the vtables manually, that's what real men do !) or non types languages in a strongly typed one (see std.variant for an exemple of that in D).
Then you'll have to know good practice and why they are good practice (remember, you have to know the WHY of a rule, so you know when to break it).
- Separation of concerns
- Naming (actually this is one of the most important because the code will tell you things throw names - for exemple, if you can't find a short and accurate name for a variable, then the variable isn't in the right place or its purpose isn't clear).
- Many other, so many actually that I can't do a list here, but I think I have already given some of the most important ones.
To progress on that point, I suggest books. The pragmatic programmer is a good one, clean code too. Code complete is excellent too, but quite hard to read, because it's big and very dense in informations (but that is also its strength !).
You need also to fail badly at applying thoses concept and ends up with code that looks like jungle. Hard to travel, hard to adapt, with unfriendly inhabitants. This last point is the key because it will teach you how to use the tools to get quality code. What is the matter if you know what is quality but can't master tools to create it or vice versa ?
If you master the given point, you can consider yourself as a polyglot programmer IMO. By the way, this isn't all you need to be the greatest programmer. Computer science, knowledge on current technologies, management of yourself (sometime of others :D), understanding of the requirement, and so many other are required.
As a final tips, I suggest you to get involved in a recent language under active devellopement. This will teach you how language are created and why. This will teach you the limitation of actual languages, the difficulties you face to get better alternative (if that was easy, I would have been done in a first place !). Mine is D. It is also a multiparadigm language, so it is a good candidate. Choose yours !
Good luck. This require work, but it worth it !