For better or worse, when I first started out, and the first 2 companies I worked, there were something like 10-15 layers from me to the CEO. This created a hypothetical ladder of responsibilities and titles I felt I could climb, with rungs 3-5 years apart, getting wider the higher you go.
In more recent roles, I have been in 3000 person organizations where even as an IC, I am known to, and speak with, people in the C-suite short of the CEO. I work for someone with 50 people in org, who works for someone with 1500 in their org, who works for the CEO.
A lot of these radically flat orgs expect ICs as "senior engineers" or "staff engineers" or some other made up title to do some ad-hoc mix of IC, people management, project management, etc.
In effect a lot of us get asked to do a job we don't have, and in fact, will never have, given the 50:1, 1500:1, and 3000:1 ratios from IC to each of the 3 levels on the ladder.
The second dimension is that software project lifecycles have always been shorter than traditional engineering, and have become shorter. This leads to a lot of hopping between firms as your project hits peak and is on the disinvest cycle.