Software Engineer Resources

For research software engineers, Good Research Code is a good primer.

Software Design Patterns

In writing software, many recurring problems exist that cannot be solved through library encapsulation because of the problem’s nuances. In such cases, however, they can frequently be solved by leveraging one or more existing Design Patterns.

Design Patterns are vetted approaches to solving recurring, related problems. They describe a way to structure and organize code. Design patterns are expressive; they communicate intent to other contributors reading and writing code. (This is in contrast to “spaghetti code.”)

The following is a loose collection of software design patterns. This list is not exhaustive. It is intended as a starting point to approaching new problems by first investigating what patterns may be relevant.

Other resources

Other Code Review resources