That's not the definition of full stack I've ever heard of before.
To me, full stack means front end + back end -- can write good CSS and can write good queries. Knows how JavaScript's "this" works, and can intelligently converse about data sharding.
Database administration, network problems, app servers -- these are most certainly NOT part of a full-stack developer's knowledge, any more than fixing the oven in the company cafeteria. And I wouldn't want a full-stack develop touching the company's network configuration or trying to do database administration on high-load production servers under any circumstances -- there are very good reasons that those are left to specialists in these areas.
Of course, it's possible you could have someone who does both full stack and DBA, or full stack and knows a lot about networks, but that has nothing to do with full stack. The "stack" web developers are talking about is, for example, LAMP -- Linux, Apache, MySQL, PHP (or pick your own stack), and it's about being proficient in all the layers of that stack, when writing applications -- not running servers or networks.
That's an interesting definition. I agree with the OP and I don't think you did a good job writing a convincing argument regarding your definition.
I think it's because of your clouded definition of "stack" when talking about a full stack developer.
You first say:
To me, full stack means front end + back end -- can write good CSS and can write good queries. Knows how JavaScript's "this" works, and can intelligently converse about data sharding.
Then you conclude with:
The "stack" web developers are talking about is, for example, LAMP -- Linux, Apache, MySQL, PHP (or pick your own stack)
Nowhere in your conclusive definition does JavaScript or CSS come into play. You began discussing various technologies and concluded with a description of back end development stacks (LAMP, LEMP, WAMP and so on), but not "full stack."
Your previous definition was a bit closer when you included JavaScript, HTML and CSS in my opinion.
When I think of a "full stack developer" it means that they can work anywhere in the entire technology stack, not necessarily the software development stack. That means they can SSH around to various services and fire up databases or tail log files or write JavaScript or generate Perl scripts or tweak CSS or anything in-between.
Are they a systems administrator? No.
Are they a database administrator? No.
Are they a front end developer? No.
Are they a designer? No.
Can they perform many of the common duties of those positions? I would hope so.
What you seem to have defined, is simply a front and back end developer, and not, in my opinion, a full stack developer.
And for a majority of the startups represented on HN, I'm willing to bet they don't have dedicated network guys, heavily-loaded production servers, let alone a dedicated DBA. As a company grows, the responsibility (and hopefully expertise) of a single employee narrows.
To me, "full-stack" means: You can do everything because we're a small startup.
If the stack, LAMP in this case, is Linux, Apache, MySQL, and PHP/Python? Why shouldn't you need to know about running servers, configuring databases, or other stuff to be a full stack developer?
Linux is the operating system of your server, you should know how to use it. Apache is your web server, you should know how to set it up and configure it. The same for your database MySQL. Obviously you had better know PHP(Python if that's what your P stands for) to develop any software.
I think you're mixing up Full Stack developer with Application developer. The application developer would take PHP and connect to a database to make the application and that's normally that. The full stack developer would set up the servers, configure them, create the application, deploy it, and all that jazz.
I'm not saying one is better than the other. You get more flexibility with a full stack developer but you can get more expertise with an application developer. It all boils down to the opportunity cost of having someone who can do everything well or 2-3 people should all be experts at their part of the puzzle.
I've never heard the term "application developer" in a web context before -- in all the jobs I've looked at and companies I've worked with, the terms have been "front-end", "back-end", and "full stack" which is the combination of the two.
I agree that a full-stack developer should have familiarity with Linux, setting up servers, configuring MySQL in basic ways, and whatnot -- that's what the "backend" part is built on, of course. As you say, they need to be able to deploy an app. But their main job is coding, not administration.
So they only need familiarity with deploying, not expertise -- they should be able to get a few servers running for a startup with load balancing. They should not be expected to know the intricacies of MySQL tuning, network security, Linux security, network management, and so on. You're not going to expect a full-stack engineer to know how to use Wireshark. (Gravy if they do, of course.)
I'm just making the point that full stack does NOT include professional-level systems administration or database administration. A full-stack engineer is not a magical go-to guy who knows everything. It's just front-end plus back-end. It's firmly in the realm of coding, not administration.
To me, full stack means front end + back end -- can write good CSS and can write good queries. Knows how JavaScript's "this" works, and can intelligently converse about data sharding.
Database administration, network problems, app servers -- these are most certainly NOT part of a full-stack developer's knowledge, any more than fixing the oven in the company cafeteria. And I wouldn't want a full-stack develop touching the company's network configuration or trying to do database administration on high-load production servers under any circumstances -- there are very good reasons that those are left to specialists in these areas.
Of course, it's possible you could have someone who does both full stack and DBA, or full stack and knows a lot about networks, but that has nothing to do with full stack. The "stack" web developers are talking about is, for example, LAMP -- Linux, Apache, MySQL, PHP (or pick your own stack), and it's about being proficient in all the layers of that stack, when writing applications -- not running servers or networks.