I agree about PM/dev/customer part but disagree on dev/support rotation.
This sounds great in theory, in practice working on any non-trivial software means there are parts you know little-nothing about. Having spent time on support duty I'd end up pinging team members for help (disturbing people without having a sense of priority since I don't do support), budding into other people's stuff without the capacity or desire to follow it up long term.
The best way I saw to get devs into customers shoes is to let developers be involved in client rollout - like ship then on-site and see how people use the feature they wrote.
But frankly even then, devs shouldn't be making a lot of these ae user facing decisions, send the UX guy.