Every company has employees of varying quality. Some are “A” players (the strongest, top-notch team members), some are “B” players (good but not great), and some are “C” players (just OK).
Every company also has problems of varying importance. Some are “A” problems (absolutely critical for survival), some are “B” problems (important but not vital), and some are “C” problems (not really that important).
In theory, a company should always want to match these up 1:1. “A” players should all be working on “A” problems, “B” players on “B” problems, etc. The types and importance of problems are always changing, as are the number and quality of team members - so assignments must be highly dynamic to remain optimal. As new problems come up or their importance changes, employees should quickly be shifted around to match.
In practice, this is almost never the case. Instead, employees are assigned to teams / problems largely randomly when they first join, and then stay there mostly forever. A company’s most important problem might have a team working on it comprised of 1 “A” player, a couple “B” players, even some “C” players. And when new problems emerge or their importance changes, the teams remain static.
This is extremely suboptimal yet very common, and helps explain why small startups can out-execute large companies. A startup’s “A” team is often going up against a big company’s “B” or “C” team.