To me full stack means you are into the systems a bit too and would be capable of setting up the stack itself (and perhaps enhancing it, or setting up custom batch systems), not just working effectively within a larger space provided by the application frameworks.
But perhaps I just have the terminology wrong? Full stack developer = someone who works across the application stack, and I'm thinking more of "systems" or "backend" engineer?
When you are full stack there's usually an assumption that you are "better" on one side of the stack and won't be strong at everything. So a back-end focused full stack developer would be better at the things you are talking about while a front-end focused full stack developer would be much stronger in Javascript / CSS. The main thing is that you understand how an app works end to end and can contribute / fix bugs across the stack.
Of course, all bets are off if it's a small shop.
I do agree that when people use the term though they just mean "I can code in a backend and a frontend language".
That seems like an impossible definition to fulfill by most humans today, though. I mean, how "deep" do you take it? Pre-processed code? Assembly code? Object/Machine code?
Computers today (especially server-based systems) are so massively complex that I don't see anyone possessing working knowledge of "literally" the entire stack.
And then there's the question of the depth of one's knowledge. I'd argue that the more you spread it out, the thinner it gets at each level of the stack, just by virtue of the fact that one has only so much time to spend on learning, practicing and keeping their skills up-to-date.
I literally have enough breadth of knowledge to figure out a problem at any level of the stack from top to bottom with some help from google/books. And no, I don't mean finding it on stackoverflow/stackexchange and copying an answer :). This is what I define as working knowledge, that I know enough to be able to debug issues in the subject with help from resources which I also know how to access. Depending on my familiarity with the particular piece of technology and the difficulty of the problem this may take me anywhere from seconds to weeks. I don't just say this either, I have actively debugged issues at most "levels" of the linux application/OS stack throughout my relatively short career so far.
Basically, you give me a problem and I have the tools I need to figure out the solution or root cause without help from any other team members(though help can certainly speed things along). The only question is going to be time.
> And then there's the question of the depth of one's knowledge. I'd argue that the more you spread it out, the thinner it gets at each level of the stack, just by virtue of the fact that one has only so much time to spend on learning, practicing and keeping their skills up-to-date.
My depth of knowledge in each area shrinks and grows as I need to use it. As said above though, I have just enough depth in every area to "be dangerous" as they say. I certainly have more breadth than depth in most things but I match or beat my peers in depth on the technologies I deal with daily.
There is a lot of dumb jargon, misleading labels, and wrong analogies borrowed from other fields that are popular in tech right now. You can call yourself whatever you want, but if you have never used gdb and call yourself "full-stack," you are being pretentious.
I do think it would be nice if the term carried more meaning, but given most companies are running their systems on top IaaS/PaaS offerings from Amazon/Google/Microsoft/etc and tend not to care about things beneath the application layer until they're making more money than sin it's fine as-is for the time being.
So people who write operating systems and virtual machines are 'operations'? I don't think that makes sense.
Outside of web development I haven't heard about such distinctions like backend or frontend. There are application developer, system developer etc.