By Ivan Santos - Sat Mar 05 2022

Learning new programming languages as a Java Developer

My entire engineering career of 8 years, I have been using Java. I am very fond of Java. It is a great language to build your career on. Almost all organizations use Java in some capacity, so it makes a perfect language to make yourself very marketable. It has thousands of libraries. It has thousands of posts on StackOverflow: it is a great feeling knowing that the issue you are facing, someone else already solved it, and shared the solution.

As great as it is, Java is pretty wordy, though. The newer versions of Java make it feel a little more modern. But not stylish enough, in my opinion.

I did dabble in Scala. My experience with it was not the greatest. I started using it without knowing how properly use it. I found that it was effortless to write scary code in Scala. Java can also have the same downfalls, but it is on a whole different level in Scala. I wrote some really, really bad code in Scala. So bad that I had no idea what I wrote after a few months. It has so many operators that I thought it would be fun to use… well, that was a big mistake. I also did not find the Scala and Java interoperability that great. I couldn’t get my head around correctly using Java collections with Scala and vice-versa. I felt it was simply a pain to use Java and Scala in the same project. But, for me, the biggest issue of all was the Scala compiler. It was so slooooow. It would take several seconds for my unit tests to run. I found it too painful. This was back in 2014-2015, so I am guessing it improved since then, but man, it was slow. I understand that I could have been doing something wrong, but I just really disliked it, so I gave up pretty quickly after a month or so.

A year or later, I learned about Kotlin. I immediately fell in love. The syntax was much easier to understand compared to Scala. And on top of that, Kotlin was created by the company that created IntelliJ… hell yes!. That meant that all language features would be fully available in IntelliJ. Me likey. I can use Java collections in Kotlin… well, how nice of you. Built-in null-safety… beautiful! Its interoperability with Java was like day and night. I tried learning co-routines, but the 1.0 had not been released yet, so I did not get very proficient when I was learning.

All in all, I like Kotlin. But my usage of Kotlin at work did not last very long. I changed companies for the moneys, and my new company only uses Java. So now I am using Java 17.

Now that my is rant is over, the purpose of this blog post. I have only been playing in the JVM world, which is nice and cozy. I feel at home. But I need a change… I want a change!

I plan to learn popular programming languages that I have been reading about for many years now. And I will be sharing my experience in doing so.

So my current plan is to learn the following languages to start with:

  • Python. The language that everyone should learn if they are starting to code. It also has thousands of libraries so that you can do some cool stuff with it.
  • Swift. To create the iOS million-dollar app idea that I do not have.
  • Kotlin + Android. To create that million-dollar app idea in the Android world.
  • Javascript. Not vanilla JS; I am not insane. I will pick one or two of its thousands of libraries/frameworks with a cool name.
  • Golang. An easy-to-learn language that is light and super fast.
  • Rust. I know very little about this bad boy, just that it is famous for some reason.

But now you must be wondering why I am writing this blog? Well, I read Show Your Work by Austin Kleon. It proposes that you should be showing your work. Heck, why not?! Someone out there might find it helpful as well.

Also, this will help improve my writing and communication skills :)

Until next time!