# 📖 Link collection code documentation

#### To read, listen &amp; watch

- *How to Write Good Documentation*: [https://guides.lib.berkeley.edu/how-to-write-good-documentation](https://guides.lib.berkeley.edu/how-to-write-good-documentation)
- *How to write effective documentation for your open source project*: [https://opensource.com/article/20/3/documentation](https://opensource.com/article/20/3/documentation)
- *Software Documentation Best Practices \[With Examples\]*: [https://helpjuice.com/blog/software-documentation](https://helpjuice.com/blog/software-documentation)
- *Ship it!* by Jared Richardson and Will Gwaltney, Jr: [https://pragprog.com/titles/prj/ship-it/](https://pragprog.com/titles/prj/ship-it/)
- *The Pragmatic Programmer* (Thomas/Hunt*,* 2020*)* is a good general introduction to professional software development: Keeping code readable and easy-to-change, learning requirements, utilizing unit- and property tests, basics of securing applications: [https://pragprog.com/titles/tpp20/the-pragmatic-programmer-20th-anniversary-edition/](https://pragprog.com/titles/tpp20/the-pragmatic-programmer-20th-anniversary-edition/)
    
    
    - There is also a German translation (*Der pragmatische Programmierer*): [https://www.hanser-fachbuch.de/fachbuch/artikel/9783446463844](https://www.hanser-fachbuch.de/fachbuch/artikel/9783446463844)
- *Weniger schlecht Programmieren* (Passig/Jander) is similar to "Pragmatic Programmer", but focuses more on code and less on projects: [https://dpunkt.de/produkt/weniger-schlecht-programmieren/](https://dpunkt.de/produkt/weniger-schlecht-programmieren/)
- *Command Line Interface Guidelines* are an open-source guide to help you write better command-line programs: [https://clig.dev/](https://clig.dev/)

#### Methods &amp; tools

- *Tracer Bullet Development* is a method to get a working version of your software quickly. This allows to evaluate code architecture and user interface early. The method is described on this website: [https://growsmethod.com/practices/TracerBullets.html](https://growsmethod.com/practices/TracerBullets.html)
- *Refactoring Guru* has a lot of resources on common ways (patterns) of how to approach particular problems and how to improve existing code to make it easier to read and to change (refactoring): [https://refactoring.guru/](https://refactoring.guru/)
- *12 Factor app* is less about code than about running the code in a way that it can be easily and safely configured, ran and monitored. When you create your project based on modern frameworks (i.e. Laravel) it will often follow such principles: [https://12factor.net/](https://12factor.net/)