Today I helped someone solve a mystery. He had been trying to use the -U namespace argument of a csession command to specify the namespace in which to run a particular routine, and was puzzled when the routine could not be found.
csession CACHE -U MYNS "tag^mycode"
It turned out the Cache user account that his csession authenticated as had a Startup Namespace set, and it was not set to the namespace he was trying to run the code in (MYNS in the example above).
This is documented behaviour but I'm posting the experience here in case anyone else gets caught out by it.