Do you run a spreadsheet loaded up with market data and demographics evaluating the potential revenue impact for all of the features you're thinking of including in the next release?
And so on and so forth. Product management is a full-time job on a substantial product. It may be that in small start-ups people wear many hats and you don't need it as a separate function. But if your team ever gets to the point that you can justify a full-time development manager, your team probably needs someone else with nearly full-time product management responsibility.
In addition to that, there are sometimes some benefits to separating product management from development management. Sometimes. Being a little divorced from the product's inner workings can provide a certain useful perspective. Hopefully, the product manager isn't wedded to the feature that a developer just spent three weeks building and can jettison it to ship on time :-)
Even if you work for yourself, you decide which market to be in, and the market decides what you must build and when.
Interestingly, the push to smaller start-ups and smaller teams does create more opportunities for developers to wear multiple hats. That's a good thing too.
That kind of growth probably has to happen. To be fair, most all the program managers had engineering degrees, and some had been successful developers. The project managers came from a different track entirely, and I think that was a more challenging relationship for a lot of developers.
Besides, for a great many developers, dealing with a PM is better than dealing directly with people in finance and marketing, or customers themselves.
Is there a standard breakdown between these two?
For some reason I have the feeling that Microsoft popularized the usage of these titles - does anyone know firsthand if this trend started at Microsoft?
So historically, program managers handled decisions about how to allocate resources to accomplish a mission. These days, program managers usually allocate resources over a portfolio of projects and decide whether projects are helping to achieve the program's mission.
Product manager has a responsibility for one or more products and associated strategic and executive decisions , around business plan, marketing, sales, research and development.
Can't employees just ignore what he/she says?
If he was a good program manager, people would have respected what he did, which was to understand the market for the product so well that he could inspire and lead the team to build the right thing at the right time.
Sadly, more companies are leaning to the idea that the Program Manager is more like a fancy clerk. They end up pretty stressed out and under-appreciated.
This gets to the central question: How do you create, run, and release a huge effort that might take hundreds of man-years, like Office 2012? Something like that covers a lot more ground than simply kicking out some code. There are all sorts of things that need to be coordinated.
Companies are still sorting through how to set up and run programs, in my opinion. There is a LOT of room for screwing things up between 5 guys and 150 guys. There are a lot of tricks to use, but many times people want simple answers and the simple answers are not forthcoming.
A lot of time employees just go to their PM and then go around the Program Manager directly to the higher-ups in the organization. Makes the whole thing quickly devolve into a Charlie Foxtrot.
(Disclaimer: I've done quite a bit of setting up programs and helping companies manage them)
EDIT: I've describe a Program Manager as being "over" the entire effort. Some companies just kick them out to the side of the whole thing. This is an even worse setup, because the business drivers aren't directly connected to the work.
I think that more and more, companies are realizing that the answer to this is "You don't."
Google Chrome is a good example. Instead of trying to figure out exactly what needed to be in the product, they built a kick-ass updater (which is now open-source). One that let them transparently and efficiently download and install updates whenever necessary, so they could treat desktop software like a webapp.
And then instead of having to coordinate hundreds of man-years of work, they can have small independent teams that crank out a feature, release it, see if the feature works well, and back it out if necessary.
The best way to deal with an O(N!) problem is to keep N small.
Chrome is a free product that already achieves it's main aims, if chrome was a $200 browser or something I'd imagine it would have to conform to the big release idea to.
http://news.cnet.com/8301-13846_3-10106174-62.html
There's some resistance to using auto-updating software in enterprises simply because it's not the way things have traditionally been done, but IT departments are warming up to it. The huge pain of doing a major upgrade and the constant security fiascos that come from using software that's 5 years out of date are a major incentive for departments to switch to a model where individual changes can be canaried and tested in isolation before bringing down the whole enterprise. Google Docs is certainly having some measure of success in the enterprise arena, despite being a webapp with this development model. And outside of Google, Salesforce.com has revolutionized their market with a webservice-based enterprise app.
If say Chrome was your sole web browser and an update broke compatibility with a business process, who is responsible?
It's a constant struggle to balance the business needs of predictable use and the need to stay competitive with up to date products. Mainframes and WinXP's default browser will continue to stay until the benefits can be clearly shown to out weigh the risks.