I'm going to attempt to answer the number-one most common technology question on the web, and hopefully do it so I can just link people here. Wish me luck, I'll need it!
The answer is different for everyone!
Being pro-learning is the only skill you really need!
That's the most important thing. Knowing one language just isn't any good. Knowing five is a little better. They get easier as you go along; I'm at a point where I can go from a cold start to coding a simple application in just one week on virtually any language. I just have a passion for technology and soak up everything I can get my hands on, and worry how to turn it into money later!
There's no such thing as "bad learning."
In 20 years watching the field, I've become convinced that every skill eventually becomes marketable. I never thought that somebody could make money being a Wordpress theme designer, a Twitter background theme artist, making ringtones for mobile phones, or setting up eBay storefronts, but there are all thriving cottage industries right now. Who knows what five years from now will bring? Professional Digg commenters? RSS publishing services? Mobile phone address book organizers? I've learned to never say never.
OK, but what do I learn for a job?
Well, I'll take a stab at it; here's the languages that currently seem to be going somewhere jobwise:
PHP: Especially on the OS-Commerce backend. Shopping cart apps, game sites (the kind with subscribers), all kinds of web-based commerce. PHP is one cruddy language - it's ugly and clunky - and it's a smash hit. On Linux, I install PHP and run scripts right from the command line, saving the output as HTML. Or you can get a cheap web host and test server apps live. Job search keyword is LAMP, for "Linux Apache MySQL PHP"
C/C++: Still the application standard. It is simply never going away. On Linux, gcc comes with the distro, and on Windows there's a nice free IDE called Bloodshed Software Dev C++, if my memory serves.
Flash: Still big. Get a good Flash game online, and the world will drown you in ad revenue. Webmasters are always out to hire a Flash webmonkey. Requires some understanding of graphic design work as well. On my site, I stump a lot for SWFTools and the swfc compiler, with a lot of demos in the Flash category. I also hear good things about HaXe, but haven't tried it.
Python/ Ruby/ Lisp: Not much on the job front, but it's so fun to learn and use for yourself, that any work you get out of it is a bonus. The high-end Silicon Valley start-up type places will be more likely to hire in this category.
What about specific jobs?
Why should you learn multiple languages?
A language can help you even if you don't get hired to program in it.
Now I, myself, make most of my freelance living from writing and graphics, so I'm really not the one to ask about making a living purely from writing code. The best work I've gotten in code is Flash stuff. If you're familiar with my Flash category on this blog, you know that I have a whole Flash toolchain built out of open source, with POVRay for 3D graphics, Bash scripting (Linux command line) to assemble animations, and SWFTools to compile the Flash. And now I'm writing my own POVRay frontend in Python out of frustration with the other POVRay frontends out there - this is an example of how knowing a language helps me.
I have yet to this day get paid one penny for Python code - directly! But my own tools tend to be either Bash or Python, which helps me do the other things I get paid money for. For another example, I have a lot of Bash scripts I've written over the years to convert or handle different document formats, so that saves me time on my writing work.
What is the easiest to learn?
This question is wrong. If you're asking it, I'm sorry, but my advice is to forget about programming. There is no "easy." You learn or you do not learn.
Well, which one is the most fun?
That's pretty subjective. Answers will vary, but if you just want a toy to play with for your own uses, Python and Ruby are both widely considered "fun". BASIC used to be, but it's outdated now.
You seem to lean heavy towards open source systems. What about Windows and Mac?
Sorry, check the site - it's "Penguin Pete's" as in "Tux, the Linux penguin, the mascot of Linux!" Call me biased, but for learning programming you can't beat Linux. The system's free, the tutorials are free, the documentation is free. Linux is built for learning.
I don't like your answer!
Remember, I said this is the number-one most common technology question on the web! Really, I swear on my grandmother's grave, you are not the very first person to have asked! Here are some search links for the other 348 million answers:
- What programming language should I learn?
- What programming language should I learn first?
- What programming languages are used in game programming?
- What programming languages are in demand?
- What programming languages should i know?
- Which programming language to learn?
- Which programming language is best?
- Which programming language to start with?
- How do I learn programming?
- How do I get into programming?
- Where can I find programming tutorials?