Here's another article about good development practices, namely version control:
Version Control for Multiple Agile Teams by Henrik Kniberg, posted at InfoQ
From the introduction:
If we have several agile development
teams working on the same codebase,
how do we minimize the risk of
stumbling over each other? How do we
ensure that there always is a clean,
releasable version at the end of each
iteration? This paper describes an
example of how to handle version
control in an agile environment with
multiple teams - it is the scheme that
we migrated to at the company
described in "Scrum and XP from the
Trenches".
The article talks about using short-lived devel branches to achieve stable trunk, into which goes only stuff that is done. At my work, we've generally had good experiences of applying these ideas, with two scrum teams working on one codebase. There's some overhead about the extra branching and merging (some of which can be automated away), but having stable trunk, from where a release could be made at any time, is a big plus.