Why should I use a framework?
A framework is not absolutely necessary: it is "just" one of the tools that is available to help you develop better and faster!
Better because a framework provides the certainty that you are developing an application that is fully compliant with business rules, is structured, and is both easy to maintain and upgradable.
Faster because it allows developers to save time by reusing generic modules in order to focus on other areas. Without, however, never being tied to the framework itself.
Investing in the task, not the technology
This is the basic principle of a framework: Do not have to reinvent the wheel. And do away with predictions, low-value-added tasks (for example, the development of generic components) in order to fully focus on business rules.
As an example, a framework will save the programmer from having to spend 2 or 3 days creating an authentication form (which is not a specific task). The time that is saved can be dedicated to more specific components as well as to the corresponding unit tests, providing high quality, sustainable and solid code.
Updated and guaranteed maintenance
In the long run, a framework guarantees the longevity of your applications. If a development team works as they wish, only this team in particular will be able to maintain and update the application with ease. This is how an editor supports a proprietary solution.
On the other hand, the framework that a framework provides to the application makes it possible to avoid this trap completely and gives any developer - whether or not he has participated in its development - the ability to easily "take" an application, to maintain it over time and update it quickly and cleanly whenever necessary.
Tasks that would normally take hours and hundreds of lines of code to write can now be done in a matter of minutes with prebuilt functions. The development becomes much easier, so if it is easier, it is faster and therefore efficient.
A widely used framework has large security implementations. The big advantage is the community behind it, where users become testers over the long run. If you encounter a vulnerability or a security breach, you can go to the framework's website and let the team know so they can fix it.
Most popular frameworks are free, and since it also helps developers code faster, the cost to the end customer will be lower.
Like any other distributed tool, a framework usually comes with documentation, a support team, or large community forums where you can get quick answers.
You learn the framework, not the language
I believe this is the biggest problem. If you are using a framework and you know very little about the language behind it, you will learn the framework rather than the programming language itself.
The core behavior of a framework can not be modified, which means that when you use a framework, you are forced to respect your boundaries and work as you need them.
Code is public
Since the framework is available to everyone, it is also available to people with bad intentions. It can be studied in order to know how things work and to find flaws that can be used against you.
We conclude that using a framework or not is an option that should be analyzed for each project, analyzing whether the pros and cons of using a framework can fit what is necessary for building and maintaining the software. Remembering that when we talk about technology, everything is a trade-off, a game where you take one part to deliver the other that is more interesting to the end result.