Dokumentation die man wirklich schreibt

Die schlechteste Dokumentation ist die die nicht existiert. Die zweitschlechteste ist die die veraltet ist. Gute Dokumentation ist selten weil sie Disziplin braucht, keine Intelligenz.

Was dokumentiert werden muss

Nicht alles. Nur das was ein neuer Entwickler (oder man selbst in sechs Monaten) nicht aus dem Code ablesen kann.

  • Warum dieses Architektur-Entscheidung und nicht die Alternative
  • Externe Abhängigkeiten und wie sie aufgesetzt werden
  • Nicht-offensichtliche Seiteneffekte
  • Deployment-Prozess
  • Umgebungsvariablen und deren Bedeutung

Was nicht dokumentiert werden muss: was der Code tut — das steht im Code.

README als Einstiegspunkt

# Projektname

Kurze Beschreibung was das Projekt macht und für wen.

## Voraussetzungen

- PHP 8.3+
- MariaDB 10.11+
- Redis 7+

## Setup

1. `.env.example` nach `.env` kopieren und ausfüllen
2. `php database.php` — Tabellen anlegen
3. Webserver auf `/public` zeigen lassen

## Umgebungsvariablen

| Variable         | Beschreibung                  | Beispiel              |
|------------------|-------------------------------|-----------------------|
| DB_HOST          | MySQL-Host                    | 127.0.0.1             |
| TELEGRAM_BOT_TOKEN | Bot-Token für Benachrichtigungen | 123456:ABC-DEF    |

## Architektur

Kurze Beschreibung der wichtigsten Komponenten.

Architecture Decision Records (ADR)

Für größere Entscheidungen: kurzes Dokument das festhält was entschieden wurde, warum, und welche Alternativen verworfen wurden.

# ADR-003: Sessions statt JWT für Web-Auth

**Datum:** 2025-06-01  
**Status:** Akzeptiert

**Kontext:** Authentifizierung für das Admin-Panel implementieren.

**Entscheidung:** PHP-Sessions mit Redis statt JWT-Tokens.

**Gründe:** Sessions sind serverseitig invalidierbar (wichtig für "alle Geräte abmelden"),
kein Token im localStorage (kein XSS-Risiko), kein Overhead für Token-Validierung.

**Verworfene Alternative:** JWT — macht für diesen Use Case keinen Vorteil.

Doku nah am Code halten

Wenn Dokumentation weit vom Code entfernt lebt veraltet sie schneller.

project/
  docs/
    adr/          ← Architekturentscheidungen
    runbooks/     ← Betriebsanleitungen
  README.md       ← Einstiegspunkt
  CHANGELOG.md    ← Was hat sich geändert

Das Wichtigste

Direkt nach dem Feature schreiben, nicht am Sprint-Ende.
Am Sprint-Ende ist das Wissen schon verblasst, die nächste Aufgabe drängt, die Doku bleibt leer.

Fünf Minuten nach dem Merge sind besser als zwanzig Minuten nie.