Design Guide ============ Make the obvious way the right way ---------------------------------- A developer coming to a new-to-them project should be able to quickly learn the correct way to interact with a project's code, and the "path of least resistance" should also be the correct way to make changes to a project. Build on the shoulders of giants --------------------------------- Another way of saying this is: "Avoid reinventing the wheel". If there is (acceptably licensed and maintained) code out available out there that could be used to accomplish a task, consider using it. External Dependencies --------------------- Upstream code changes over time, and you should design your projects to be able to deal with this change. Lifecycle """"""""" Testing against new versions '''''''''''''''''''''''''''' You should embrace tools that allow you to test against upgraded dependencies. One example of a tool that lets you do this easily is ``tox``, which can handle running a unit test suite against multiple versions of the Python language.