Recently one of my colleagues asked the following question on Twitter:
If I would like to start new web project, which technology should I choose for my front-end and why? There are so many of them and every one is telling me something different. @gutek, @liveweird, @Kamil_Mrzyglod, @marekgrabarz, @ElaMoscicka, @SebastianFyda— Michał Furmankiewicz (@mifurm) August 18, 2018
This reminded me of a time when I was facing pretty much the same issue.
The problem can be stated as the following:
There are so many frameworks available to build a website... which one should I take?
Before digging into the details and decomposing the problem we should describe the current state of the software development ecosystem.
Programming became popular and available to pretty much everybody in the late '90s. Computer prices dropped and silicon devices became available to every western family. Internet, as a communication medium, multiplied the collaboration effect so Linux and the GPL movement could grow. Knowledge became easily accessible to everyone interested in computers.
An implication of that was continuously growing number of wise programmers. More and more people had enough knowledge to build their own software. We started to build products. At some stage we identified a need for tools that will help us build products in a systematic and structured way - we have given them a name -
The 'dev force', big and strong, started to produce frameworks.... a lot of frameworks... Each framework lives its own life. Some evolve and flourish, others are abandoned and die.
With all that above in mind, we have to choose the best framework now... or bet on the 'good' horse.
The most important thing is to understand
the context. You should answer questions like:
By asking those questions you discover your context. Having a well-defined context allows you to limit the number of potential frameworks. In a best-case scenario, you should end up with one framework. Usually, you have to choose from 2-3 frameworks.
By having your context described you can ask an expert in a certain technical area for recommendations - if you totally don't have any idea.
Application lifetime is critically important. If you forecast your application to be operational and developed for many years you should take into consideration various different aspects. What about specialists availability, security updates, etc.
At this stage, you should have a clear overview of what you want to build. Now you should aim to deliver it reasonably fast. Fast does not mean without quality. Fast means, the time taken in consideration to deliver required value. This includes potential learning process or deeper framework research.
Usually, you would have to balance between simplicity and complexity. Simple frameworks allow you to implement majority of the common scenarios but are not flexible enough. The are designed to do
one thing. On the other hand complex frameworks have applicability in most of the cases, but it takes time to master them and understand the rules.
If you end up with multiple possibilities in frameworks selection you should rank them with following questions:
For those who work on Microsoft stack, I have a couple of recommendations. Visual Studio provides a number of project templates with already configured frameworks.
comments powered by Disqus