> Now most of the friction comes from alignment and coordination with other teams.

Then I see a solution! Why don't we simply put the entire company on one big team?

You joke but that's pretty much what cross functional teams are.

The only other observation is that as you grow teams, communication channels multiply exponentially and at over 6-8 people communication starts breaking down.

So instead you make small "companies" and set a few ground rules which software they build needs to follow, and you are back at a working org producing complex software.

Putting everyone responsible for some function of a product on one team, instead of having separate departments for separate functions, can do wonders for actually shipping and iterating on software.