It works, but not better than having each team member specialized in one subject. It just works, but it has it's own pros and cons:
my experience
In my specific experience, when you talk about "full-stack" I don't only think about one "FE-BE-DB" project, but also another projects which are part of the company products (i.e. embedded products, testing infrastructure, cloud engineering...).
Pros:
- For management, it reduces the "cost" of a team member quit, because the rest of the team can quickly and easily cover up his tasks.
- For management, it's easy to assign a feature, they can peek anybody.
- It makes developers to understand how the different parts of the projects communicate which each other, their impact and how they work.
- Works better for startups where projects and teams are small and agile and usually the projects are MVP.
Cons:
- Developers who specialize (or really like to specialize) in a specific subject, naturally won't last in this team more than 1-2 years (guaranteed).
- Features quality and velocity, at the beginning, slightly drops, a bit more bugs occur. Overtime it will be better depends on the team members learning curve.
- You won't have someone that masters a specific subject if you'll need one.
- Doesn't work good on enterprise, where there are lots of huge projects, and the product is stable and full (not only MVP).