DEV Community

Cover image for Stop Fighting About JavaScript Frameworks
John Woodruff
John Woodruff

Posted on • Edited on • Originally published at johnbwoodruff.com

Stop Fighting About JavaScript Frameworks

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 destroyed", it goes on and on. Even the survey itself says:

The front-end remains the key battleground for JavaScript. But now that the dust has cleared, it's starting to look like only two combatants are left standing...

It's disappointing to say the least that the JavaScript community that I love so much has turned into one giant argument about who's better, cooler, in other words, the "winner".


React vs Angular vs Vue

React vs Angular vs Vue vs...

This is the tale as old as time. I can't tell you how many articles I've seen and read about why React is better, Angular is better, Vue is better, Vanilla JS is better, etc. There is the full spectrum of these posts. From being very fair and open minded by addressing the best and worst of each framework and inviting the user to decide what works for them, to being downright biased and essentially saying Framework X sucks and Framework Y is the best, with little offered for reasoning.

All this serves to do is foster a culture of superiority and gatekeeping. You're not a real developer because you use the inferior framework. Unless you're using the hottest framework, you're not worth hiring at my hip and happening startup.


Developers

It Hurts Everyone

Saying and promoting ideas like this is damaging to the community as a whole. Take the State of JS survey for example: The number of respondents was approximately 20,000 developers. That's very small representation compared to the industry. Stack Overflow's survey had over 100,000 respondents.

There is also something to be said about the fact that the makers of the survey are React library authors with heavy React developer followings. So naturally simply due to the audience they cater to, there will be a hefty amount of React developers responding to and sharing the survey amongst themselves.

The problem with this is that this survey is being presented as a definitive view of JavaScript in 2018. With such a limited and focused sample size, the results are likely skewed towards certain groups. This is problematic for developers who take those results and show them to their boss saying "look at these results, Angular is dead, we need to migrate all of our code to React or Vue". I've literally had discussions with people to that effect. It's not based on what the best option is, but rather the most popular according to one small survey or blog claiming to be the definitive view of the JavaScript world.

This is harmful to everyone, because companies and developers will spend a lot of time doing what someone views as the most popular thing to do rather than the option that might be best for the company. For example, rewriting an app from Angular.js to React despite the fact that an Angular.js to Angular transition may be faster and easier due to the concepts and fundamentals being similar. I've also heard of a developer being hired at a startup and telling them that Angular is the best framework and they need to rewrite their entire React app in Angular, costing months in time and money.


Holding Hands

Stop the Hot Takes

I'm personally over all the pundits proclaiming why one framework is better than another, or declaring a winner of the "framework war". It is, in my opinion, a form of gatekeeping that we as a community don't need. Why does there have to be a war? I would argue that there's not, or at least shouldn't be, a war. Especially in 2018, when React, Angular, Vue, Aurelia, etc. are all excellent modern frameworks with amazing reasons to use each.

Use what makes you happy. If it's React, Angular, Vue, something completely different, if it is enjoyable and helps you to be more productive, then it's a good thing. Let's please stop using these surveys and articles to try to convince everyone else that your choice is right and theirs is wrong. Let's love each other and love our own choice.

Disclosure: I am a happy user of both Angular and React. This article is not intended to be a low-key "Why Didn't Angular Get First Place". Hopefully that's not how it sounds. I simply want to help end the "war".

Top comments (30)

Collapse
 
differentsmoke profile image
Pablo Barría Urenda • Edited

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:

  • That they have an obligation to comply.
  • That they should be shamed for having used whatever particular set of training wheels helped them get to where they are at the moment (I know I used them, to this day).
  • That they need to drop what they're doing and give top priority to becoming better in the eyes of their peers.

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)

Collapse
 
johnbwoodruff profile image
John Woodruff • Edited

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:

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.

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!

Collapse
 
Sloan, the sloth mascot
Comment deleted
 
differentsmoke profile image
Pablo Barría Urenda

Rick,

  • I believe this post is unnecessarily disrespectful and may be against the code of conduct. I'd consider editing it and toning it down.
  • My whole point is that it shouldn't be respect or criticism, but there are good ways of getting away with doing both, because both are equally important.
  • Specially, you can make argument of the type "X is better than Y", but those are almost always framed by "under this specific circumstances".
  • This may be followed by a debate over which circumstances are more common, but eventually this may be settled, in the form of not a clear winner, but of guidelines of how to do things depending on what you need to accomplish.
  • Because the objective shouldn't be to "win", but to clarify this issues, as a community.
  • A community where you cannot discuss which approaches to software development are better is not a good dev community, but a community where everyone insults each other is not a community at all.
  • Tribalism actually encourages groupthinking, and prevents meaningful discussion as much, or maybe more, than excessive caution.
Thread Thread
 
Sloan, the sloth mascot
Comment deleted
Collapse
 
hashimwarren profile image
Hashim Warren

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)

Collapse
 
differentsmoke profile image
Pablo Barría Urenda

Interesting. Is this something you know through word of mouth or by looking at job postings?

Collapse
 
sduduzog profile image
Sdu

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

Collapse
 
differentsmoke profile image
Pablo Barría Urenda

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.

Thread Thread
 
gypsydave5 profile image
David Wickes

NO KIDDING.

recruiter: we're looking for a frontend SQL developer

me: o_O

Collapse
 
ashishsc profile image
Ashish Chandwani

Great post, it reminds me of this talk by the creator of Elm.

youtu.be/o_4EX4dPppA

Collapse
 
differentsmoke profile image
Pablo Barría Urenda

Whoa that talk is AMAZING.

Thanks!

Collapse
 
ashishsc profile image
Ashish Chandwani

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.

Collapse
 
yorodm profile image
Yoandy Rodriguez Martinez

SO STOP CREATING SO MANY!!!!

Collapse
 
johnbwoodruff profile image
John Woodruff

HA. Love this. There are quite a few. Reminds me of this XKCD:

Competing Standards

Collapse
 
isaacdlyman profile image
Isaac Lyman

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.

Collapse
 
johnbwoodruff profile image
John Woodruff

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".

Collapse
 
kaelscion profile image
kaelscion • Edited

"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".

Collapse
 
jeoxs profile image
José Aponte

OMG! Finally! I agree with you, too: every tool has a purpose! It might be good than another tool for X particular purpose.

Collapse
 
chiangs profile image
Stephen Chiang • Edited

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.

Collapse
 
johnbwoodruff profile image
John Woodruff

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.

Collapse
 
gaje profile image
gaje • Edited

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”.

Some comments may only be visible to logged-in visitors. Sign in to view all comments.