Paradox of choice in web development
Web development in recent years has seen a massive increase in options for just about every possible aspect. While having more choices can be a good thing, the ever-increasing amount of frameworks, tools, and other such things can leave a beginner either stuck or in doubt.
Feeling stuck or doubtful
HTML doesn’t bring that many big choices. There’s the syntax, the core layout of the components, and that’s basically it.
CSS starts adding some bigger options. Do you go with simple CSS or do you go with preprocessor languages like Sass or LESS? Do you do all the styling yourself or use a framework such as Bootstrap or Semantic?
Next, there are libraries such as the perennial jQuery, not to mention smaller, more focused ones that can help deal with various situations your website can encounter.
Major frameworks include React, Angular (and here there is also a big choice between 1 and 2+), Vue.js or Ember.js. They all bring advantages and disadvantages, not to mention various paradigm shifts concerning their logic and features.
Going towards the back end, choices increase exponentially. You can go with tried and true programming languages like Java (Spring) or C# (.net), or with slightly more recent ones like Python or Go. More complex options include Node.js or Ruby, both with their own libraries/frameworks, and, even if it is the butt of a lot of jokes and critiques, PHP can still perform an admirable job.
Your website may need a database, so you can pick between a lot of different things, from MySQL to MongoDB or PostgreSQL.
Depending on your goals and needs, you will have to use tools to deploy, manage dependencies, run tasks, and help with the general build process of your website.
So, what to choose?
Given this abundance of choices, you may just find yourself flipping a coin and going with whatever lady luck has in store for you.
For those who are already working in a team, be it formal at a company or informal with your friends and like-minded beginners, go with the already-established route and maybe experiment a bit to see if something can be improved with another choice. Don’t go changing for change’s sake, but don’t fall into the “this is how things have always been done” trap.