| Programming Languages are just like Human Languages. Every culture builds a common form of expressing ideas based around their shared values, needs and outlook. Restricting yourself to one Human language limits your thinking and perspective. Each time I acquire a new Human Language, I find myself thinking differently and understanding people more deeply. Speaking French and German allows me to be a better communicator in English. Human Languages can also provide means to an end. Learning German allows me to become a German Citizen. Learning Mandarin would allow me to start a business in China. The same goes for Programming Languages. As mentioned by others, different Programming Languages were developed by people with different values, needs and outlook. Each time I learn a new Programming Language, I learn new forms of expression for my problem. Programming Languages allow you to do different things. Depending on what you want to do with your career, choose differently. Some languages are more useful than others. If you only know Java then you have a lot of learning ahead. I would explore in this order: * Python - You can do almost everything well in Python. Make lots of stuff
* Command Line & Bash - How systems are glued together. Deploy the stuff you make.
* GNU Regex & awk - How to find things and process text. A key building block of programming is processing text.
* HTML5 & Javascript - The right way to make most visuals. A frontend for your stuff.
* C - How all the above works underneath. Understand the stuff you made.
* SQL - How to handle data in databases. Persist the stuff.
* Haskell - Pure functional programming. Your Python and JS code will improve. Make the stuff beautiful.
|
The hard part is knowing _how_ to measure your skills. A while back I came across an article called the "Programmer Competency Matrix" and it stuck with me (google it for reference). Essentially it's a table of CS/programming skills with measurements 0-3, and it gives the reader a way to measure/track their various competencies.
After I read that article, I took his matrix and added my own additional rows/columns that I'd like to be proficient at. To the OP - I suggest doing something similar. Write out a list of all of the programming skills/languages you'd like to have (and need to advance your career), and give yourself an honest rating. Ask a programmer friend to rate you as well. Then ask yourself - what 0's do you want to turn into 3's, and weigh that against your career choices. Then plan your learning accordingly.
Like mjmdavis said: programming langs are a means to an end.Making a choice on where to move forward isn't just about your career - it's emotional/artistic/personal. You don't want to choose a language you hate just for a paycheck. I find that being more self aware (with my matrix) has helped me learn the skills I needed faster and more intentionally.
Good Luck!