If you hire people mostly for “interest in shipping” and “tendency to listen to their teammates” and then reward them mostly on what their team accomplishes, you’re going to get software and it’s probably going to be pretty good software. If you hire people for things like “abstract technical ability” and “ability to sound smart to people who graduated from certain schools and worked at certain companies” and then reward them for their individual contributions to the team as visible to the promotion process, you’re going to get the software industry that we’ve got.