Best practices für die Entwicklung

In Abgrenzung zu den Software-Anforderungen wollte ich nochmal best practices sammeln, die bei der Entwicklung berücksichtigt werden können. Viele davon sind geradezu selbstverständlich für Software-Entwicklung, durch die Explikation können wir sie aber vielleicht auch für andere Prozesse nutzen, in denen etwas „entwickelt“ wird. (1) bis (5) der Trivia mache ich z. B. auch bei jedem größeren Text, den ich im Studium schreibe.

Trivia

  1. use a version control system (and make Conventional Commits)
  2. make a README
  3. keep a changelog (e. g. with Standard Version)
  4. create meaningful versions (e. g. Semantic Versioning or Calendar Versioning)
  5. choose a license
  6. write down Architectural Decision Records
  7. write down your SOPs
  8. write a documentation
  9. automate everything: code linting, builds, tests, deployment
  10. make it reproducible: describe environment (packages versions etc.), write runbooks, make builds reproducible

Ich halte es auch deswegen für sinnvoll, dies bereits jetzt zu sammeln, da manche dieser Punkte feststehen sollten, sobald mehr Menschen mitentwickeln. Bzgl. Punkt (5) verlangen manche Softwareprojekte beispielsweise für nicht-triviale Änderungen ein Developer Certificate of Origin (per Konvention kann dieses schnell und einfach mit der git-Option --signoff unterschrieben werden). Ein sog. Contributor Agreement darüber hinaus ist mir allerdings eher unsympathisch und kann vielleicht auch durch wenige Sätze in der Projektbeschreibung ersetzt werden. Ein anderes Beispiel ist der Collective Code Construction Contract von ZeroMQ (mehr Kontext dazu hier). Deren Sammlung von API-Schnittstellen, Protokollen und Prozessen finde ich eh spitze.

Handbücher

Speziell auf Software-Projekte bezogen gibt es einige weitere best practice-Sammlungen:

Muster und Checklisten

Hier will ich insbesondere auf die Privacy Patterns verweisen, eine Mustersammlung, um einige wiederkehrende Herausforderungen in der Softwareentwicklung bzgl. des Schutzes der Privatsphäre zu meistern.

1 Like

Ich habe mal noch die FLOSS Best Practices Criteria der Core Infrastructure Initiative ergänzt.