So all the good programmers (or programmers that stick around long enough) become architects. The system actively weeds out people with lots of domain knowledge and an ability to solve problems by promoting them into architects.
Theoretically architects should be helping teams write even better code than they did before, but usually the teams ignore what the architects do, so there's a whole "us versus them" thing going on.
If there really are people at an internet company like Yahoo doing that, well, wow. I don't see how a company where such a thing even was allowed to develop could have a future in this industry.
That said, there are some very useful UML diagrams for non-architect-titled folks. For people stuck using class-heavy systems (some of which are out of their control), the UML Sequence Diagram is both useful and a very compact way to explain "what happens when the user goes <poke>": http://en.wikipedia.org/wiki/Sequence_diagram
I just paste the diagram description into my documents as "hidden text", and everyones happy.
A real "architect" who really solves business problems with technology is called a CTO
The principle is commonly phrased, "employees tend to rise to their level of incompetence."
All of us here on HN are much more familiar with smaller outfits--smaller by more than an order of magnitude that typical "enterprise" outfits.
The diversity of programming environments is actually quite vast. Here on HN we are all closer to the actual code than a significant fraction of these environments.
Having done the enterprise thing (as well as the startup thing) that is how I prefer it.