
It’s generally not worth stressing too much over your choice of tech stack, unless the technology you want to use is a real game changer, or you are working for a multibillion dollar company, developing commercial software for a massive user base, where optimisation is non-negotiable.
Otherwise as a tech entrepreneur, your main goal isn’t to optimise the tech stack, at least not in the short term, but rather your revenue. The only way you are going to achieve that, is by shipping code fast. Continuously trying out new ideas to see what works and what doesn’t. AND in order to accomplish that, you work with technologies you are already familiar with. No matter how much of a thirst for knowledge one might have, trying to learn everything is not ideal, and will only hinder our progress in the actual service delivery.
I am not saying that one should just stick to plain HTML, CSS or JavaScript, and don’t learn anything new. But it gets to a point, when you need to stop and ask yourself, is it really necessary? If you are constantly in search of the most optimal technologies to accomplish everything, what does this eventually lead to? Machine code? It’s native to every computing device on the planet and the most low-level. But obviously no sane person is going to do that, as it’s too time consuming, unproductive and tedious to work with. Most modern devices are more than capable in handling all these technologies and frameworks. Oh your user’s device can’t handle it? Write better code.
Next time you find yourself in the moment chasing that perfect, shiny framework. Stop. And work on the actual product, rather than trying to squeeze out every drop of performance from your tech stack choice.
Oh you are still obsessed? Then let me introduce you to my perfect stack. React for everything client side, web and mobile (using React Native / Expo for cross-platform deployment). Might not be the best for every use case, but they are easy to learn, popular and gets the job done. Backend will be where the obsession is directed and should adapt to the use case.