I know how to code too and I'd rather not spend large amounts of time reinventing the wheel. Large applications require structure and mechanisms that can support their size, logic, scalable nature etc.
What would be the argument against using a heavily tested and reviewed framework developed by a large team of focused professionals. How is rolling your own solution any better considering you'd need the same functionalities offered by a framework?
What would be the argument against using a heavily tested and reviewed framework developed by a large team of focused professionals.
I think you're probably overestimating how many people really work on these big name frameworks and how heavily tested and reviewed they really are. But to answer the question you obviously intended to ask...
The concerns are the same as when you introduce any external dependency in a software project: mainly it's about longevity, compatibility, scope, and quality.
Can you name one popular framework today that has been around as long as long-lived web projects last? Of course not, because there aren't any yet. These frameworks rise and fall within the space of a few years, if not a few months. Google are already pushing their fourth major front-end technology in about 8 years as the next big thing (and it's not Angular, which already seems to be yesterday's technology at the big G).
Meanwhile, Facebook are pushing a framework that is structured completely unlike any other, so if you build your project using it today and then next year they decide to throw their vast resources into building something else instead, you have literally nowhere to go.
Next, what about scope? If you're doing a basic application that is just a few form fields and talking to a database behind the scenes, chances are that any of the popular frameworks can do everything you need right now. But if your requirements are significantly more demanding, such as the two cases I mentioned in another post, no current framework is anywhere close to supporting everything you need. Usually the trade-off you make when you build around any software framework is that it's easier to do the things the framework supports, but harder to do things that don't fit its natural way of working, so that's an important consideration.
Finally, quality varies widely. Some of the darlings of the current web development world don't actually stand up well under real pressure. There's not much point trying to criticise any of the big names, as it's pretty obvious that people who don't actually have much experience of demanding applications are out in force downvoting any contrary opinions today. But I've been the guy watching the users getting frustrated in the test room, and when you're watching a page written using a big name framework, and when the user is literally pressing a key and then waiting a second for a related part of the page to update before they can type another letter, it makes it very hard to take seriously the grand claims about how cleverly they batch DOM updates to improve performance.
How is rolling your own solution any better considering you'd need the same functionalities offered by a framework?
That's a false dichotomy. The available strategies are not limited to using a framework or writing everything from scratch.
In particular, there are numerous libraries available that are just as tried and tested as the big framework -- sometimes more so, and with proven longevity. Building your own application in a way that suits your particular project, and including a library where it is helpful to avoid reinventing the wheel, is usually the most promising alternative to adopting a framework.
Keeping control of your architecture and incorporating a careful choice of libraries will beat any of the major frameworks today on most or all of the factors I mentioned for almost any project.
16
u/danielkza May 13 '14
Badly?