Documentation is built in -- man perlpod. As I mentioned in another reply, you can write unreadable or unmaintainable code in any language. Developers who do so should not be holding down jobs. The problem with PHP is that it encourages unmaintainable code by purposefully omitting certain features that would go a long way towards improving code quality. They aren't omitted because they are unnecessary; rather they are omitted because they get in the way. That's a poor approach to language design in my book.