My experience is you want to move fast by reusing good software. This means that well understood components should be well engineered and documented components, while poorly understood problems might reserve documentation for the future.
Agility requires a stable foundation. And a lot of places forget that.