Who wants to do the documentation, code review and testing for free? Even a lot of paid engineers would rather not do these steps.
When I'd train newbies on how to use my middle tier and lower tier code bases, I'd often use my documentation to do so. I'd tell the other programmer that I'm not trying to leave him high and dry, that I'll train him if necessary. But by him trying to use the documentation first, it told me how well the documentation was written. If the documentation doesn't tell him what he needs to know, then it tells me I need to update my documentation while I'm training him. Thus after years of training people with that approach, we had robust documentation (which eventually included all of the questions I was asked about handling different scenarios).