What programming language should I learn next?
05/01/20
10AM
- Happy
- Tired
I'm thinking about learning a new programming language, but don't know which one. I'm a bit bored at work and feeling restricted in my current role. I also would like to explore working in the cloud, but I don't know any of the languages that I see on resumes needed for more of that sort of work [ETC: Describe why this decision is coming up and the overall surrounding factors]
I have limited time to study something new, so I'd like to pick between:
- Java
- Javascript
- Python
- Go
- Ruby
I'd like to get to a level of proficiency where I could be hired to work in that language, if that was a requirement for a job (not expert but familiar).
Another way of thinking about this is that the concepts I'd learn by studying Java are applicable across other languages: OO design, tooling, type systems, concurency and so therefore it builds my fundamental/ conceptual knowledge.
For each language, consider:
- Domains its used for (cloud ml web etc)
- Resources for learning it (how good are they, conferences, etc.)
- Market (are there tons of jobs, is the market saturated, is it too rare)
- “Feel” (how do you like working in it?)
- Community/size (what's the culture of the language?)
- Limited time. What can I get to in 20 hours?
- Should I be going for something very popular (large markey) or obscure (niche)
- What if the ecosystem is too deep to get a handle on (in a large language)
- Does the speed of change of the language matter (javascript it rapidly growing, ruby less so)
Given its large community and its wide usage across many sorts of companies, I'm going to pick Java to learn next. Its come a long way and has lots of neat features (lambdas, etc) and the JVM runs lots of other neat languages too (Clojure, etc). Java also has tons of resources: many libraries, many books, many classes; most algorithms texts cover it as do online courses etc.
I think Java is a safe bet because its used so widely, has been relatively stable in the top ten languages for so long. All the contenders who threatened to de-throne it have found other niches and it continues to be relevant as languages targe the JVM and the language grows and evolves.
- Keep going with my current language (COBOL) in case there's some sort of crisis where government systems suddenly get swamped and I'm super in demand (highly unlikely)
- Drop and out move to a van down by the river
- Javascript lets me work on the frontend and backend, so that's cool too...
- Java turns out to be a bad pick because some unknown language replaces it (not likely, Java has a long life)
- I don't like working in the community because its very enterprise heavy (somewhat likely)