Augh, I've been trying to like Perforce for a year and have hated it at every turn. I invariably wind up having ~3 workspaces open so as to map to different parts (or different views of the same) of the depot, constantly swapping back and forth between them whenever there's a problem that requires attention on some stream or another. Code reviews are awful; I need to balance tonnes of CLs (and their shelves) so as to save _my_ current work, grab the reviewed code, reset everything etc (or I could just make a new workspace for each review! hahahah).
There's also this ever-present feeling of dread whenever I invoke any p4 command -- if I absentmindedly submit something with unshelving the change that I had shelved after making a previous change but reverted when trying out a new change, I can wipe my old data and lose work. Or some issue comes up in a deployed environment, so I have to grab a new workspace (or dance through shelving/unshelving all my open CLs), have a 10 minute coffee break while it syncs, sync up to the release line and work on that one. Also my IDE doesn't like being switched rapidly between repositories all the time. Also it's difficult to just _commit_ some code after making a change and wanting to save progress. Every operation is just so stress inducing; how do you handle it :/