Managers are excited about FS engineers simply because if they scoop up good ones, those who really know what they're doing -- masters of several areas of their stack -- they can rotate them effectively at a fraction of a cost, if not for free.
And besides, where does your notion of "full stack" begin? Is it backend application code? Operating system libraries? Kernel code? Hardware drivers? I'd argue "full stack developer" is a misnomer anyway, since no developer can (or would want to) write both kernel drivers and html/css frontends.
You do realize this comment is going to pull the exceptions out of the woodwork?
I wrote all of the software for the first version of the Teledyne Lumenera Ethernet cameras. Everything from assembly codes in the bootloader to CSS in the on-camera web pages. Heck, I even had to review and debug the PCB design before I could start.
I don't think this is a particularly uncommon experience. Embedded development usually has very small teams, and very often the hardware has HTTP API's.
P.S. I'm available for work. Information in profile.
Yeah, it's probably my personal bias showing. I'm fine with most parts of the stack (like you, down to PCB design), but UI/GUI/WUI work is an area that I try very hard to avoid.
The main thing "wrong" with a specialist is that not every org needs a full time specialist, so specialists are more likely to need to work as consultants.
When I interview for jobs they always ask very specialized questions. Everyone wants a generalist but refuse to interview them or pay them like one.
You’ve probably heard of the 10,000 hour rule, it’s a hard and fast rule to say that it takes roughly 10,000 hours of doing something to fully master it.
Maybe not true in all cases; but consider the suite of tools you have to be practicing every day to do even a single role: VCS/DVCS, shell, OS fundamentals, build-systems, networking, DNS… now we have distributed computing concepts such as kubernetes and various DSLs, then there’s your programming language(s), their standard libraries, their extended contrib libraries.
Completely non-exhaustive list and we’re already closing in on 5 years working full time for each of those.
The sheer hubris of assuming you can throw together a few frameworks and understand 1 or 2 paradigms and then claim you know “the whole stack” is immature and exhausting; similar to the sysadmins of yore who could read QuickStarts and claim to know how to maintain software fully.
Delivering business value is definitely what we’re trying to do, but when it comes down to it: engineering is understanding; and nobody can claim to understand everything, not with a straight face.
Full Stack is either: the most senior you can be or the most surface level you can be.
If the former: we can’t afford you and I’m not sure how you managed to keep all your skills up to date.
If the latter then specialists will need to clean up after you anyway.
Second, splitting a general role ("backend engineering") in arbitrary atomic skills doesn't make sense because there's no end to it. Backend engineering -> OS fundamentals -> Driver programming -> Hardware design -> Boolean logic -> Set theory -> and so on...
Third, all engineering roles have cross-cutting concerns. You do need some network knowledge to be a "backend guy"... but also to be a sysadmin, devops, etc.. It's not like all these roles exist in a vacuum and you're starting from 0 if you switch between them.
Finally, most people that think of themselves as experts in some role, language or framework end up in the "1 year of experience repeated 10 times" trap. True experts are also somewhat generalists too, because you can't built a tall knowledge without growing the base too (pun intended).
[1] https://www.bbc.com/future/article/20121114-gladwells-10000-...
Nevertheless, I have a solid understanding on all the things you mentioned and if you need help give me a holler because my rates are fair and I'm open to opportunities
Can they? My experience of people is that most of them can't master anything.
I fully disagree with that. Great software isn't just about what stack you have mastered, great software is build by people who can do whatever it takes to build great software, and that's not necessarily just about your stack.
Specialists, I have less experience with working with them though so take these generalizations with a big and hopefully non-insulting grain of salt. On the one hand they will be experts in their field, know whatever they work on inside-out, and can squeeze every last grain of performance out of it - good DBA's are worth their weight in gold, they can solve a company's performance problems and save them millions depending on the scale.
On the other you have a group of people that sorta know one language, like Java, and will just coast along on it for their careers; their CVs will look impressive, their skills will be indistinguishable from someone who has one year of experience. I've literally seen code that was a copy / paste of the first google search result of "java sql query", buried ten indentation levels deep, in a critical core codebase.