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 I think it means they can get along in graphic design or human computer interaction. I don't think you'll find many "full stack" engineers writing databases or designing microprocessors.

The term is unfortunate, but I don't think there's a problem either.

@sayrer @robpike it's no less fortunate or largely meaningless as 'frontend engineer' (knows everything about anything that can be implemented in a web browser) and 'backend engineer' (know everything that can be implemented behind a http server)
@jessta @robpike no, this is wrong! I can write all of this shit, so I’m sure I’m a full stack in some sense. But I’m sure @robpike is better.
@robpike “full stack” aka knows not one, but two Algol-derived languages with dynamic dispatch and GC
@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.
@robpike My dream is a book about the classic interview question, "what happens when you type a URL in the browser". From the switch in the keyboard to USB to CPU to kernel to IP, DNS, HTTP, and rendering HTML and rasterizing fonts. But the more I learn the more this sounds insurmountable.

@darabos @robpike I would take it a step further back and start with a page of HTML clicking on a link to info.cern.ch.

Typing in the URL was not supposed to be how the Web worked. NCSA introduced that and then Chrome turned it into the Omni box. If we had thought people were going to be typing in URLs, we would have fixed the :// thing.

@darabos @robpike There's a collaborative repository for that over at https://github.com/alex/what-happens-when
GitHub - alex/what-happens-when: An attempt to answer the age old interview question "What happens when you type google.com into your browser and press enter?"

An attempt to answer the age old interview question "What happens when you type google.com into your browser and press enter?" - alex/what-happens-when

GitHub
@asmodai @robpike Fantastic! Thank you! Wow! I'll dive right in!
@robpike ISTR someone suggesting that the first thing to ask a "full stack engineer" is what direction the stack grows on x86 and see how they respond

@robpike I feel like that's a problem I see a lot with new engineers today. Most only know surface level info or are very specialized and have a hard time grasping outside the box they have created for themselves.

I grew up absorbing tons of info as a teenager. Windows, Linux, kernels, reverse engineering, web, php, 3d modeling, game dev, etc. I can bring information from.all these things to my benefit and many colleagues are amazed, when I consider it basic knowledge.

@yulian @robpike It's important though to realize the privilege of growing up alongside with the complexity.

When I played with my first home computer in 1984, the "full stack" likely had orders of magnitude fewer LoC as just the web browser now.

I don't think a "full stack developer" truly can exist anymore.

@larsmb @robpike true, but I think it's even less about "full stack" and more being a flexible and diverse engineer. I'm a DevOps engineer and used to be Backend. I know how to do frontend and Other stuff. I still pull from learnings in all the computer knowledge.

By being diverse in the knowledge and skills, you can piece further away concepts to help you in a task. Patterns you find in one area, might help in another. Especially for debugging, but also implementation or design

@yulian @robpike I do miss the days when my team had a PhD CS, PhD nuclear physics, MA philosophy/PhD linguistics, BA Anthro, and an MIT dropout. And that was the UX group.
@yulian @robpike Its a blessing and a curse. Sometimes I wish I could shutdown the part of my brain with all the deep knowledge, to just focus at the problem, instead of thinking about all the nitty gritty details which happen down the stack.

@robpike I’m not sure that’s a fair assessment of junior engineers entering the industry.

Almost all 4 year universities are less interested in teaching you industry tools and more concerned with the broader concepts of computer science.

I agree most people coming out of school would not really qualify for a “full stack” scope role. But they have a foundational understanding of how computer science works which underpins everything else.

I'm sorry, but this post screams "boomer take" to me. As much as I am a huge fan of Go and their creators, I don't think this take makes sense. (1/4)
You're blaming college graduates for being "full-stack engineers", but the reality is that these positions didn't come from these graduates; they came from the companies that hired them. These companies decided that they needed a "full-stack" developer, and these people wanted to fulfill that role. They didn't suddenly decide to become lazy. Also, why gatekeep them from the industry just because they don't know gravitational physics? (2/4)
Also, "gravitational physics," really? One of the best things to come out of the 21st century is how accessible both technology and knowledge have become. Academia gatekeeps knowledge from those who can't afford it, and the Internet made it free and accessible. You want to know how a computer works? Here's a video on how to build an 8-bit computer from scratch with I/O! You don't have to know "gravitational physics" in order to understand how a computer works. (3/4)
While I understand (and agree to an extent) that programmers nowadays don't have as much knowledge as "engineers" as they did in the past, it's not something to complain about. It's something to celebrate. Yes, I know that the Internet is invented by people like you, but it's a tool that grew out of a need, and when there's a need, people will find a way to fill it. "Full-stack" positions grew out of a need, and people filled it. (4/4)
@robpike the stack is deeper than we have even discovered and beautifully mysterious.