Here's my experiences with PM's (project managers):

They are the middle people that do most of the stuff between the client and the developers. They do the project requirements gathering as well as use case creation and testing. During the initial meeting with the client about a project the lead developer will attend the meeting as well as the PM, but the developer usually doesn't add much to the conversation in the meeting, but can if needed. The PM takes the notes and then fills out the paperwork (well handles the word docs) and gets authorization of the PMM (Project Manager's Manager) and the Development manager.

Then it's the PM's job to check in with the developer and answer questions (and ask the client questions) as the project progresses and they keep it on track. Here our PM's even do a fair share of diagramming too.

Also the PM's test the project as parts of it make it to our QA environment and all that.

I should mention that only 1 of our 7 PM's know how to code and/or have done any coding whatsoever. None of our PM's know how to create/query a DB, they don't even know how to connect to a DB.

Our Dev team (16 people total plus our manager) wouldn't be able to get projects done nearly as fast without our PM's helping out. I just wish my other job (team of 9 developers) had at least 1 PM.