How is one supposed to specialize, when it seems like all the jobs want developers that are “full stack”?
Frontend, or Backend
It seems like the only real area left to specialize in is frontend vs backend. Diving deep into HTML, CSS, and JavaScript may open up the frontend jobs, and close off the backend jobs. Likewise, diving into the myriad of backend platforms can open up those jobs, and close off the frontend jobs.
This I suppose is just the first path to choose from. But it is not enough. Will you specialize in React? Angular? Vue? Will you focus on working with Spring? Hibernate? RDBMS? Document data stores? Each of those are specializations that could be employed.
Generalist
It seems like it would be more lucrative to remain a generalist. To stay away from specialization, so that you have a selection of jobs to choose from. This of course is one approach. While you do seem to have a large pool of positions to choose from, how deep is that pool? Not only are you competing with a great many other developers, but how much are you worth, if you are not an expert in anything?
How do you stand out from the crowd as a generalist? Perhaps you just hit all the buzzwords that are currently hot. Everybody else does that too. Years of experience? Others are cheaper.
As a specialist, you can become an expert (or perhaps even master) of that thing. While your selection of jobs shrinks, you have much more leverage. Perhaps employers will even approach you, because your particular expertise is exactly what they need.
Choose Wisely
Careful consideration is due here. Choosing a poor specialization could mean you are wasting a ton of effort. Specializing in a tool or technology that nobody uses will mean nobody will be looking for you. Sometimes specialization in obscure technologies can also pay off. There are still financial institutions that will pay top dollar for specialists in languages that most would consider “dead”.
So how do you choose what to specialize in? It is not just as simple as choosing frontend or backend. Can you specialize in a particular architecture? Can you mold yourself into being a microservices expert? Do you stand out in that crowd?
The whole idea is to stand out from the crowd. To find something that you can do better than everybody else, and others will need from you. While the job title may ask for a “Java Developer”, they are always looking for some niche. They need somebody who knows Spring forwards and backwards. Or perhaps can make some sense of their Hibernate expressions. Find the place where you can stand out.