By the way, the same applies to software: If any developer can say they're "full-stack" without further specification (i.e, they're full-stack everything) with a straight face, than they should be punished by being given $200 or less of electronic components and a processor of their choice, and asked to make a webapp. No external libraries, that's cheating. Maybe give them an assembler if you start feeling sorry for them.
The terminology full-stack is meaningful to discern between an expert at one part of the stack and someone who knows how to set up and manage all parts of the stack. For example, consider the LAMP stack:
Linux
Apache
MySql
PHP
A Full-Stack developer is someone who knows enough Linux to set up an Apache server and MySql database, enough MySql to create a database, enough PHP to render a decent web page.
On the other hand, a frontend developer knows the gritty details about how to render a beautiful and performant webpage that works on IE6, iPhones on 2G and your 4k monitor.
Cute. Short, witty, and to the point, with humourous undertones, but maintaining the barbs of the insult, as the implications rapidly become clear.
However, such a quick, "fuck that guy, amirite?" type insult is so common that it's become boring, especially amongst programmers, who have gotten a lot of practice insulting each other over the internet in the past however-many decades: our culture has adjusted accordingly, and the bar has been raised on effective insults. You can tell what is an ineffective insult, because the recipient will immediately turn around and mock you. You know, like I'm doing now.
However the GP isn't trying to insult you. The GP is stating that most (non-idiot) people would interpret "full stack" to mean "all the software stuff"
This is simply a direct counter to your argument that "every non-idiot thinks full stack means everything since the stone age"
Yeah. It wasn't quite that. I was exaggerating for comedic affect. But if you say "full-stack" and don't follow it with "web," there's an obvious connotation. So I took it.
Also, "all the software stuff" still means down to assembler. So that'll be fun.
Yes, I know that's not what you meant, but why stop the fun now, just because I couldn't keep my terminology straight?
I think the other distinction there is that a "full stack developer" might have a comfortable understanding of how all these things work in quite a bit of detail.
The understanding does not mean that they want to take the time investment of recreating all that work from scratch.
For instance,
I understand branch prediction, cache lines and inter-processor synchronization. But I'm no kernel developer.
I know what the assembler does, and its goals. But I haven't made one, and any I made would be sub-optimal
.. This proceeds through compilers, operating systems and up to the web stack.
I mean, writing a renderer that fully implements "HTML 5" along with ALL relevant standards - that's a massive software effort. I barely understand it, but I understand enough to get the job done.
Yeah, it's got to be a webapp, so that means implementing actual TCP/IP and Ethernet. And you'll probably want to implement a compiler for an HLL (even a rudimentary) one, at some point, before you lose your mind. Then you'll have to implement at least some percentage of the HTTP spec, because you're writing a webapp, remember?
However, you don't have to implement an FS or a display module (but you'll probably want to implement a serial monitor).
But yeah, if I had the time, I might consider doing this (after I finish my Z80 SBC and actually learn more electronics (the Z80 SBC is a popular enough project that I don't have to do all the circuits myself. And I can do the bare minimum)). This probably doesn't reflect well on me.
Why stop at hardware, though? I can imagine the book title now: "FULL Stack: From Electrons to 'Electron'". The first chapter would review basic quantum mechanics and semiconductor physics, MOSFETs, and CMOS gates. The second chapter would review digital logic design and computer architecture. The third chapter would move into compiler and OS theory and design. The fourth chapter would briefly diverge to discuss microwave and fiber optic transmission lines, and the fifth chapter would return to discuss network architectures and communication protocols. The sixth and last chapter would tie it all together with a MVP implementation.
That would be awesome. I would absolutely write this, but I don't have the requisite knowledge. So unless you're willing to wait quite a long time, or for someone else (or, more likely, several someone elses) to pony up, you'll have to make do with NAND2Tetris.
If someone would pay me to, I would love to write it. I would definitely need several reference books, but there's nothing in there I couldn't handle given enough time. I could even imagine some people on this site being interested enough to purchase it.
I hadn't seen NAND2Tetris before, thanks for that.
Seriously, it would be enormously fun and educational to do this. A weeklong guided vacation where you start with a pile of electronics and end up with a basic web app.
Well, I would start by assembling a Z80 (or 6502)-based machine (because I know the toolchain, it's widely available, and something like an atmel's got so much built in that it almost defeats the point). Then, I would cheat (slightly), by speaking SLIP or PPP down a serial line to a router of some sort, thus avoiding the CAT5e problem. But no more cheating! From there on out, the chip will receive no external assistance of any sort.
Or you could just use a newer chip, and avoid this sort of problem altogether.
I have occasionally said this about myself as a joke, as I think I'm one of the few people that's actually worked on every element of that stack at some point in my career. Including a restricted subset of TCP/IP in Verilog.
I mean, if you really want to make it a challenge then don't give them a processor, give them some large sheets of acetate and some coloured tape.
By the way, the same applies to software: If any developer can say they're "full-stack" without further specification (i.e, they're full-stack everything) with a straight face, than they should be punished by being given $200 or less of electronic components and a processor of their choice, and asked to make a webapp. No external libraries, that's cheating. Maybe give them an assembler if you start feeling sorry for them.