Getting started and reducing overwhelm as a frontend developer
TL:DR;
Focussing first on what needs to be done vs. how can often help reduce/eliminate decision fatigue when choosing what tools to use.
As a frontend developer getting stated it is easy to get overwhelmed. there are so many tools, libraries and frameworks out there. which tool to choose and which one not to choose can become daunting. however, it is because our focus shifts from what needs to be done to how can something be done. how can something be done will always have a variety, everybody would have their flavor of doing things. one might be better than the other in one area, whereas not so better in another area. there is also an element of personal preference that comes into play. given all these variables, increase in variety is inevitable. however, ‘what’ needs to be done when building frontends is always limited. if we look at all the apps, these are the fundamentals of all these apps.
receive input from the user.
send data to the backend for processing, or process it in the frontend itself, ie: the browser.
show output back to the user.
further expanding upon these fundamentals, there are different ways in which each of these tasks/goals can be achieved or need to be accomplished.
receive input from the user as a stream: ie: voice recording, video, etc.
receive input in batches, record user activity (unintentional).send data in batches to the backend based on user input,
or, continuously steam data to the backend.show output in batches to the user,
or, continuously stream data to the user - stock market trading apps, real-time information, etc.
within this there is another layer of expansion that can be done.
input from the user can be received in different ways and mediums from the user: camera, mic, form fields.
data can be sent to the backend in a variety of different ways, blocking, or nonblocking. blocking is when, while the data is being sent to the backend, the user cannot perform other activities on the app. and, non-blocking is when the user can still continue to interact with the app and perform other activities on the website.
output can be shown to the user in different ways: video, audio and text-based.
validation
validation is another element that needs to be taken care of to ensure that malicious user input does not bring the app to a stand still and prevent other paying users from accessing the application and using it. Validation is something that can be done in the frontend, or the backend, or both. there is no ‘right’ place of doing this. but not doing this at all often leads to trouble. because, there is not just malicious input that we need to protect the app from. but unintended harmful input from well intended user also needs to be accounted for.
platform
frontends are interfaces that allow users to interact with out application and benefit from the features that we offer. this interaction can be done in a variety of devices. mobile, desktop, laptop, watches and 3d worlds. keeping this in mind, can also help in reducing the choices that we consider when choosing to learn frontend technologies. if there is no particular goal here, it is best to use a library/framework that helps develop in the most number of platforms. this may not be the right choice, but often it helps one get started in the industry. and over time, one can tailor and adapt depending upon one’s needs.
the best way to develop frontends vs. the way most people are building them. ie: the market
the way most people are developing frontends may not be the best way. because over time with experience the industry becomes more mature and better solutions are introduced. however, these better solutions may not be as adopted and other ways that the industry is used to continue to be used. when earning bread is the goal, it is best to choose learning ways in which most people are building. of course this may not be the best thing to do. but you are the best judge here. get started with learning the ways in which frontends are being built at most places and while doing so, learn better ways - is one way such scenarios can be approached. and who knows while you would continue to build using ways that you dislike, you might come up with your own ways (and be the source of decision fatigue for others 😑😈 - of course one is responsible for their own indecisiveness.)
overall it is best to get accustomed to learning how to accomplish the different ‘whats’ that a frontend application demands than learning the different ‘hows’. Of course, you might not have the chance of building frontend apps for a trading platform that demands streaming data to the user and in those cases learning how to do this might not be most efficient use of time. and, learning a different ‘how’ to accomplish what you are already doing might be the most appropriate choice to make.
accessibility
this is primarily about how well our app suits and is usable by people who are differently equipped. while it is best to have our apps be usable by people of all variety. however, sometimes either what our app offers may not be usable by people of all variety, or in some cases this might not be the primary goal of ours when we are getting started. however, as the app grows, this is one area that might start becoming more important and something that one needs to start paying attention to.
These are largely the major elements or goals that need to be kept in mind when making a choice. and keeping these in mind usually leads to making a choice that can serve us for years and even decades.

