Dipende per chi scrivi la documentazione. Se lo scrivi per i programmatori di compagni, dovrebbe probabilmente essere la documentazione nel codice, lasciare che siano commenti o più formale documentazione doxygen. D'altra parte, se il tuo manager o cliente desidera conoscere i dettagli tecnici, un elenco di classi e quello che fanno non dirà loro molto. Quindi in tal caso potresti prendere in considerazione la possibilità di avere diagrammi e descrizioni di alto livello. Per gli utenti finali, probabilmente vorrai alcune domande frequenti, un manuale per l'utente e suggerimenti per gli strumenti (in caso di applicazione della GUI).
In azienda lavoro, non abbiamo clienti e nessun manuale utente. Ma abbiamo sia documentazione di alto livello con logica, obiettivi, architettura astratta ecc., Abbiamo documenti con topologia di rete, metriche di latenza, ecc. E, naturalmente, documentiamo il codice (usando Doxygen) e viaggi e trucchi nelle nostre aziende wiki. A parte questo, abbiamo JIRA dove puoi trovare chi sta lavorando su cosa, cosa è stato fatto e quali azioni sono state eseguite.