There is a lot programming languange in this world, and all for different use-cases. but somehow, without mentioning functional programming, the popular languange is somehow imperative and Object Oriented. well if you take the abstraction of imperative and make it to a function or a method, it become declarative.
We, the programmer. we all started somewhere, maybe in college, or in high school. the first question that comes to mind is what the first programming languange i should to learn?, i want build this, what should i use? or you just a guy at uni that learning based on curriculum and thats totally okay and eventually we learned it.
When Learning Another languange, you would thinking, why should i learn this languange? i can already built it in my first languange why learning all the way from the begining? is this a good investment? What if my work will not use this lang?, and all sort of 5W 1H happen in your brain. Lets Begin this by looking back when you learning the first programming languange.
First Programming Languange permalink
when you learning your first programming languange, the first thing you learn is not data structure or algorithm, the first thing is the syntax! and then how to make the program to run with that logical branching (if else), looping, and primitive data type (bool, int / number, string / char). If you comes from web, you run it on a web, or if you comes from low level languange, you run it on your terminal. after that, you learn the standard lib of that programming languange. in C to print something to a console, you use printf, and javascript you use console.log and so forth in another languange as well
Learning Your First The Data Structure permalink
I think, the first data structure we used is array, either dynamic array or static array and if you learning for fun or your end goal is front-end dev, just array is enough, but when you comes from the uni or your end-goal is backend or hired in the top company, you learned Array, Stack, Queue, Linked List, Graph, HashTable and Trees just for interview purposes. and learning data structure and time complexity is good too, but thats on another topic.
The point is, you have learn it, and you can feel good about yourself, and that is enough. You know a litle data structure, little bit standard library, the syntax and the primitive, and you know a logical branching and looping, and thats it. you started building your own stuff, and get out the tutorial hell, and having fun building something and learning something new along the way
Turning Point permalink
You still in discovery phase. you started to thinking i think i dont belong in this, i dont wanna build a website, i wanna build database but with this languange i cant get hired in my country, or i wanna build a native android app and it must uses kotlin. or i wanna build games that people can having fun playing with, but in my programming languange, theres nothing as good as unity. Or You Know what you doing, but wanna take it to fullstack developer, or want to learn for fun, or your job require you use another languanges/framework.
Learning New Languange / Framework permalink
Here it comes, the learning something not be able to build something for a couple a hour or a day it sucks. but you started to think, hey, its just syntatic sugar, its kinda the same, the primitive is kinda same, the looping, logic branching And Data Structure is the same, holy, im great, you would think.
If You comes from C and learning Golang, you would think, holy shit, it uses pointer and struct too, its like battery included C and making a server is in the standard libary, that super cool. And if you know little bit of Kotlin Android Development, Hey, it uses the same, if not the same, somewhat similiar Context API for transferring data from page to another page and for golang context, it uses to transfer data from middleware to another middleware, hahaha i know this, you would say. and know you know why you should use a struct in C, and makes you a better developer overall.
And If You uses react and learning another web framework for example, solidjs, ha! i know it, it uses jsx, and kinda same API but i have to think performant way. in react you used to think everythink just works, let react VDOM handle the rerender, in solidjs, you have to think solidjs to been able to use it properly. in solidjs, the ecosystem is not as complete as react, so you porting the library for your spescific uses-case, and maybe you learn something new, for me, i learn how to make itersection Oberserver API from scratch because i want to port react library to my Solidjs App. and know you know the use-cases for both framework, what the pros and cons, and it makes you better web developer.
if you learning C# for unity for fun, you have to think object, everything is a object, it makes a perfect use-case for OOP. and you learn another design pattern for making a game performant or make easier to maintain, and you back to your fulltime job that uses OOP. and you wanna refactor something, and because you build something, not just read the design pattern, you remember the design pattern that you learn from another language, and apply it to your code. it makes you a better OOP developer.
i can go on with lots of example of why learning another languange / framework is good for you, and how refreshing to not just see, but build with something new in tech.
in the end, it all just a tool and have specific use, stop with languange / framework wars, just learn all of them 😁
P.S: Learning only If you have a time, and dont forget about your end goal.