DEV Community

Discussion on: Always a beginner: Jumping from one programming language to another

Collapse
 
tchupp profile image
Theo Chupp

I know a handful of people that have been able to do quite well in their careers with only learning one language.
I also wouldn't necessarily contribute success in a career as a developer with being an expert in a language, although it is hard to be successful without being comfortable with a language.

My language journey was C++ for school, then Java for 3 years. Then exploded into a bunch of languages, starting with Kotlin (for Android & Spring). Kotlin got me interested in Functional Programming. From there I tried Go (for working on Docker/Kubernettes stuff), then moved to Rust. I fell in love with Rust and have been using it for my personal projects since then. I've also dabbled with Elm for front-end, and Typescript for server-side (making heavy use of github.com/gcanti/fp-ts)

Personally, I love learning new languages! I feel like I never noticed language features in Java that held me back until I experienced the expressiveness of a type system like Haskell.
I don't think I could point to one language that drove all this, I think that learning the ins and outs of all of these different languages and runtimes gave me insight into limitations in others.

For instance, in Java, I never realized how much we rely on Exceptions to communicate failure; even when this failure is expected and/or recoverable. For example, an HTTP request can return 200 that says "heres what you asked for", or return 404 that says "I couldn't find what you asked for". In Java, the 404 might be communicated as an Exception, even though it is a common and expected response.

Go, Rust, Haskell, and many other languages, avoid Exceptions except in situations where recovery is possible. Instead, functions may return Result objects that communicate the potential failures.

The most important lesson I took away from learning many languages, was realizing I wasn't using the right tools to accurately express my ideas. I think moving forward with your career is about being able to affectively communicate your thoughts and ideas, and the medium we - as developers - use to communicate...is code!

Collapse
 
defgrav04 profile image
Mina Oh

Thank you for your valuable insight. I know what you mean. At a technical interview, one of the questions was "what is your favorite programming language?". I answered "Java" and am now too embarrassed to discuss my shallow reasons for it.

Years later, I realize that a programming language like Java is difficult to learn and too verbose. When I studied Groovy, Python, JavaScript, React, and even Swift, I was utterly amazed by how simple it was to execute a task that is otherwise too complicated when done in Java. When I studied C#, I fell in love with functional programming and saw how amazingly easy it was to handle lists and other Collections. Well, Java is making its way through functional programming, but it's not as good nor as simple.

There is a beauty to knowing a lot, the breadth, not depth -- you can compare and contrast, gain insight, make more informed choices etc. It's like life -- travel while you're young, explore, try out many different takes, make many, many mistakes, and learn. Then, as you grow older and more mature, it may be time to settle down.

So, I guess I have done my share of exploring and it's time for me to settle down, too. :D