This is very broad coverage question. I change things if the movement(s) seem to be plateau-ing. I change things if the muscle(s)/joint(s) seem to be getting over trained. I change things if the program requires adjustments for some reason (an athlete starts their season, ends their season, has had an injury, etc. or a client seems to be getting bored, etc.) I change things as part of the design. As in when a client has gained the strength to perform multi-joint movements as opposed to isolation exercises, etc. I try not to change things before the current exercise has had a chance to be effective or just to change things. My program design changes have a purpose.
Personally I keep changing the routines/programs of my clients every other week (according to their goals). I don’t like to wait for them to plateau so I take a more proactive approach rather than a reactive one. In order to be more specific I will have to base my results and changes according to the initial assessment (whichever I decide to use-again it depends on the client and the goals he/she wants to accomplish).