I saw the phrase "full stack engineer" cross my path recently. The first time I saw this, I wrote something on Google-internal Buzz. Read on.
"Much has faded now, but there was a time when I had at least a rudimentary working knowledge in gravitational physics, particle physics, nuclear physics, solid state physics, quantum electronics, electronics, quantum optics, LSI design, circuit design, chip layout, circuit board layout, system architecture, plus: machine code, assembler for various architectures, a wide variety of programming languages, device drivers, operating systems, 2-d graphics, ..." ...
"... 3-d graphics, libraries, regular expressions, parsing, compilers, application design, networking, and so on. Plus odds and ends like cosmology and physiology. It felt really good to know what the machine was actually doing, and surprisingly much of that came in handy from time to time, such as when I was working on Voyager.
Is that what they mean by full stack? If not, push back. Nowadays it seems some people graduating from university know Java and little else."
Yes, it's snarky, rude even. But I do wish more software engineers had a broader grasp of what makes technology work. It makes one a better software engineer.
@robpike imo since no one can really be “full stack” what the term should mean is “taking full responsibility for the product.” If the logo is off 3px or if the database is slow by 300ms, either way you don’t say “not my department.” You take full responsibility and figure out how to solve the problem, even if it means getting someone who knows more about a subject area to help you actually do it. Full stack responsibility, not full stack knowledge.