I have learned many things in the job environment. It can be a high stress bang your head against the wall until the right answer comes out state of being.
The problem with OTJ training is that it leaves holes in your knowledge. Those holes exist simply because you have only been exposed to what you have been exposed to and what you haven’t been exposed to you don’t know.
This can result in programmers putting things on their resume, but key understandings of that technology being missing from them. You might be exposed to many clients and writing SQL statements, but not ever have used a union, Order by, or understand how an SQL statement is parsed.
When I look at the job postings out there I see a lot of people looking for the purple squirrel. Employers have high expectations; however, the obligation of actually training people and having a knowledgeable work force? It somehow never seems to fall on the employer searching for employees.