I will be a freshman next year who has programmed for about 3 years. I currently know Java pretty well, but I am looking towards the future. In order to be at the top of the job market when I am out of college, what languages should I learn in high school?
closed as off topic by gnat, Thomas Owens♦ Jun 29 '12 at 17:24
Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here. If this question can be reworded to fit the rules in the help center, please edit the question.
Who knows what is going to be the "necessary" language in 3 or 7 years time?
So, first, I will recommend you to learn languages that force you into new paradigms. You can use Seven Languages in Seven Weeks as an starting point.
Make sure that once you get the basis you go deeper into different programming paradigms: functional, object oriented, procedural (check wikipedia). The actual language is not that important.
Then add different concepts and techniques into your repertoire: design patterns (the GoF book is recommended), unit testing, requirement specification, documentation, ...
Learn about algorithms and data structures (This one to start with). Make sure that you understand about performance (speed, memory, hard drive).
Work with DBs. You can get MySql or others for free.
Keep an active account in top websites for programmers (like this one and stackoverflow)
Read software related news, to see where things are going, what is hot or not, and what is dead (i.e., don't learn COBOL).
And finally, make sure that you have something (or a lot) to show. What you will lack on experience on the marketplace you can overcome with your pet projects that show how good you are.
I wish I could give these tips to myself a few years ago.
Well, you can almost certainly find a job if you know Java and/or C#. The thing is, in programming, demand for good programmers is way higher than the supply for them. This means that if you manage to become a decent programmers (very few people manage to 'emerge' from college as über-hackers) during your time as a student, you can find a job programming in almost any language. Which is very cool, because it means you can actually choose what language to learn and still not worry about job security much.
The two most important things to do while being a student are:
1. Constantly improve your programming-related skills
2. Do NOT allow yourself to be overconfident
Also, check out these pieces of advice by Joel Spolsky (who is also the cocreator of the SE network):
c# and Java are currently popular languages but there are more and more Ruby jobs around. I recommend doing a search on recruitment websites to see what the most popular jobs are. However, rather than concentrating on learning a particular language with a view to getting a job, I would recommend starting a 'pet project' to solve a particular problem or getting involved in an open source project so you have something to show prospective employers and make you stand out from the other graduate developers. Experience counts for a lot and you don't have to be in a paid job to gain experience.