Goals and principles in this talk

Goals

  • make code more maintainable

  • low-effort documentation

  • minimal effort code publishing

Principles

  • Keep information in one place (code + tests + documentation)

  • Tools/features that can be used incrementally and scale with skills

  • Take in account how fast the code is changing

Advice you already heard

  • Use version control

    I like GitHub (automation through Azure, publishing documentation, collaboration tools, network effect); GitLab has bigger caps on file/repository size.

    Branches for making quick’n’dirty mods away from the main development line

    Submodules to separate code from (often big) datasets (advanced)

  • Comment your code (micro)

    Descriptive names for variables/functions (IDE rename)

    Split code into functions

    Type annotations

  • Comment your code (macro)

    Docstrings instead of comments

    Refer to publications

Things we’ll look at

  • Use a good IDE

  • Code formatting

  • Type annotations

  • Web documentation

  • Testing

  • Managing dependencies, modularizing code and publishing