This is something I've been thinking about. There are four pillars to getting started w/ the language,I think: understand the 'this' keyword, understand the event loop, understand objects & how functions realty to them, and understand closures. Once you get those js is readable.
Something weird has happened though. With lambda functions, we can start teaching from a lambda calculus mindset. No more 'this'. And closures are baked into everything. Immitability reduces reassignment bugs due to scheduling.
i (back-end person) had to do some stuff with gulp and node and handlebars and a million other modules and everything i googled only got me results where i couldn't recognize any of the verbs people were using
It might be challenging at first but having React as the single source of truth for that state really helps things scale. This is good engineering. React shouldn't be used for static websites, but for applications it is very good at what it does.
The current big issue is that someone decided that HTML/CSS were close enough. Things like WPF get a lot right, though they're not perfect. Angular and React though just don't get the MVC abstraction right. They add too many layers to make HTML/CSS fit their style.
Yes - BUT - the overthink is a growing pain. We're doing things that were impossible even a couple years ago. Nostalgia for old frameworks wont fix todays problems. I think we've normalized being on the bleeding edge - not all apps need to be there.
So much complaining, so few proposed solutions. Have you ever had to build and/or maintain a frontend codebase with tens of millions of users? Go try doing that with jQuery or vanilla js and let us know if React's ecosystem still feels over engineered.
Your number of users doesn't define the right tool. The problem being solved and the resources (people, et. al.) available to solve it define the right tool. Generally, the right tool is the one the people understand the best.
Use what's right for the job. It's not all that hard with boilerplates like create-react-app and sane defaults. 😎
Try building an atleast medium sized responsive SaaS app with offline capabilities lots of interactivity without the frameworks and tooling of today! 😭
Nope. For the most part we are building much more complex applications. Tools like React along with sound software engineering principals such as TDD massively reduce bug density and help things scale.
React shouldn't be used for basic brochure websites.
Disagreed. Overengeneering only happens because people don’t like to read. Nobody needs to use React and all the trending tools. Avoid fatigue by just using what you need to get your job done and period.
"over-engineering" means the solution has out-matched the problem in terms of abstraction by some arbitrary margin. Determining if something is over engineered is therefore case-by-case, subjective, and dynamic. Does React outmatch all possible projects?
We've got it the best we've ever had it. Go look back at an old Backbone app, or the tied-together-barely-functioning jQuery from before that. The countless event systems, manual dom updates. The impossibility of debugging. The "build systems" from 5 years ago. It was terrible.