How I am Going to Learn Java

December 13, 2019

I work in web development. I’m a full-stack developer that leans more front-end. This means that I primarily code in one language: JavaScript.

JavaScript has grown into an ecosystem in and of itself — learning a new JavaScript library is akin to a Java developer picking up Go.

I’m familiar with ES5, ES6, Vue, React, and Node.js. This is a lot of variety in one language.

I enjoy it, but I need to move outside of JavaScript in order to learn JavaScript better. I also want to prepare for the JavaScripocalypse, when WASM or Rust or whatever finally take us over and I’ll regret that I was mostly a one-trick pony.

So, I have decided to learn Java without the benefit of relevant work projects to guide me. This is how I’m going to go about doing that.

Why Java?

JavaScript is an imperative language. This is great… sometimes, but it makes it almost impossible to learn either OOP or FP from first principles. I believe the best way to about doing that is to learn something that everyone recognizes as an OOP language first, then someday down the line, I’ll learn an FP language. Most people recommend I learn OOP before FP.

So, why Java over Ruby, C++, or Python? Because it seems that most enterprise web-focused companies use Java on the back-end. My company included.

Java also has a plethora of both academic and non-academic material on the language, and is an assumed default in a lot of writing. I believe that if I learn Java, I should be able to read C++ fairly easily, just like JavaScript has let me read Python fairly easily.

Java is a broad language that is a great gateway to a lot of different languages. If I know Java and JavaScript, Python will be a breeze to pick up after. I can’t say the same for learning Python and JavaScript.

It’s just a good general-purpose language that has a lot of paradigms that are harder to learn in JavaScript.

Stage 0: Tooling

Devin said use IntelliJ. There’s more I have to do. He told me before. I’ll bother him again. Something something JDKs.

Stage 1: Syntax

Based on my post about which learning methods work for me, the best way to start learning Java is through a code-along video course. This has to be slow enough to code along to, and more practically focused at first.

There’s a lot of Java resources out there, but I decided that Derek Banas’ Java course on YouTube would be good enough for now. I’ve gone through a few of the videos and his pace was simultaneously slow enough and fast enough for me. The quality isn’t anywhere near an Andrew Mead level, and it’s from 2011, but it’s good enough for now.

I’ll need to figure out what changed between Java SE 7 and Java SE 11. It can’t be that much.

I’ll be practicing by going through the Java track on Exercism.io as I go.

Stage 2: Academia

I don’t know about this yet. It depends on which direction I want to go in. I know I want to focus in on OOP and algorithms.

Stage 3: Capstone Project

This is completely unknown for now.


If you liked this post, get updates about new posts by signing up to my infrequent newsletter.