Choosing the Right Programming Language: A Personal Journey
Written on
Chapter 1: Understanding the Challenge of Language Selection
Why is it so challenging to select a new programming language or tech stack? Surprisingly, it’s not due to a lack of choices; rather, the issue lies in the overwhelming number of options available. So, how should one go about making this decision?
Over the years, I've never chosen a stack solely based on its popularity. Just because a technology is trending on platforms like StackOverflow doesn't necessarily mean it correlates with job opportunities.
My primary programming language is Java, but I’ve also developed a web portal using AngularJS and dabbled in C++ for an IoT project, albeit on a smaller scale. I comfortably regard Java as my main language.
Recently, I contemplated learning Kotlin, but I hesitated for two main reasons. Unless I intended to focus on mobile app development, Kotlin and Java offer similar advantages for backend programming. Additionally, acquiring a new programming language requires significant time investment, so I wanted to ensure my choice was sound.
Whenever uncertainty arises, I tend to seek advice on Twitter.
After weighing the advantages and disadvantages of various languages, I realized that Java is evolving swiftly; the latest versions have incorporated features that were once exclusive to Kotlin. Consequently, learning another similar language seemed redundant.
At that point, I decided against Kotlin.
I found Scala intriguing because it embodies both functional and object-oriented paradigms. While I initially struggled with the transition to lambdas introduced in Java 8, I eventually enjoyed working with them. However, I soon discovered that Scala lacks backward compatibility. For those who have experience with Scala, I’d love to hear your thoughts on this.
Java developers typically can use older versions alongside newer ones, but Scala’s incompatibility raises concerns about its adaptability. This made me reconsider.
Back to square one.
This is where I decided to utilize a framework. Am I studying a new language just for the sake of it? No. I need to clarify my goals: I aim to create different types of applications than those I’ve previously developed. My experience has largely been in backend applications and API development, so venturing into new territories like Data Science, AI/ML, Frontend Web, or Mobile Applications was appealing.
Python is a popular choice for the first two, but there are also robust Java libraries available for everyday tasks like NLP. I've always confined myself to backend development due to my apprehension about frontend work. This fear serves as a valid reason to explore Mobile or Frontend development.
- Do I know a language that will secure well-paying projects in the foreseeable future? Yes.
Thus, the new language isn't necessarily a requirement for remaining relevant in the job market.
- If I were to devise a billion-dollar idea, could I execute it with my current skills? No. I would need to hire someone to manage the frontend.
Based on these four inquiries, I chose to learn TypeScript. While I’m still uncertain about which framework to adopt, I’ve enrolled in a TypeScript tutorial for now.
I hope the framework I’ve shared assists you in selecting your next programming language or stack.
Feel free to share in the comments how you approach similar decisions.
Are you keen on staying updated with tech trends? Interested in generating passive income from your existing skills? If so, consider subscribing to my Weekly Free Newsletter for Techies!
Chapter 2: Video Insights on Language Learning and Selection
To further enhance your understanding, check out these insightful videos:
The first video is titled Why You're Struggling to Learn a Language. This video explores common hurdles faced by learners and offers strategies to overcome them.
The second video, How to Choose a Language to Learn | Polyglot Advice, provides valuable tips on selecting a new language based on personal goals and market demand.