The question which majority of we developers ask always is “Which framework should I use for my application?” or “Which framework is the best to use?”
The answer to these questions always comes in as “it depends” because requirements differ project wise. It might not be the case that the project which you might be working on will be requiring the same framework used in the prior projects. Requirements vary all the time and the framework which comes very close for implementing the specified tasks would be the best framework for you.
Having said that it is important to list down the key points on why you choose a particular framework. It is never a good reason to choose a framework just because others say it is cool. Let us focus on the key points for deciding a framework. Keep in mind, I am not trying to impose the usage of suggested framework for any particular project. This is a topic of general discussion in case where you might be eager to try out a new framework but are stuck to the choice of framework to start from.
The key points which might help you to make your choice are (not in any particular order):
- Helps in getting acquainted quickly (eg: Groovy)
- Easier to find jobs (eg: Struts)
- Should not take a huge learning curve (eg: Tapestry)
- Time to implement
- Should make the task get completed quickly
- Should be pluggable with other frameworks (eg: Spring)
- Most important without which you will get stuck easily
- The more big the community the easier is your work done
- Bug tracking
- If at all you tend to go deep, ticketing support should be present
- Reference Books
- Essential since online searching can eat up your time
- Light weight
- Complex ones will do no good if is not used much (eg: EJB 2.x)
- There should not be any known bugs for the features you want to implement
- Makes good the time spent if one is more powerful than the other.
These are the 12 key points which I feel are very important when I look forward to work on a self project or am willing to learn a new framework. It is not necessary that all the 10 will be satisfied by one single framework. So it would be more beneficial to make a subset of these key points for shortlist your choice of frameworks based on your project.
How to finalize on a particular framework?
First, decide on comparing 2 to 3 frameworks at the max. The more you have in mind, the more confusion it will create. Plan out which features you want to implement for the given set of requirements. Do an exhaustive search on Google whether the features are provided by the frameworks you have in mind. Give points out of 10 for each of the subset key points. Compare the frameworks for the same subset of key points.
This will help you to make a matrix out of your choices and will further make it much easier to finalize your choice since now you would be sure of the reasons you are making a decision.
What are your key points when you first think when you pick a framework to work upon? It would be an interesting discussion to follow up. How did you shortlist your framework for learning or working on a project?