When working with a SCM system, when should you branch?
I find the advice from Laura Wingerd & Christopher Seiwald at Perforce is really concise and useful:
* Branch only when necessary.
* Don't copy when you mean to branch.
* Branch on incompatible policy.
* Branch late.
* Branch, instead of freeze.
See http://www.perforce.com/sites/default/files/pdf/perforce-best-practices.pdf for a detailed explanation of each of them and other best practice.