There has been a fundamental shift in where the knowledge resides in an organization. Previously, it was in the domain of our management team to gather the requisite information on what needed to be done and then orchestrate the work from above.
Now, much of the work our software teams carry out requires improvisation and the use of judgment in situations that are often ambiguous. As we've already discussed, most of the problems we solve are complex and necessitate an empirical (scientific) approach to solving them. To do this successfully means they have to be good at gathering and wrangling vast amounts of information from initial ideas to specifications, UX design to test cases, code development to review feedback, and code quality metrics to production performance data.
Our experience of the sports teams that we follow or play in has...