First of all, before I explain my process on how to select a framework, it's important to think about why we need to use a framework.
When you start to implement a small software and you are very comfortable with a programming language chose, a framework can bring excessive tools and extra layers. By the way, if this small solution can grow fast, using a framework can be prepared for future expansion.
If your project has more than one member, it isn't a small project. Use a framework.
In my opinion, the great advantage to use a framework is just because of these points:
- It has many features ready to use;
- Many people testing it;
- Many people help it to improve.
You can create your framework or library set, but using something ready is very smart.
I tend to look for frameworks that use languages that I have some domain or that I plan to have soon.
An important point to analyze in a framework is its documentation and how quickly it is updated. You can check in forums and repositories. Then you need to evaluate the quality. I usually follow tutorials and change them by consulting official documentation to have my perception about it.
When you go to search tips on forums, you can validate the activity of the community. A strong community makes all the difference when you need support.
With the primary contact done you can have your first impression. You need to like how the framework works, don't be deceived. If you don't like it, in a few weeks you will want to change it.
Thus, you can go to the more technical part of your analysis with the below main questions:
- Have It all the main features that the system needs for the short term?
- Do the public benchmarks comply with the system demand?
- How is the update process? Easy, hard?
- How is the deployment process?
- How is the learning curve?
- There are people in the market that know it?
- There are some companies where you can get help? Paid, of course.
- There are any available courses?
- What hardware resources do you need?
There are many other variables that you can evaluate, but if you get these as a base, your choice can be better. Make a spreadsheet and write your results, because we forget quickly.
A concern that you need to have is don't forget how the language works, then you will never have a problem that you cannot solve.
Any framework will help you in 80% of your work and don't so much in 20%. There isn't a silver bullet, but you can be more efficient.