- use version control
- write tests (high level, keep it simple)
- pull in data as if it was a dependency, versioner and stable
- use a CI server/service
- when publishing, code and data goes with the paper