# Best Practices ## Helpful Templates Thinking about starting a new project? It can be helpful to use a template so you are not starting from scratch. ### [Package Template](https://github.com/andersy005/template) Anderson Banihirwe ([@andersy005](https://github.com/andersy005)) created a template repository for packages, which includes automated code-quality checkers. This can be a helpful place to start. ### [Analysis Repository](https://github.com/jbusecke/cookiecutter-science-project) Within the Pangeo community, Julius Busecke ([@jbusecke](https://github.com/jbusecke)) created the "Cookiecutter-Science-Project" repository which serves as a template when you are working with Jupyter notebooks. This repository walks you through setting up your repository and syncing it up through Github. ## Software Design ### [4+1 Software Architecture Model](https://docs.google.com/presentation/d/1hVCuxtm0f8TzDqsy2kC5nnjqNt3rsz26qgcMQOnM0RY/edit?usp=sharing) Currently, the ESDS group is experimenting with design documents for the next generation of diagnostics package. This is an example of the "4+1 View Model of Software Architecture" with an application to the diagnostics workflow. Feel free to use this example as a template! ### [Zen of Scientific Computing](https://scicomp.aalto.fi/scicomp/zen-of-scicomp/#) A group of researchers and software engineers put together a helpful guide for developing scientific software, detailing the nuances of working Python stacks and the difference between daily use cases and more foundational libraries. ## Managing Computational Resources ### [NSF NCAR HPC Best Practices](https://arc.ucar.edu/knowledge_base/70549811) If you are using NSF NCAR Computational and Information Systems Lab (CISL) resources such as Casper and Derecho, this is a great place to start with learning to make the most of your computing and storage allocations.