I'm looking for a little advice from experienced coders. The thing is I want to have a coding skill. I thougth about Python or JS (already know HTML and CSS quite well). What attracted me to JavaScript is the fact that I can instantly see results in a browser, dunno how it works in Python.
I believe that JS is the future and eventually will be used even more extensively than it is now BUT I'm not interested in web sites development and/or big advanced apps/systems. Unfortunately most of tutorials focus on web development part….
I started learning Vanila JS, but I want to build something tangible asap, like a desktop widget or (really) small app and not quite sure if pure JS is the way to go (perhaps). React,Redux / JS Frameworks are super intimidating and black magic for me - so many crazy tools, libraries, frameworks, and even JS is growing super fast (ES6,7) - this world is really crazy, especially for a beginner.
I want to keep learning and have a little fun doing so, but mostly learn the language to build a solid base in order to choose a right path in 2-3 years.
I'm interested in:
What I tried:
I want to develop skills in this language but I'm stuck what to do next, which path to choose, which library / framework?
I know the topic is broad but I'd appreciate any of your advice.
Each language have its strengths, and what you seem to enjoy is real time evaluation, so compiled languages are not a real option.
On the same point, languages with a REPL might be fun for you, I could think of:
Those 2 languages are the trend recently but also still quite a niche.
(I understand those are not JS nor Python, but I think bringing those to your attention could help you broaden your selection...)
Why do I propose them? Because they are fun and will teach you some good practice and some of programming heritage (Lisp dialect with Clojure, Functional Programming with Elixir).
They also have a nice eco-system so you'll have all the tools you need.
Personally, I use both for small projects:
Those are just my 2 cents. A lot of other languages have potential as well.
Many of the things you're talking about build on top of JavaScript/ES6/Vanilla JS. So you should definitely push on to a solid grounding in the base language first.
If you are not comfortable with JavaScript, adding React or Electron is just adding a layer of complexity before you're ready.
I'd also say - with a 2-3 year window, there's no real harm learning both JavaScript and Python. By learning two quite different languages you'll see where you are learning _programming concepts, _which helps avoid getting too preoccupied with syntax/language.
Electron does nothing more than stick together a NodeJS instance and a Chromium shell. Basically, you have to write a front-end and a backend (just like for a website), but they will be one app later on. If you want to write a small app with that, I'd advise you to first get some NodeJS knowledge, so you feel comfortable and then just dive right into Electron. It's not difficult :)
NO. Please don't. Stick to vanilla JS until you feel very comfortable with it. All those crazy frameworks all solve particular problems*, but as long as you do not have these problems, using frameworks will just make stuff more complicated for you and limit your ability to work with different frameworks or come up with an original solution on your own. Learning vanilla JS will enable you to pick up any framework you like within a matter of hours later on, in case you really need it.
\* For example React was created by Facebook to solve their problem of having many separate widgets on their site and needing to somehow develop and (re-)use them separately. Nothing you would ever need in a small application (and nothing you ever need if you know about proper strict CSS based decoupling, however that's something for another discussion)
To be honest, I think that Python might help you with some of your goals, like data manipulation and especially with analysis. There is a load of libs out there for lots of different use-cases and scientific purposes. Python also allows you to see results at once (at least when using the terminal...) and you can develop small applications using Python plus a GUI library. Qt would even be pretty easy to pick up, because their GUI ML (called "QML") is pretty similar to HTML/CSS in many places, which you already know.
However, when talking about switching between languages, I usually think that there are many different languages out there, so you really should at some point start picking up a second language, so you can develop a greater variety of applications. For my hobby projects and work, I had to pick up quite a number of different languages (like C, C++, Delphi, Object-Pascal, Basic, Rust, Python, Java, C#, PowerShell, Bash, CMD, STL, JavaScript, PHP, TypeScript, CoffeeScript, Perl, etc.), and I think that once you understand the basics of programming and logic, it's just learning a different way of doing things, syntax, standard library and a few small quirks.
To put it into a nutshell, I think that you should do what you want to do and what keeps you motivated. Check how others solve certain problems and try to imitate them. If that means picking up another language - why not? You can only gain experiences by doing so (as long as you don't start leaning 10 languages in a month, which surely isn't healthy). Also check out the FAQ for new developers, you might find a few more answers to possible questions in there :)