I'm 21 and didn't go to University and hence completely self-taught from tutorials, screencasts, books etc, but when it came to the decision of what languages to specifically learn, I thought, what's going to the most beneficial to learn, ie. for money, exposure, etc... So I did the Sun Certified Java Programmer course, but have never used it since, I learned Objective C to make iPhone apps, I have used it lots, I used PHP for web stuff, I've used it lots.

So my question is, if you chose to learn a specific language, was it for money or for a certain job or because your employer needed you to get up to speed on a language for a specific project? I cant really think of any other motivations to be a programmer? Is that shallow??

I've learned a bunch of languages (C, C++, Perl, Bash, SQL, VB, VBScript, JavaScript, Java, C#, Ruby, Python, a little bit of Lisp, ObjectiveC, a tiny bit of COBOL, a bit of Scala, a bit of Haskell, etc) -- most of them I learned on my own time, and not because of anything having to do with my career.

I just like to learn new languages. I like to see how things are done in other languages. I think it makes me a better programmer/designer in the languages I get paid to know; but my primary motivation is curiosity. Usually, it is because I wanted to learn how to do something for myself and doing that thing required knowledge of a certain language (iPhone App development, for example).

I learned C# because I was familiar with the syntax (having learned C++/Java in school), the .NET framework has always offered a lot in the way of making certain annoying operations easier and there were (and are) lots of jobs for it.

The improvements to it have almost entirely been good, so I've stuck with it as my professional language of choice.

About half the languages I know are because it was what the school used and thus I got used to that,e.g. Watcom BASIC, Pascal, Commodore PET Assembler, Modula-3, C++, Scheme. The other half are mostly on-the-job ones like VBScript, C#, JavaScript, and T-SQL.

I'm a programmer because I like building systems and solving problems. Sometimes that may mean I'll learn some bits of a new language to help someone else. For example, if someone in my office asked for my help on something, it may take me a little while but I would honestly try to help as best I can.