I agree with your general sentiment, but I would say that some amount of knowledge of levels just above and just below your own level is helpful or often necessary to do a job at a particular level.
Using my own example of a computer system:
- App developers generally need to know something about how the app framework or OS works.
- Framework developers generally need to know how apps interact with their framework/services, and how to interact with the OS.
- OS developers have to be very aware of the API and ABI they expose to frameworks/apps, and often many details about the hardware (CPU, GPU, whatever random network card or other device they are working with).
- Hardware designers generally need to know how low-level software will interact with them, as well as about the physical design features and limitations (how fast do the transistors and wires run, rules about area and congestion in the integrated circuits, etc.) that the hardware is being built upon.
- Physical designers need to know about the general organization of the logic they are implementing (how many ports on this structure, what other blocks of logic does this piece of logic talk to), as well as some about the transistors, wires, capacitance, EM noise, etc. that make up the design.
- Process engineers need to know how physical designers are using their transistors and wires, as well as a bunch of stuff about basic physics, chemistry, etc.
So yes, specialization, but some cross-discipline knowledge too.