Let me start by saying, I'm not a front-end developer and I've typically stuck with PHP or Python for back-end development, Vue for simple front-end components and Bootstrap for styling. Like most developers, I've dabbled in other languages. But when I just want to get things done, these are the obvious go-to's for me. They are expressive and have obvious ways of going about things. Even putting a framework on top of PHP or Python has a fairly easy learning curve.
But I know that my front-end development skills are lacking. If it's more complicated than Bootstrap and a basic Vue component, I'll probably spend a lot of time combing through Stack Overflow looking for solutions.
Knowing this lack, I will occasionally dip my toe into the Javascript pool. Every JS framework assumes a working knowledge of Javascript before you can really get anything serious done. So I know that before I even look at Angular, React, etc I need to learn the ins and outs of Javascript first. Each time I've attempted to improve my Javascript skills, I've just become frustrated by how finicky and help-baked Javascript seems to be.
Am I the only one who feels this way? Has Javascript just gained mass acceptance despite it's many and significant flaws? And are all of these JS frameworks effectively an effort to hide those flaws?
If the article linked below from 2017 is any indication, I'm not the only one who feels this way about Javascript. (Fair warning, the cover image for the article isn't exactly SFW. Exposed breasts.)
Hackernoon: The Javascript Phenomenon Is A Mass Psychosis
But I wanted to get the Dev.to community's take on this.
Comments, constructive criticism and links to resources that will help a back-end developer become a reasonably competitent front-end developer are all welcome.
Am I actually stupid or is Javascript just gaslighting me?
Top comments (5)
If you take the language in a vacuum, I think any JavaScript > ES6 is on par with Ruby or Python. They may have different syntax, but the semantics of all 3 are very similar. However, JavaScript doesn't exist in a vacuum. Its tied to the web runtime, so understanding JavaScript means understanding the DOM, AJAX, promises, and different ES versions and features. On top of that, the raw interfaces provided by the web don't provide a lot of structure for building large applications. So the JavaScript community has filled the gap with userland frameworks in order to build clients with more features and functionality. The sum of all of this is a web ecosystem that has a high initial learning curve.
My advice is to learn JavaScript first, then the web runtime, then tackle the larger ecosystem. You know Python, so you already understand about 90% of the language semantics. If you install nodejs, you can run js files the same way you run python files. Once you feel comfortable with the syntax, you can work on understanding the DOM. If you want to make the jump to a framework, try it first with an opinionated utility, like
create-react-app
orng-cli
. That way you can focus first on understanding the abstractions of the framework without getting bogged down with details like build steps and distribution. All of this should give you a high level understanding of the JavaScript world.If you have specific JavaScript questions, dev.to is a pretty good site for getting a helpful response. There are plenty of knowledgeable front end developers who produce content here as well.
The way of how JavaScript works and is able to interact with APIs and frameworks seamlessly is a huge advantage for both front and back end...
I would probably compare it to java rather than ruby or python actually: Because the syntax doesn't matter a lot to Developers as they can pick up a new syntax really quickly usually. The way the Javascript runtime is perfectly integrated on any device, and works the same whether it is in a browser or on linux, hell even on windows, is perfect for full stack development as there is almost no complication when communicating to other devices.
Soooo basically: Take Java, make the syntax easier, Frameworks more accessable, and everything much faster so voila, you have a beginner friendly server side language that can be replaced with front end code on-the-go.
You and I apparently have very different definitions of "perfect", "easier", "more accessible" and "beginner friendly". :-D Javascript seems like such a slap-dash language.
haha :D I have worked with other languages and i got along with all of them really well but when i have others approaching me asking what language to use as a beginner i found to have the most success teaching javascript xD
People are overdramatic about JavaScript, but it could definitely be a better experience. Mozilla, Google and Microsoft became so obsessed with benchmarks that they optimized their engines to get record scores on benchmark tests, but it turns out none of that applies to real-world performance.
Some people refuse to accept the present state of Javascript. I fought for React so long at a previous job, but my manager thought it was too risky and would rather stick to jQuery and bringing in 20+ plugins to get through the project. I finally convinced them to let us use Knockout because one manager had heard of it, and I had the privilege of writing a 3000 line component. It was a nightmare.
On the other end of the spectrum, you have people who can't see any faults. So many frameworks make reckless decisions that alienate the majority of users. You end up with releases that don't actually work and absolutely no help from the developers when you report the bug. Package management is a disaster and I find that keeping track of any large codebase is a nightmare.
I like Typescript, but it takes too long to implement typing and the typing system is not as powerful as I would like. I really like Purescript and Elm, however. I wish I had more time to play around with them, they are exactly what I want in a programming language. I am a big fan of functional programming concepts in general.