Warning, long answer below.
In today’s fast changing tech world, more and more companies, especially start-ups, are increasingly looking for “full-stack” developers. There are many interpretations of this title and I like the analogy used in the medical professional field:
A full-stack developer is like a GP or general medicine specialist. He has some knowledge and training all in areas of medicine, and can point you in the right direct for most problems. But you can’t ask him to solve all the problems you need, he usually refers you to specialists for surgery, psychiatrists and councillors for mental problems, dermatologists for serious skin problems etc. You can’t expect GP to give you all the treatment possible, and they don’t have the tools and training to tackle the specialised problems.
In the software industry, people aren’t as specialised as the many different specialisations in medicine, unless you’re talking about specialisations and certifications in particular technologies and framework (as you mentioned AWS and SAP consultants). When it comes to developers - people that write code - they tend to be more front-end oriented (implementing clients, UI and designs, making the app look to the design, animations and client specific logic) or more back-end oriented (API development, database architecting, business logic implementation). But within those 2 areas, each topic can be as deep as any specialization (database architecture its a huge area involving sys admins and proper database design, API development involves understanding what clients are calling it, what type of server to technology to use, how to host it etc). But each type of developer is generally expected know each topic, so in some ways they are ‘full-stack backend’ or ‘full-stack front-end’ developers.
So i think its a false dichotomy to call people generalists or specialists, because most people are generalists to some degree. Gone are the days where a developer only needs to know one language and one part of an application. Even if you are a “back-end” developer you have to know a few languages, a few database types, a few frameworks, and some understanding of front-end for integration.
The only remaining specialists are consultants that advise on specific tech and frameworks. They aren’t developers most of the time.
Personally generalisation appeals to me. There are things I’m good at and things I’m bad at, and if given time I want to do the things I’m bad at until I’m good that those things too.
“A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.”
— Robert Heinlein, Time Enough for Love
TLDR: I think developers today are primarily generalists. Some are more general than others. I prefer to be a generalist.