What follows is a dichotomy between two worldviews on the same topic.
Part 1: The Pessimistic View
There is a lot of personal preference involved, along with ignorance, hype and superficiality. I know this sounds dark and pessimistic, but we also need to look at this aspect.
People want to get noticed so they will build things. If a new framework will get you that, you’re going to build it.
They can’t get along with another framework maintainer to have their way with an existing library and contribute their “magic” so they build their own.
Take for example Lodash vs. Underscore, Durandal vs. Angular vs. Aurelia. This is where maintainers of one project couldn’t get along with maintainers of another project so they rolled their own.
Then there’s the company war of getting the attention of the development talent. Google’s Angular vs. Facebook’s React.js.
Then, there’s also the hype around these frameworks and people taking sides because they prefer one company over the other, one framework over the other, for no objective reason.
Most of the “already existing” projects I’ve worked on we’re using one technology and not the other because the people who chose it, were either inspired by some talk. Or because “Netflix is using it, so if it works for them, it should definitely work for us”. Replace Netflix with Amazon or AirBnB or Google or Facebook.
The technology choices were made based on GitHub stars and tweets, not GitHub issue count, pull request count, community size, Stackoverflow community size and documentation availability/clarity.
Shameless plug: I wrote about the exact topic of choosing a new technology, in 2016. Still relevant, so check it out: Top 5 things to consider when choosing a new technology.
But many of the pessimistic scenarios above fade in the face of sheer innovation, progress and problem-solving.
Part 2: The Optimistic View (aka seeing the light)
I’m actually giving a different version of that talk again, in a couple of weeks, at TechFest Bucharest. Looks like the topic is still relevant.
We keep complaining that everything changes, yet we also try to learn everything, all while forgetting to prioritize the basics.
To circle back to the brighter part of my answer, I do believe that the reason we don’t agree on frameworks is because each solves a specific subset of problems in a different way.
It’s important for us to figure out which problem are we trying to solve and if the chosen tools fit the bill as close as possible.
It’s true that being an X tool fanboy/fangirl can make us treat that tool like a hammer and hit everything in our sight as if it were a nail. That’s the pain of the conference talk brainwash.
To put it in an empty consulting sentence: It’s all a matter of choosing the right tool for the right job.
As long as we’re able to keep our urges for the new and shiny in check, at least partially, a lot of great things will come out of this disagreement.
As always, the idea for this article was sparked by a question I was invited to answer, on Quora: Why can’t everybody agree on one JS framework like the jQuery days?.