The real missing part is discussed in the "knowledge building" link. I'm on board with Peter Naur's idea of building software, but it's very difficult to share individual knowledge with a team as it is being formed.
For example, reading someone's implementation as a work in progress is a different than reading an implementation that is a complete idea.
A work in progress is a lot easier to read with a design document in hand, but that design document that is full of assumptions that might be better explored in short feedback loops on production.