Here is my experience with the jobs I've had
1) Gave good direction, but never explained business knowledge. Would just say "Do this, do that, write to that field in the db from this place on screen. Do this specific calculation." But never answered "Why?" I was S-O-L when he left company, luckily they paid him to come back (probably a huge sum)
2) Gave good direction and explained business knowledge. Only time we had problem is when the client changed things around before release. This was the best place I worked, always had documents and specs written and they made sense and fully explained business knowledge on why. Also the best paying and successful company I worked for.
3) Gave no direction. Would give me specs written by someone who spoke french (and their english sucked.) They used multiple words/terms for the same thing (one day it was contract, the next day campaign, never could figure out what they were saying), so I never knew exactly what I was doing. The boss would freak out with a beta release when it had a bug or didn't work out on first try... I hated this place, luckily they fired me for bad performance, and forced me to company #4.
4) Current place, give me decent initial specs when written up, but if I have a question, this is where they start to fail. I have to ask multiple times to get the correct answer from project manager. Literally, I have to ask a question in email, I get a response, they dont answer the question but tip toe around it, only to force me to ask the exact same question again the next day when I can think of a way to reword my question. This project manager is an idiot, loves to do development in the production environment and like today crashed the entire floor (100+ people) due to reindexing the DB in the middle of the day!