This sounds like best plans for computing in general, not just scientific computing
The patterns he pointed out were:
1. Use version control.
2. Separate code from data.
3. Separate input data, working data and output data.
4. Modify input data with care.
5. Save everything to disk frequently.
6. Separate options from parameters.
7. Do not use global variables.
8. Record the options used to generate each run of the algorithm.
9. Make it easy to sweep options.
10. Make it easy to execute only portions of the code.
11. Use checkpointing.
12. Write demos and tests.
EDIT: Added list of patterns, formatting.