When I started this blog I asked someone who is currently getting into software development what questions she would like to see me to address. She responded:
"What is the quickest most desirable language to pick up that would get me going so I can be beneficial out of the gate and then pick up the other languages as I go, and in what order should I pick up the other languages? What are some thorough sites that would provide strong syntax and logic for the languages that are recommended?"
This can be reduced to:
"Which programming language should I learn first?"
There is no universally right answer to this question. There is probably some statistical data on what the quickest language to pick up is, but then again that information would only serve those people who fall into the category of average. Many people might find that Python is quick to pick up, but I bet there is at least one person in this world that would pick up Erlang much quicker.
I cannot give you a definite answer as to which programming language to learn first, but I can definitely give you a bulletproof system to determine which one you should learn first. I have laid out this system in the following steps:
- Find a problem you passionately want to solve that would require some programming.
- Devise a solution to the problem and create a high level design.
- Determine which programming language would be best suited to implement your design.
- You now know which language you should learn first.
The programming language that you will learn the quickest and that will be most desirable is the one that will best enable you to implement something you are truly passionate about. Passion begets action, action begets motivation, and motivation is what you'll need to not give up forever when its 2 am, you've been debugging an issue for 6 straight hours without any idea of how to fix it, and you feel like an utter failure. You will learn a language and learn it well if it is done as part of a passionate endeavor.
In terms of desirability, any worthwhile development shop is not going care what programming languages you claim to know, especially at an entry/junior level. They will care most that you are passionate about developing software and that you are capable of doing so. The best way to demonstrate both of these traits is have a portfolio of real life projects that you have worked on. No programming language is inherently desirable. What is desirable is a person who has wielded a language to create something awesome.
To address the rest of the question:
"so I can be beneficial out of the gate"
There is no programming language you can learn that will make you beneficial out of the gate. Practice is the only thing that can do this, regardless of language.
"then pick up the other languages as I go"
Do not ask yourself which language you should learn next. Instead, ask yourself what paradigm you should learn next. If you master Java and then decide to master C# you are not going to grow very much. However, if you master object-oriented programming and then master a functional language or a strictly procedural language then you are going to grow as a developer. Sometimes, you can master multiple paradigms within a single language. Do not be afraid to do this.
"and in what order should I pick up the other languages?"
The order does not matter so long as you are doing something your are passionate about and continue to learn. The developers who fall flat and fail in this industry are those that stop learning new things. Just take action to learn something.
What are some thorough sites that would provide strong syntax and logic for the languages that are recommended?
There are a ton of resources for learning languages out there. Codeacademy, Khan Academy, Pluralsight, Lynda, and Udemy all have courses that can get you started on a particular language. If you Google whatever language you are looking to learn you will probably find a good number of tutorials, blog posts, and books. I don't know if a good directory of the best resources for each language has been established yet. I may consider creating such a directory on this site.
Beware not to get into analysis paralysis when it comes to picking your first language. Learn a language by applying it to something you are passionate about. If you find your passion and still have trouble picking one then choose whichever has the coolest name. Actually learning a language is more important than the language you choose.
If this answer doesn't jive with you lifehacker.com has a pretty good blog post that also tries to answer this question.
Thanks for reading!
- Shawn Rakowski