The State of JS survey is live, and with it comes the usual tweets about this or that framework "dominating" others, one or another "has been destr...
For further actions, you may consider blocking this person and/or reporting abuse
There has been over the past few years a move towards policing the tone of developer communities discussion, the amount of gate keeping that goes on in them, the erection of codes of conduct to foster inclusive and civic behavior and I firmly believe that this is a good thing. However, you can have too much of a good thing (see water and drowning).
I understand there's concern about petty squabbles and gate keeping when shaming people for using framework X, for using outdated technology or for favoring the wrong paradigm. However, if a software developer community can't critically examine the tools of its own trade, then what's the point of having a developer community at all? Other communities could fill in the need for social interaction or the need for moral/emotional support, but the point of a developer community is that we can talk about development issues. The problem is how we do it, but not that we do it.
To give an example, any JS beginner should be told that relying on jQuery in 2018 is a bad idea, that a transition to Vanilla JS and/or other tools will save him a lot of trouble in the long run. But this doesn't mean:
There are objective cases to be made why jQuery is a relic (that we're grateful to), why the
class
keyword was a mistake, or why React is better than Angular. And objective cases to be made for the counter points to all of those arguments, and probably none of them are going to be universal but depend on the specifics of any situation.The problem is not in making those cases, the problem is making them in a manner that does not encourage tribalism and gate keeping, but in a manner that helps the community as a whole self-reflect on what our common assumptions and best practices are. Because in the end we're all in this together, and while
"Use what makes you happy."
is great advice for a passion project, anything that expects to enroll more than one developer has to take into account what's best for the group, not just for the individual. Ultimately the objective is not to determine "who's right", but to have a better collective understanding of why, say, framework X chooses to do Y, but framework Z does the opposite.
The objective, I'd say, is to think as a group while avoiding groupthink.
I have not read the whole State of Javascript 2018 results, and I will agree with you that the idea of a battleground where there are frameworks left standing does conjure up the wrong imagery, but overall, I believe the survey is quite transparent about what it is: a survey documenting the preferences of a pool of developers who willingly participated. There's a bunch of statistics about the survey itself, so you can get an idea of how that particular consensus is arrived at. Surveys such as these are never going to be totally neutral, but I believe this one does its due diligence towards neutrality, within reason.
One final thing, and my apologies if you feel I'm out of line here, but I feel this needs to be pointed out: from your profile, you seemed to be quite heavily invested in Angular, you complain about people wanting to migrate to React form Angular based on surveys such as this, you complain about the survey being skewed towards React and you even cite a survey with "better representation" that also just so happens to put Angular above of React. I believe, and I may be wrong, that you are staunchly in the Angular camp. That is absolutely OK, but since you don't come out and say it outright, it makes me wonder if you're aware of this bias, and I think it is worth asking yourself, seriously: would you feel the same about this survey had Angular come up on top?
(Full disclosure: I'm at the moment 100% camp React, but I don't intend to be forever)
Thanks for the well thought out response! I love the discussion! :)
You're absolutely right that developers should be critically thinking about the tools and technologies they use at all times. I tried to make that clear but probably didn't do as good of a job as I thought. What I was hoping to put across is the negative effects of promoting this "framework war" where there's a winner and losers. I argue that there are many "winners" in the sense that there are many excellent options for people to use, and it depends on your situation, use case, and preference.
When it comes to use what makes you happy, I definitely meant to refer more to personal projects, not larger group projects where a consensus should be made over what to use. That's why I brought up the developer who insisted they rewrite their whole product in Angular, simply because it was a preference. I believe that is damaging to the group involved. I'm seeing many places where I wasn't as clear as I thought. ;)
You said a lot of this really well, particularly the following:
That's exactly what I was attempting to put across, so I appreciate you helping me out there. ;)
Final note: While I definitely enjoy Angular, I'm actually a fairly heavy React and Stencil user, I just have very little of that on my GitHub because most of it is through work with non-public repos. So I definitely wasn't trying to complain that Angular wasn't in first. The results weren't my issue, but rather the way in which they were framed. (i.e. Battle of the Frameworks)
Thanks again for your comment!
Rick,
As an aspiring developer I've had too ignore articles proclaiming jQuery dead.
Why? Because many of the job postings I'd like to be eligible for require jQuery. It's still very popular, especially in my industry (Media, Marketing)
Interesting. Is this something you know through word of mouth or by looking at job postings?
Down here they still put up Angularjs along with other Vue and React. I'm not sure it its on purpose or recruiters are somewhat clueless
My impression from job hunting a few years back is that recruiters, especially in bigger companies, may be a bit clueless or be working off of outdated guidelines.
NO KIDDING.
recruiter: we're looking for a frontend SQL developer
me: o_O
Great post, it reminds me of this talk by the creator of Elm.
youtu.be/o_4EX4dPppA
Whoa that talk is AMAZING.
Thanks!
For sure! I saw when I attended Strange Loop, the talks are usually of very high quality there. Evan in particular always has good ones.
SO STOP CREATING SO MANY!!!!
HA. Love this. There are quite a few. Reminds me of this XKCD:
You're absolutely right. This is a hard one for me because I feel so much genuine
frustration about [unnamed framework], which I use at work. It's at least partially my fault, I guess. I learned front end back in 2010, when jQuery was at the top of its game, and got really familiar with ES5 and browser APIs. Now, with [unnamed framework], I feel like I have to re-learn everything because it puts so many layers of abstraction on top of the browser. It's painful to find myself wanting to do something that I know how to do, but I can't because there's a new/special way to do it in [unnamed framework]. Plus the documentation is incredibly unhelpful, and the framework isn't consistent with itself...and the syntax is abstruse...and everyone who uses it is an elitist...and I hate puppies...and the world is a dark and cold place...blah blah blah... /s
sighhhhhh I feel so old.
You're absolutely right that as a group you're going to have to make a decision about which framework to use, and a lot of it is going to be based on preference. What I'm hoping doesn't happen is that those conversations get nasty because people become too invested in their preference. At a place of employment we literally had multiple developers leave the company because of the Angular vs React debate that got really nasty. (we ended up choosing React) It ended up harming the company because we lost several incredible developers, all due to this "war".
"The best tool for the job is the one you know how to use well." Ultimately and in my personal opinion, all frameworks have a life cycle that has an end. Eventually, somebody will fork one of them for their own use, it will gain steam out of nowhere, and replace its predecessor. This is how software evolves and improves. A lot of us get annoyed because things change so quickly and we have to relearn everything every two weeks. I personally disagree with that. I've developed using a largely similar stack for going on 5 years now. I work with Python, Flask, Gunicorn, and Nginx for web development. Ive used jQuery for the front end for a long time and would rather solve UI issues with CSS3 and HTML5. Are there better solutions like SCSS or Bootstrap or Vue or Angular? Sure. But I don't know how to use them because I'm busy building stuff and I am comfortable with the tools I have and am an expert in their use. When I learned about Docker, I added it because it made my life easier. ES6 made JS useable to me rather than a repetitive mess so I replaced jQuery.
I largely think that these frameworks give us the illusion of better applications. But if you are a great JS dev and adopt React, Angular, or Vue because you think your supposed to, then try to build production apps with it before you have the same expertise in that framework than you had with your previous dev tools and frameworks, the results will be lower quality no matter how capable the new framework is to build better apps. The frameworks capabilities are meaningless if you don't know how to use them and trust me, two weeks of learning Angular because your new trendy startup wants you to learn it does not make anybody, even the polyglots, experts. Learn new things that promise to shore up the weaknesses of your current stack for sure! That's most of the fun with programming. But don't try to cram it down your throat because its "cool" and PLEASE don't try to build production stuff with it until you've built up your chops on pet projects.
Frameworks are always temporary. They will change. The flavor of the month will be different soon. Learn what you think is fun to use, but build with the tools you can use like a master craftsman, even if their not "cool".
OMG! Finally! I agree with you, too: every tool has a purpose! It might be good than another tool for X particular purpose.
I really enjoy both angular and react, but like other tools, there's not one perfect solution nor the best solution for everything. These results don't seem to differentiate between angular js (1.x) and angular (2.x+), and I think that is an important thing to include add they are very different and I don't wouldn't want to go back to 1.x. but I'd gladly use 2-7 any day.
Oh that's an interesting observation. I'm the same, I'd definitely not use Angular.js (v1.x) again, but the latest I'd use in a heartbeat. Weird that they didn't split that out considering they're essentially two different frameworks.
More importantly, instead of “which framework is better?” I wish more devs were asking “why do we need frameworks?” Did we miss teaching/learning fundamentals somewhere in the journey? Did we ever stop to learn or fully understand State driven design? Or did we just jump to a framework because some blog told us it was “fast”? Does your blog site really need a virtual DOM? Probably not. Is componetizing your site beneficial? Sure. But do you need React + Redux + React-router + a dozen other React libraries to achieve any of this? No. You most likely just skipped over the fundamental patterns of state driven design and understanding the observer pattern that most of these framework rely on. In fact, I’d say 90% of modern development can be described as “Resumé driven development”. If you’re a young dev and you look at job postings, they all say “must have experience in React/Angular” and that drives devs to one or the other without ever understanding the problems that these frameworks solve in the first place. My point is: if the only tool you ever learn to use is hammer, everything quickly becomes a nail. Stop trying to apply frameworks to everything and learn to be smart engineers who know that understanding when NOT to use a framework is just as important as choosing “which one is better”.
Fine! I'll just find something else. That CSS vs CSS-in-JS seems to be a good one.
My favourite! I like how devs poke their eyes out on that one
Don't stop fighting. Keep it up, that's how democracy works and solutions are found. You have to risk being offended in order to think.
This was a great post. I share the same thoughts you => the most popular framework will not always be the right framework for ALL use cases
Your friendly React developer 😉
It's important to know why is angular react or vue the best, in multiple point of views. These comparisons which you are calling a war are crucial.
Why?
Well there are tons of new projects every year, and tons of migrations. So it is important for each to assess the frameworks so that they get to know they fall in which category and which one is the best for them.
Thanks for your comment! A few of us have talked about this in other comments, but basically my opinion is this: Constructive criticism of each framework is crucial, so we can know the pros and cons of using that framework. Not only that, but it helps those frameworks get better as they eliminate pain points developers discover. That helps the community. What doesn't help the community is when people pit these frameworks against each other in an attempt to proclaim that one is better than all the rest and you shouldn't use those others.
That is all highly subjective and is (in my opinion) a form of gatekeeping. Essentially it's saying that Framework X is much better than Framework Y, so therefore you shouldn't be using anything other than Framework X. Well now you've told all the developers who will be using Framework Y in their jobs that they're using an inferior tool, and they should change for the sake of their jobs and the company.
React Angular and Vue are three incredible modern frameworks that each have their own pros and cons for use. Pitting them against each other is needless. There are times where it makes more sense to use Vue than React, Angular than Vue, etc. Most of the time however I feel it comes down to developer preference and experience, as all three will help you build an awesome modern web app.
You bought a tire(choose a framework), you keep on vulcanizing it, you got tired(no pun) so why not buy another one(choose another framework). Repeat
Wooooooow