Ruby - seems like a great choice but it's "dead" and it seems like it would be hard to get a job (I'm in Europe)
JS/Node - Seems to be something most people hate working with while also having tons of flaws
Golang - Seems much harder to learn and people don't seem to like it either
So how do I choose one? How do I start learning a language and which one would you recommend?
"There are only two kinds of languages: the ones people complain about
and the ones nobody uses."
Just a few examples;C++ gets tons of bad words. It's still one of the most important languages.
Java is not exactly everyones darling either (eg. I hate Java with a passion), and is still among the top3 of highest in-demand languages in the World, and will likely remain so for the forseeable future.
Python (a language I love) is critizized a lot for its flaws (rightfully so) and is currently the top language in the TIOBE index.
Golang never hears the end of it for valueing simplicity and readability over complex features and "cleverness", and yet more and more big Software is written in it every day, the ecosystem is thriving, the positions are well paid, and there is no sign of slowing down.
It really seems like a no-brainer for your requirements; don't worry too much about other people complaining about stuff - you can find complaints about every programming language out there.
There are many coding boot camp style websites - I’d probably get into a beginner one or just beginner JavaScript tutorials on the web.
There’s tons of options and unless you start with one you will not be able to compare when you try the next. Good luck!!
How do I start learning a language and which one would you recommend?
Find a small project you've already written in language X. Starting with the smallest, translate a single function from X to Y, then another and another. Note that nothing has to run yet, we are just looking for syntactic correctness. Keep doing this until you get back to the entry point (where the program starts, normally command line option parsing). Along the way you'll have learned not only the syntax and source code organisation of the new language, but also experimented with the libraries available in the new language, and hopefully have something which at least runs. At this point (probably before), you'll begin to feel confident enough to start using features in the new language which don't exist in the original one, and be able to agree or disagree with naysayers with confidence.
BTW, I used this approach from Perl to Python, and from Python to Golang, and have found it effective in both cases. Good luck!
For example, let's say you choose Go, or JavaScript/node. Now what? You're now lost and need to take thousands of decisions for building anything web related, from ORMs to how to do validations to how to do translations to background jobs, etc,etc.
You won't have those problems of you choose Laravel or Rails for example.
Now that's my "business" answer assuming you want to build and ship something on your own money/time.
If you only want to learn to get hired, then yes, any of the popular languages will do it.
Choosing what motivates you is probably easier said than done. So you might have to spend a little more time on why you want to learn programming. After that, think about what exactly you want to create. What tools would you need to create that? You go from abstract to specific.
edit that might have been the fastest comment-to-first-downmod I've seen, impressive :)
So far: Zig, PowerShell, and FreePascal via Lazarus have been standouts in this regard. Clarification: By which I mean they have been stand out languages for my usage, which is decidedly not webdev.