How to choose a second language

So you’ve been programming for a while now and you want to explore what other languages are there. How do you choose?

Do you choose based on how you think you might get a job? Or do you choose where all the “excitement” is?

My advice? Find something that will change the way you think about programming.

Most likely you’ve been writing in some form of object-oriented language. That’s great. It’s what the vast majority of professional software developers author in.

Please, don’t choose another OO language. Choose a language that has fundamentally different ideas about programming. Or choose a language that aims to solve an entirely different problem space. Choose a functional language. Choose a systems language. Choose an obscure or esoteric language. Its impact on you will be far greater.

For example, I’ve been a fronteer my entire professional career. This means my primary programming language has been JavaScript. Despite it’s warts, I love JavaScript. Likely for the same reason I love the English language. It’s the way my brain models the world. Thus, I could choose a related language that I could easily apply at work such as C# or Ruby. This will feel familiar in how I model the world, and it’s relatively simple to adjust to. Learning the syntax and the idioms of the community and I’m off to the races.

The trouble for me is I can’t understand how I become better. Ruby and C# are too close to my mother tongue.

I choose to learn another language because I want to fundamentally change the way I think about programming.

Functional programming is fundamentally different than object oriented. Systems programming is fundamentally different than UI and web programming.

I’m going to learn a functional language. I might even learn a systems language. You should join me.