If frameworks are made to make the work easy and faster, then why do many developers oppose it? Bootstrap (in CSS) and AngularJS (in JS world) for example.
In my experience I would say that jr. developers love frameworks because they don't know a lot and magic frameworks allows them to achieve much more while experienced engineers already know how to do things and how to write own frameworks, in most cases they also understand what exactly happens behind the scences and they try to avoid extra abstraction, layers, processes and algorithms.
Most frameworks are really useless, people just make similar products and can't explain what real world problem they are trying to solve and how exactly they are different from other frameworks. In many cases architecture, support, documentation is also awful.
The main problem with frameworks is that they help a bit in start but later puts you into the cage, you don't have much freedom and will waste a lot of time fighting the framework itself. Each project is unique and you always should start from the scratch, from the lowest architecture level without any abstraction, tools, libraries or frameworks. Add a new layer of abstraction only when you faced a problem which can be solved by that way.
On the other hand, everyone can leran a lot from good frameworks and their authors. I've learned a lot from Bootstrap and mdo himself.
You don't need to use everything framework gives you. Good framework can be easily decomposed and configured. In most business apps I am using only about 20% of Bootstrap with many custom modifications above and on top of that architecture there is app's codebase itself. I have my on CSS architecture based on a bit of BEM and ITCSS. Bootstrap is just a small layer at the bottom I can always replace.
There is also a big difference between backend and frontend. Huge frameworks are needed on backend because it is not language's/platform's/OS's job to give you database layer, security, presentation, routing, caching and everything else. On frontend there is no need of frameworks - JavaScript today is a very powerful tool which allows you to communicate to browser directly and JS was invented for that, JavaScript itself already is the only one and best frontend framework. It will takes ages to master it and learn all modern APIs and standards. Small libraries can and should be used.
At the end, the core problem with frameworks is that most people expect too much from frameworks. It is not framework's job to build your app and your architecture. People always will blame everything else except themselves for not having something done.
Cool opinions by @maruru @chilimatic @mgiambanco Here goes my rant. :)
You're free to have your own opinion, as with anything in life; that is your right. But what is not cool though is pushing your opinion, and calling out people on using a framework that you deem unworthy, for whatever reason.
I happened at this tweet the other day, talking about how irritating it is, when a relatively experienced developer says something along the lines of "Haha! why are you using a loop, when you could just use a map?" to a beginner. This sort of a thing kills the "beginner enthusiasm".
And there's a similar trend that goes on in the "framework" case too. When someone is just starting out with a framework, and you call them out for not being aware of the "complete"/"bigger" picture, you're basically making yourself feel good at the expense of others, encouraging the users of the said framework to be seen down as inferiors — which is a big NO.
@mgiambanco has got it right; being inclusive and open to everyone, and all ideas, is paramount for any community.
As Dan Abramov has put it better, "Be liberal in what you learn, and be conservative in what you use" ... and be nice to everyone.
I hate frameworks. I think, people using this line (me included) are honest and it's not about being cool or punk or just for confrontation. But at the same time, I love frameworks. Someone sat down and worked on something to make the world easier in certain circumstances. In order to solve problems. I really.... hate frameworks. There are too many and finding the one which fits my problem might be more work than just writing a pattern myself. But hey, how could anyone not love just telling a customer: "uh, that bug will be fixed in the next version of the framework, I already reported it" and then do nothing because people will do your work. However I hate all the frameworks, because they work different from how I think they should work. Hey, I could do this kind of pro-con all day.
Yeah. I am torn. But I guess I feel about frameworks in the same way as I feel about human beings. I hate human beings. Especially when there is a traffic jam. Who wouldn't :) And I love Hashnoders :D Who wouldn't!
what frameworks ? .... it always depends what you need and what you want. general purpose frameworks are a lot of useless overhead but .... it depends how much you really know.
a lot of people can't compensate the lack of a framework because they wanna write applications and don't want to solve the basic problems ..... for me that's a focus / knowledge problem.
I personally don't like bootstrap or jquery but I use it on regular basis for customers because I'm not a frontend person. Angular event propagation, rendering cycle just suck and so on .... but you have to
I'm not a big fan of ORMs still I use them because I cannot expect the following developer to understand the databases or how keys work together....
I prefer libraries over frameworks any second but I cannot expect other developers, who are hired to maintain a specific type of app to understand or even be interested in my concerns ... that's why I use frameworks ... so I spare myself useless conversations about "my taste is so much better" :) unless I'm asked specifically than I will build something custom.
But only if I think they understand what they are asking me to do and give me reason not to use something standard.
A framework is useful when it's:
When those points fail; I hate frameworks. That's not to say you'll never encounter problems or can't figure something out - but that's where point 4 comes in - we have developer communities for a reason and I think in general, most web developers like to help each others (that's why we're all here, right?)
Marco Alka
Software Engineer, Technical Consultant & Mentor
Jon
ClojureScript Developer.
Frameworks come with assumptions. Without assumptions they are only small libraries with separated targets and you have to connect them together all by yourself. So frameworks can be sweet sometimes. However those assumptions may fail according to the different details of you projects. Some of the assumptions can be invisible in the docs or even in the code. And then it leads to the dark part...