When should a beginner choose WordPress instead of building a custom PHP website?

# Postmortem: Beginner's Dilemma - WordPress vs Custom PHP Development

### ## Summary
A beginner developer encountered decision paralysis when choosing between WordPress and custom PHP development for web projects. This postmortem analyzes the trade-offs and contextual factors to guide appropriate technology selection during the learning phase.

### ## Root Cause
- **Misalignment of project requirements with tool capabilities**: Failure to match project complexity/content needs with WordPress' CMS strengths
- **Incomplete understanding of opportunity costs**: Underestimating development/maintenance overhead of custom solutions
- **Learning-stage tunnel vision**: Focusing exclusively on coding skills without considering ecosystem factors

### ## Why This Happens in Real Systems
- WordPress powers 43% of websites (W3Techs), creating implicit pressure to adopt it
- Academic curricula often prioritize foundational coding over CMS implementation
- Clients frequently request WordPress due to brand recognition regardless of technical fit
- Hidden complexity in WordPress (themes/plugins) mimics low-code solutions but requires deep PHP knowledge for customization

### ## Real-World Impact
| **Consequence** | **WordPress Choice** | **Custom PHP Choice** |
|-----------------|----------------------|------------------------|
| **Timeline** | Faster initial setup | Months of development |
| **Long-term Maintenance** | Plugin conflicts/updates | Full ownership of tech debt |
| **Scalability** | Requires optimization | Built to specific scaling needs |
| **Skill Transfer** | Common CMS knowledge | Unique codebase knowledge |

## Example
WordPress page rendering vs custom PHP routing:
```php
// WordPress (themes/page.php)

// Custom PHP (router.php) $router->get('/page', function() { $data = fetchDataFromDB(); return renderTemplate('page-view', $data); });

How Senior Engineers Fix It

  1. Conduct requirements triage:
    • Content-heavy sites → WordPress
    • Unique workflows → Custom PHP
  2. Evaluate constraints:
    graph LR
    A[Project?] --> B{Has CMS needs?}
    B -->|Yes| C[WordPress]
    B -->|No| D{Custom logic-heavy?}
    D -->|Yes| E[Custom PHP]
    D -->|No| F[Static/JAMstack]
  3. Hybridize strategically: Use WordPress as headless CMS with custom frontends
  4. Set learning milestones: WordPress theming → Plugin dev → Custom API integrations

Why Juniors Miss It

  • Tool mystification: Perceives WordPress as “cheating” vs “real coding”
  • Underestimation gaps:
    • WordPress: Security hardening needs
    • Custom: Session/auth systems requirements
  • Tutorial bias: Most PHP tutorials ignore CMS integration patterns
  • Portfolio distortion: Believes custom projects demonstrate more skill (even when inappropriate)