Every activity should benefit all concerned with that activity.
Extensive internal documentation of software is an example of a practice that violates this principal, and goes against the values of [[Simplicity]] and [[Communication]]. Automated tests are the smallest possible [[Feedback]] loop and avoid the need for extensive documentation, making [[Communication]] easier because the tests act as definitions and reinforce a design towards [[Simplicity]]. They create a benefit for future programmers and maintainers.
Refactoring creates mutual benefit, as it reduces the number of possible defects and the complexity of the code, and together with well-thought out naming it makes the code more coherent, easier to understand and a delight to maintain.