Ways to Learn a New Programming Language

Every programmer should be learning a new programming language on a regular basis. That’s every three, six or twelve months. For me, I like to vary my languages by paradigm. Object Oriented Programming. Functional Programming. Declarative versus Imperative Programming. Compiled Languages versus Scripting Languages. Dynamic versus Static Programming languages. There are two reasons I want to learn new languages. One, I like to apply what I’ve learned from one paradigm and apply it to my current situation. Second, I like to stay up to date on the needs of the industry and be ready for whatever may come.

But the challenge of learning new languages is finding a useful purpose for them if I can use them at the moment. So below is a list of the languages that I’ve learned.


A few years ago, when I was working on a project that made use of AWS, I wrote a small application in Go. This application interrogated AWS for the current state of several EC2 and EBS devices. What I liked about Go is the very short learning curve. And the ability to compile and run an application is no time flat. But what’s even better is the very short set-up time if you do everything through the command line. I plan to start using Go again for simple things until I can find a use for it on a more serious level.


On a recent project, I learned Groovy to write unit tests using the Spock framework. Groovy is very intuitive to program with. And extremely dynamic. It runs on the JVM, so you don’t lose anything. The language doesn’t have a stronger following which is very unfortunate. It’s a great language for those who just want to get stuff done and be creative about it.


I used BASH heavily on the AWS project from a few years ago. Now I write a lot of my automation scripts in BASH. And I execute all of them through Git BASH. This is a great combination when developing on a Windows environment. I double click on the script, it opens up a Git BASH shell and executes my script from within. Having said that, I do not recommend using BASH to build anything extravagant. It can be done, but with a lot of hair pulling.


The language deemed by some too daunting to learn. What makes it difficult is that the streaming library is a central part of the language. Not an afterthought. Also Scala offers a few liberties in coding; this can make reading someone else’s source code a challenge. Unlike Java, Scala is not just a bunch of libraries that you glue together. The basic programming language is exponentially more powerful. Some examples include case classes, tuples and implied methods.

I learned Scala because it’s the language used by a lot of the heavy lifters in the open source community. This includes projects like Apache Spark, Kafka and Akka. I spent a lot of time on CodinGame and HackerRank doing challenges and reviewing other developers’ solutions.

Scala, being a functional programming language, has a lot to teach. And so I took a few things that I learned back to my Java toolbox.

So What’s Next

If you learn a programming language for the creative aspect of it and not to just get stuff done, it becomes a very fulfilling experience. You become a much better programmer. And also become better at finding creative and efficient solutions to everyday challenges.


Haskell is the king of pure functional programming languages. There’s a lot in this language that I could learn. It has a steep learning curve. But everyone who has learned the language has come out of it with a new appreciation for programming.


Erlang is a systems programming language developed by Ericsson for their telephony business. What interests me about Erlang is that it’s a lot different than any languages that I’ve learned. But also it has some interesting features that I’d like to know more about.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s