Everyone agrees that documentation is important.
However...
Many programmers believe that code should be "self-describing," that the code itself should act as the documentation, and that therefore you don't need documentation. But that's only true to a certain extent. Code does not adequately document the relationships between components. It's unreasonable to ask the programmer coming after you to wade through a 100,000 line code base trying to figure out what all those abstract factory factory factory objects you wrote are supposed to do.
Documentation takes time. The first priority in most companies is shipping, not documentation. When there is documentation, it often documents their business processes or provides a user guide, but not the relationships between software components.
Documentation is another thing that must be maintained. Unlike self-documenting code, documentation must be kept up to date, otherwise it will no longer agree with the code (which is the real source of truth).
For all of these reasons, documentation is often neglected.