Frontend is a complex area and over time it only gets more complicated
Most of the readers had to use sites such as facebook.com, youtube.com and gmail.com. Hundreds of engineers are working on them (and even thousands if you count the backend). This is due to the large number of requirements for these sites - they must load quickly, be safe and also look good. Frontend development today is more than just creating websites that display static HTML. Many modern sites are actually web applications. To create them, you need a well-thought-out architecture, and this requires a lot of skills and abilities from the developer.
According to statistics from google.com, 35% of companies want to see from a specialist not only front-end developer skills.
Is the development of mobile technologies threatening the existence of web developers?
Many modern products have their own mobile apps. There are so many of them that it might seem like it poses a threat to web development. I think this is only partly true. Some apps, like Uber and Lyft, are mobile-first, and that's natural. However, there are many other complex professional applications where the web (or any interface with large screens) will always prevail, such as office programs or design-related software.
If you look at things more broadly, it turns out that both mobile and web applications fall into the category of client applications. Many of the basic skills required to be a good web developer are also important for a mobile developer, that is, they are portable.
Tools like React Native and Flutter were also created to help engineers create products across platforms - by writing code “just once” (in quotes, because that dream is still in development). This approach, of course, is not a panacea and must still prove its worth, but it is quite applicable for prototyping small applications or even individual parts of your mobile application. The Facebook Ads Manager and Marketplace tab apps are built using React Native. There are many technologies that allow a person with knowledge of front-end development to create native applications on mobile platforms.
Despite the growth in the use of mobile applications, there are still many cases where a desktop application is better than a mobile one. Google Suite, Microsoft Office, design tools are still more effective on desktops. And many modern desktop applications are actually based on HTML5 technologies. You may have used similar apps yourself - Slack, Discord, WhatsApp Desktop, VS Code, Atom. I think developers with purely desktop skills have a lot more to worry about than front-end developers.
Jack of all trades, but with a specialization
All that said, frontend development is most often viewed as a specialization. Therefore, developer skills must be T-shaped. I first heard this term from my former manager at Grab - Tim Go. He advised me to have a specialization (frontend), but at the same time, little by little, understand other things. That is, you need to have a good basic knowledge of many things in your field of activity, but know one area especially deeply.
This advice is not surprising, but it is good. Most university programs assume that students will study the fundamentals of many subjects before choosing a major. For example, at the School of Computing at the National University of Singapore, students first learn the basics of algorithms, data structures, operating systems, computer networks, software development, and then choose what they want to study in more depth (compilers, computer graphics, artificial intelligence and machine learning, media, networks, etc.).
A good knowledge of the basics of many areas makes it possible to change the field of activity. Of course, such changes are not easy, but a solid foundation and the ability to learn quickly make the process much easier. As a last resort, if the web becomes irrelevant and no company wants to hire front-end developers anymore, specialists with a good knowledge of the basics can always switch to mobile development or back-end, or those platforms (AR / VR?) That will be popular at that time. ...
Having good tools (like Create React App, Parcel) does not eliminate the need for a front-end developer to have good development skills. What if your task is to create such tools? Good front-end developers go beyond the abstraction layer, they understand how their tools work and what tasks require a particular set of tools. They also constantly strive to create new, better technologies to meet ever-growing needs.
In Facebook, front-end developers are primarily developers, the specifics are secondary there. Many of the front-end engineers I know at Facebook don't just work on browser-related stuff. In Facebook's understanding, working on a frontend also involves building a lot of the infrastructure needed to scale well the front-end code. There are many tools out there today that simply wouldn't exist if Facebook's front-end developers didn't have strong engineering skills.
Learn the new skills you need
The best way to learn new skills is at work. But if these skills are not directly related to your job, choosing the right ones can be difficult. Thanks to the huge number of tools in the frontend ecosystem, I found a new area of interest for me - the theory of programming languages (static analysis, compilers and interpreters).
After reading the book Crafting Interpreters, I started writing my own interpreter. I intend to further explore this area in my free time. Perhaps I'll start building a frontend-related toolkit that uses static analysis and compilation.
Acquiring new skills in areas not directly related to the front-end, but related to it, should help me stay in demand as a specialist, even if the industry no longer needs front-end developers.
In general, while front-end development is quite specialized, it is complex enough to keep front-end developers needed for years to come. The frontend can only be threatened by global changes in user interaction with applications (for example, interfaces controlled directly by the human brain). But these changes don't happen overnight, so you'll have plenty of time to adjust anyway. A good knowledge of the basics of software engineering and the ability to acquire new skills will help you change specialization (or even change your career path).