I don't know what led GitHub to this shift. At GitLab we want to maintain as flat of a structure as possible but we always wanted everyone to have exactly one boss and 4-10 reports per boss. For us the reasons are that:
1. You want someone to evaluate your and your team's performance. Not getting feedback on this is demotivating.
2. You want someone to help you get better and plan your career (all of our managers are skilled in the area of work of their reports).
3. You want someone to go to with problems: individual execution, team execution, collaboration with another team, and (inter)personal ones).
I'm curious if there's a way to accomplish those things without a single designated boss. For example, having coders taking turns every week or two being the person people go to for typical boss purposes. Of course some people just aren't good leaders or have no desire to be, so maybe some people can have a promoted status they get over time, allowing them to be in the "pool" of managers chosen on a biweekly basis.
There can be many factors to play around with. After everyone on a team has had the chance to be manager couple times, the team could vote for who should be the manager for the next month. Etc, etc. The idea is to still give a team the sense of control, rather than feeling that you're imposing a boss on them.
Rotating the boss would expose people to more advice. Like switching dance partners during a dance lesson the rate of learning would increase.
However, I think a boss is more like a person you go teach a dance workshop with that a person that participates in it. Maybe the intern can have a new mentor every week. But I see some obstacles doing this do experienced team members.
It is already hard to find people that are both an expert at the work and a great boss. Finding multiple bosses in a team seems hard.
Frequently your boss needs a long term view on your activities. Career planning, performance reviews, and performance improvement plans are multi-month affairs.
Coordinating with other bosses and team also happens via social capital. Having to deal with a new persons for all other teams every month might be hard.
1. You want someone to evaluate your and your team's performance. Not getting feedback on this is demotivating.
2. You want someone to help you get better and plan your career (all of our managers are skilled in the area of work of their reports).
3. You want someone to go to with problems: individual execution, team execution, collaboration with another team, and (inter)personal ones).
For more information about our reporting structure see https://about.gitlab.com/team/structure/ and our leadership principles see https://about.gitlab.com/handbook/leadership/