The requirement to "only promote A-players" is difficult to ensure, but I think one requirement is to teach people how to tell the difference between A and B work, and what the effect is. This difference takes a long time to learn to spot, and the ability to see it is something I've seen the technical elite take for granted. When you can't tell what a difference A versus B makes, it's hard to see why fairness shouldn't play a larger role.
This goes along with the well known effect of over-confidence from lack-of-knowledge when making judgements, or the way newcomers to a community are often overly-vocal in their judgements. I think it takes some sobering first-hand lessons to be able to see the difference between A-work and B-work.
It wasn't until I tried to code that old Windows star-spreading screen-saver in high school that I got even an inkling of how difficult it was to make all of Windows work, and it wasn't until I actually had to write something as a composition of partial recursive functions that I even began to appreciate the A++ work it took to conceive computing machines at all. Even now, I wouldn't consider myself capable of really distinguishing between A and B work except in a few very select fields.
This goes along with the well known effect of over-confidence from lack-of-knowledge when making judgements, or the way newcomers to a community are often overly-vocal in their judgements. I think it takes some sobering first-hand lessons to be able to see the difference between A-work and B-work.
It wasn't until I tried to code that old Windows star-spreading screen-saver in high school that I got even an inkling of how difficult it was to make all of Windows work, and it wasn't until I actually had to write something as a composition of partial recursive functions that I even began to appreciate the A++ work it took to conceive computing machines at all. Even now, I wouldn't consider myself capable of really distinguishing between A and B work except in a few very select fields.