As a professional programmer I work daily with a species known as the "PM". While they usually go by that common acronym, it seems there are actually several discrete varieties: product managers, project managers, and program managers. There may be other species yet undiscovered. Through years of close observation and study, the subtleties of their differentiation elude me. I have only been able to determine their common responsibly: to communicate to me, the programmer, in the vaguest possible terms, what it is they think they want built. I then tell them, in the vaguest possible terms, when I think it will be delivered, and they go away.
So my question for the stackoverflow crowdsourcing juggernaut is this: please explain the differences between the product managers, project managers, and program managers. Please do so with out waving your hands, as I can not see them, and it doesn't help anyway.
I'll attempt to explain them as I've worked with them. Please do understand that the definitions can be murky and change from organization to organization.
Project Manager: Responsible for coordinating the schedule of the project within the engineering. This should be the one single person that management can go to in order to know the current status of the committed work for a given release. This person is typically hip deep in spreadsheets, Gantt charts and status meetings.
Product Manager: Responsible for the deciding which user-visible features will be on the plate for consideration in a given release. This person should be well versed in what the customer is attempting to use the software for and be able to act as a developer's resource for understanding what to build from a functionality point of view.
Program Manager: Essentially a project manager responsible for coordinating the release across the different disciplines in a company. This is the person who makes sure that marketing has the press release ready at the same time as engineering is ready to ship and that sales have been trained on the product.
These are how the last couple of companies I have worked for have defined the roles, but you will certainly see many variations.