Structuring Coding Projects

Clean code always looks like it was written by someone who cares.

— Robert C. Martin

Video

Creating an effective, clean structure for a coding project is a challenge. Large code structures follow Conway’s Law in that the code will end up looking like the communication structure of the developers. Small open-source libraries, applications, and research projects, however, don’t feel such influences. You therefore might have more freedom, but this can lead to the paradox of choice.

Reasonable organization depends on the type and size of code. A python application will look quite different from a library which will be quite different from a repository of reproducible research (science repo). While some structure is imposed on the first two categories by frameworks and distribution tools, the science repo is wide open and many conflicting opinions exist. Here we examine common organization for each code type, and make some sane suggestions for taming your project’s complexity.

Objectives

In this module, we will:

  1. See how a modern python library is structured
  2. Review common structures of python applications
  3. Examine the “science repo” and possible organization
  4. Discuss distribution channels

Reading

Additional Resources

Workflow Engines