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.

@robpike in the fed civ world full stack refers to working with a fully automated devops toolchain and being cognizant of all the tools from the dev sandbox to the ops environment, as opposed to only owning one part of the process in waterfall like testing or the backend.

Being able to visualize the physics going on inside the silicon and outside the box is admirable to me and indeed makes one a more well rounded professional that can connect more dots than usual, I totally get where you're coming from,.... but I'm afraid it won't mean much to someone that's trying to stand up another scrum in SAFe. Honestly if you led with your version of 'full stack' they'd probably think you were trying to snow over a lack of a particular required skill they were hunting for. So I'd say the environment really really matters as to whether you want to push back on someone's title in that regard.

@robpike
I used to have this sort of view about many similar phrases. Like the "engineer" in "software engineer". Eventually, I realized the only effect of those debates was that a swathe of people who were both pedantic and honest, kept those phrases out of their resumes, and thus were replaced by people who were less honest and less pedantic.
And that is a loss for the community.
@robpike
When I was young I dreamed of all this. Didn’t help that my high school physics teacher talked me OUT of studying it at uni ā€œno jobs - you’ll end up a teacher like meā€ 🤬
Ended up in IT but much more boring than what you’ve achieved
@robpike "to bake an apple pie, first you must invent the universe"
I'm not sure if I agree on principle or disagree through confirmation bias. I feel I'm a very good swe and my knowledge goes back to the transistor level, but this is correlation, no? I know many solid swes who have never written a compiler and that's fine. I think the most important thing is to be a lifelong learner, then you fill in the stack as you go.
@robpike and ultimately that's what every lifelong learner does: fills in the gaps in the full stack of life.
@robpike when I hear ā€œfull stack developerā€ in my head I always ask the question ā€œtell me about your kernel moduleā€, but I don’t want to hear about a JavaScript/MongoDB/whatever kernel module so I keep my mouth shut
@robpike natural ally of agile coaches, scrum masters, heads of innovation, 10x devs, code-ninjas...
@robpike I've understood it to mean, "I've tried something else besides Web UI development in JavaScript, and I want some credit."

@robpike ā€œA human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.ā€

R. A. Heinlein

That's full stack.

@robpike When your nail is the web, full stack is your hammer.

I feel it’s such a recruiting term and I’m not a fan of it. It’s all development. I like some of it better (go) than others (html/css/js). But as a software engineer a problem is a problem, and if code can solve it, we can write it.

The problem isn’t what people know, but if they refuse to learn anything new. I’d happily take a job where I didn’t know the language or the domain. I can learn. I’ve done it many times before.

@robpike These days, the stack ends with people. But most engineers don’t have any time for psychology or usability. I meet people thinking they are doing cryptography who don’t want to think about people. What they miss of course is no computer ever decided to rob a bank, not even ChatGPT. It was always people using a computer.