Code Documentation
Also Known As
code documentation
software docs
README
TL;DR
Written explanations of code intent, architecture decisions, APIs, and operational concerns — distinct from comments in source files.
Explanation
Good documentation exists at multiple levels: inline comments for non-obvious why decisions, PHPDoc for API contracts, README files for setup and usage, Architecture Decision Records (ADRs) for significant design choices, and runbooks for operational procedures. The best documentation is up-to-date, co-located with the code it describes (or linked from it), and treats clarity as a design goal. Documentation that explains what rather than why is usually a sign the code itself should be made clearer.
Common Misconception
✗ Good code does not need documentation. Self-documenting code explains the how; documentation explains the why — architectural decisions, non-obvious constraints, external system interactions, and operational runbooks cannot be inferred from code alone regardless of quality.
Why It Matters
Good documentation reduces the time for new team members to become productive, preserves architectural decisions, and prevents rediscovery of solved problems — it is an investment in future velocity.
Common Mistakes
- Documentation that explains what (readable from code) instead of why (not readable from code).
- Docs that are out of date because they live separately from the code they describe.
- No ADRs (Architecture Decision Records) — future developers re-debate the same decisions without context.
- Over-documenting obvious code and under-documenting complex or non-obvious decisions.
Code Examples
✗ Vulnerable
// Documentation of what — useless:
// Increments the counter by 1
$counter++;
// Documentation of why — valuable:
// Counter starts at 1, not 0, because downstream billing system
// uses 1-based page numbers and we cannot change that API contract.
// See ADR-0042 for context.
✓ Fixed
// PHPDoc — inline API documentation
/**
* Place an order for the authenticated user.
*
* Validates cart contents, applies loyalty discounts, charges payment method,
* and dispatches OrderPlaced event. The cart is cleared on success.
*
* @param Cart \$cart Validated cart (must not be empty)
* @param PaymentMethod \$payment Tokenised payment method
* @return Order The persisted order with status 'pending'
*
* @throws CartEmptyException If the cart has no items
* @throws PaymentFailedException If the charge is declined
*/
public function place(Cart \$cart, PaymentMethod \$payment): Order {}
// README structure:
// 1. What this project does (1 paragraph)
// 2. Quick start (copy-paste to get running)
// 3. Environment variables (.env.example documented)
// 4. Architecture overview
// 5. Contributing guide
Tags
🤝 Adopt this term
£79/year · your link shown here
Added
15 Mar 2026
Edited
22 Mar 2026
Views
40
🤖 AI Guestbook educational data only
|
|
Last 30 days
Agents 0
No pings yet today
No pings yesterday
Amazonbot 14
Perplexity 9
Ahrefs 4
Google 4
Unknown AI 2
ChatGPT 2
Majestic 1
Meta AI 1
Also referenced
How they use it
crawler 34
crawler_json 1
pre-tracking 2
Related categories
⚡
DEV INTEL
Tools & Severity
🟢 Low
⚙ Fix effort: Low
⚡ Quick Fix
Document the why not the what — code shows what it does; comments should explain why a decision was made, what constraint it satisfies, or what would break if this code were changed
📦 Applies To
any
web
cli
🔗 Prerequisites
🔍 Detection Hints
Comments restating code in English; no explanation of non-obvious business rules; PHPDoc on private methods that add no information
Auto-detectable:
✗ No
phpcs
phpmd
⚠ Related Problems
🤖 AI Agent
Confidence: Low
False Positives: High
✗ Manual fix
Fix: Low
Context: File