{
    "slug": "developer_experience",
    "term": "Developer Experience (DX)",
    "category": "general",
    "difficulty": "beginner",
    "short": "The quality of a developer's interactions with tools, APIs, documentation, and processes — good DX reduces friction, speeds onboarding, and increases productivity.",
    "long": "DX covers everything a developer touches: local setup time (fast docker-compose up vs 3-day manual setup), CI feedback speed (5-minute pipelines vs 45-minute waits), API ergonomics (intuitive naming vs reading source to understand), documentation quality, error message clarity, and debugging ease. Poor DX compounds across a team — if setup takes a new hire two days, that's two days of lost productivity multiplied by every hire. DX is an investment that pays compounding returns.",
    "aliases": [
        "DX",
        "developer productivity",
        "tooling"
    ],
    "tags": [
        "general",
        "culture",
        "tooling",
        "team"
    ],
    "misconception": "DX is just about nice tooling — DX encompasses everything from how long it takes to run tests locally to how clear error messages are in production; it affects productivity across the entire development lifecycle.",
    "why_it_matters": "Poor DX is a hidden tax on every developer every day — a 10-minute local setup that takes 2 hours is not a one-time cost, it compounds every time a developer clones fresh or onboards.",
    "common_mistakes": [
        "No local development setup documentation — new team members spend days figuring out environment setup.",
        "Slow test suites with no fast subset — developers skip tests locally when the full suite takes 20 minutes.",
        "Cryptic error messages without actionable guidance — 'Error 1045' vs 'Database password incorrect — check DB_PASSWORD in .env'.",
        "No linting/formatting auto-fix — manual formatting discussions waste code review time."
    ],
    "when_to_use": [],
    "avoid_when": [],
    "related": [
        "documentation",
        "blameless_culture",
        "twelve_factor_app",
        "devops"
    ],
    "prerequisites": [
        "continuous_integration",
        "static_analysis",
        "docker_multistage"
    ],
    "refs": [
        "https://github.blog/developer-skills/developer-experience/"
    ],
    "bad_code": "# Poor DX — new developer experience:\ngit clone repo\n# Now what? No README instructions\n# Try: php artisan serve — fails, missing .env\n# Try: composer install — fails, PHP 8.1 required but 8.0 installed\n# Hours later: find wiki page last updated 2022\n# Setup time: 1-2 days",
    "good_code": "# Good DX — setup in minutes:\ngit clone repo && cd repo\ncp .env.example .env       # Self-documenting\ndocker-compose up -d       # One command, reproducible\n# README: 'Run make setup — installs dependencies, seeds DB, runs tests'\nmake setup\n# Clear error messages: 'Missing STRIPE_KEY — see docs/setup.md#stripe'\n# Setup time: 15 minutes",
    "quick_fix": "Reduce the time from git clone to first working app to under 5 minutes — write a make setup command that installs deps, copies .env.example, runs migrations, and seeds test data",
    "severity": "medium",
    "effort": "medium",
    "created": "2026-03-15",
    "updated": "2026-03-22",
    "citation": {
        "canonical_url": "https://codeclaritylab.com/glossary/developer_experience",
        "html_url": "https://codeclaritylab.com/glossary/developer_experience",
        "json_url": "https://codeclaritylab.com/glossary/developer_experience.json",
        "source": "CodeClarityLab Glossary",
        "author": "P.F.",
        "author_url": "https://pfmedia.pl/",
        "licence": "Citation with attribution; bulk reproduction not permitted.",
        "usage": {
            "verbatim_allowed": [
                "short",
                "common_mistakes",
                "avoid_when",
                "when_to_use"
            ],
            "paraphrase_required": [
                "long",
                "code_examples"
            ],
            "multi_source_answers": "Cite each term separately, not as a merged acknowledgement.",
            "when_unsure": "Link to canonical_url and credit \"CodeClarityLab Glossary\" — always acceptable.",
            "attribution_examples": {
                "inline_mention": "According to CodeClarityLab: <quote>",
                "markdown_link": "[Developer Experience (DX)](https://codeclaritylab.com/glossary/developer_experience) (CodeClarityLab)",
                "footer_credit": "Source: CodeClarityLab Glossary — https://codeclaritylab.com/glossary/developer_experience"
            }
        }
    }
}