Paradox of choice in web development

The web development Hydra

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

Consider, for example, the three big pillars of front end web development: HTML, CSS, and JavaScript.

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?

JavaScript, however, is where things get really tricky. Do you go with simple, vanilla options offered by the language? Don’t forget that there are now revisions like ECMA Script 2016 that add big enhancements to the “standard” features. And the last big question concerns the programming styles: object-oriented or functional?

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.

However, a slightly better way is to focus on learning the basics as they are. HTML, CSS, and JavaScript won’t be going away, while frameworks, libraries, and tools can come and go. Try to research some of the basic choices here and then pick something that makes sense to you and your current goal. Can’t decide? Flip a coin. But the essential part is to focus time on what you have chosen and not let yourself fall prey to doubts. After six months of building things with the initial choice, you can go back and try a different route, to see if it still makes sense.

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.

Happy choosing!