Premise: This article won’t tell you which specific existing framework you must choose.
With this article I’d like to suggest key elements to evaluate in order to choose one and not regret your choice.
For many people they could be obvious and trivial.
I will therefore try to explain in few simple steps what to take into consideration for a rational choice of a new framework to use for your projects.
What is the framework for?
I believe the first and most obvious question should be: “What should the framework do?” but this question is often ignored due to the preference of another framework, pure laziness or other reasons.
Because using a framework created to fulfill a specific purpose is easier than adapting another one to our needs.
It would be like using jQuery to manipulate data structures, what would be the point?
So, if your final goal is not yet clear as to what you would like to achieve, this article won’t be able to help you in the search of a framework.
The more detailed informations we have on the goal that we want to achieve, the better will be the choice that we will make.
What are the main features I should consider when choosing a framework?
- Technical properties and features
- Community involvement
- Consequences of the choice
The features above are not listed in an order based on priority or importance because they are all four key for a good choice.
Obviously there will be some ups and downs for every framework, but those points should be taken into consideration precisely and with knowledge of the facts.
In a world on a rush, time is crucial.
The time factor is very important when choosing a framework. Why? Because without time to study it, test it and code that framework it’s pointless to struggle.
We often have a short time for delivering a project and introducing a new framework will almost certainly cause delays. Therefore in terms of planning ahead on timing we must check the quantity of code that this framework will make us write. Not only the actual time that we will take to write it, but also how complex will the code that you and your team will have to write as it will also cause a not little time loss.
The level of complexity impacts also on how mantainable it will be.
So the more you write code, the harder it becomes to support it later on.
Let’s remind the basic rules of programming:
e = mc² (errors = more code ^ 2)
Technical properties and features
The choice of a framework can be affected by technical aspects, by the illusions given by benchmarks of by the nice words that you could find on the framework’s documentation.
Do not be fooled, as the best way to know whether what’s promised is real is simple: testing.
However, as pointed out earlier, due to limited time, testing a framework might be a luxury that we can not afford, so let’s extract the most important technical feature from the available informations.
Is the framework suitable to the type structure that we have or that we would like to implement? Using a framework designed for a specific task is easier than adapting one to our needs.
Will it be better in terms of performace? Everything might look better, but if it ends up being slower than a snail what’s the point?
If we are choosing a front-end framework it is important to check the cross browser compatibility (keep in mind the part about timing).
Last but not least: knowledge.
You need to know the basics: to be able to choose a framework correctly you need to know the basics and the requirements to fully comprehend it.
When you choose a framework you obviously need to know what you’re talking about. By this I mean that you need to know what is the purpose of a framework. If you don’t have the basic knowledge it will be pointless to learn a framework as you won’t be able to understand it completely.
If you are not prepared, learn the basics and take a new look at it.
What makes a framework worth considering? The people that use it. Ok, but how can we figure out if a framework has an active community? There are different factors that can let us understand the involvement of the community for a certain technology:
- How many people talk about it on the web?
- How many people keep using it?
- How frequently does the developer answer to the issue reports?
- How many pull requests?
These are just some of the questions that can give you some information regarding the involvement of the community.
What are the advantages of a “loud” and “crowded” framework? An active community considerably increases the documentation on a certain technology, thus reducing the time needed to research and learn about it.
Furthermore if the company where you work is growing, it will be much easier to find staff familiar with the framework given its popularity.
Good, the community is active, but having an active community isn’t the most important aspect of a framework, what we need is a framework that fulfills our needs.
The true question that we should ask ourselves once established the community involvement is: how many of these people (better if big companies in the tech industry) actually use this technology in a production environment?
Finding out who uses a certain technology is far from easy, but often the creators themselves mention the companies that use the framework, and in case they did, check how they implement this technology and for which purpose.
Usually the development teams of these technologies release a roadmap on their future plans, so check what are they have in mind, as if there are no plans it might be a warning signal that says “we don’t know how to proceed” and that would mean that they would no longer support the project.
Consequences of the choice
Before finalizing the choice we should take a moment to think about the possible consequences of what the choice of the new framework could result in, in your development environment.
Remember that if you work in a team, for others it may be harder to learn it.
How long do you think they may take to become familiar with it and how much time do you think they can dedicate to learning it? Should they know anything else before studying?
In the beginning everything is nice, but if you made your choice without taking in account the points mentioned in this article, there will be a moment when you’ll have to face the cosequences of your choice.
The choice has to be thoughtful and discussed multiple times to see most importantly what the team thinks about it, and how.
There is no magic spell that will guarantee the perfect, unfailing choice.
A good article won’t make the choice infallible because there will always be the chance for an unexpected mistake.
It’s not about finding the best framework, it’s about finding the right framework.
Translation: Fabrice Tshipamba