Skip to content

Instantly share code, notes, and snippets.

@zmackie
Last active May 15, 2020 15:18
Show Gist options
  • Save zmackie/7514ec7ef31269a4395a6584a319839d to your computer and use it in GitHub Desktop.
Save zmackie/7514ec7ef31269a4395a6584a319839d to your computer and use it in GitHub Desktop.

Pick a programming language

Decision #: 1

Decision:

What programming language should I learn next?

Date:

05/01/20

Time:

10AM

Mental/Physical State:

  • Happy
  • Tired

The situation/context

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]

The problem statement and framing

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.

The variables that govern the situation include ...

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?)

The complications/complexities as I see them

  • 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)

What you decided and discussion

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.

Alternatives that were considered but not chosen

  • 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...

The possible range of outcomes

  • 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)

Review date (some time in the future that makes sense):

What actually happened

What I learned

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment