skills/mythical-man-month/SKILL.md
Classic software engineering text on project management, Brooks's Law, and the nature of software complexity
npx skillsauth add curiositech/windags-skills mythical-man-monthInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Strategic framework for managing complex system development, revealing why intuitive approaches to scaling, coordination, and change management systematically fail.
| Change Size | Timeline Pressure | Action | |-------------|------------------|---------| | <10% features | Low pressure | Accept change, adjust internally | | <10% features | High pressure | Accept change, extend deadline 1-2 weeks | | 10-25% features | Low pressure | Formal re-estimation, likely extend timeline | | 10-25% features | High pressure | Cut other features OR extend deadline | | >25% features | Any pressure | Stop and redesign architecture | | >50% features | Any pressure | Treat as new project, plan to throw one away |
IF task has zero interdependencies
THEN people scale linearly (rare in software)
IF task requires coordination between workers
├─ IF coordination is <20% of effort per person
│ THEN add people cautiously (2-3x max team size)
├─ IF coordination is 20-50% of effort
│ THEN keep team small (3-7 people max)
└─ IF coordination is >50% of effort
THEN redesign task to reduce dependencies
IF project is late AND <50% complete
THEN extend deadline OR cut scope (never add people)
IF project is late AND >50% complete
THEN extend deadline only (adding people guarantees failure)
IF agents need shared state
├─ IF state changes <10 times/minute
│ THEN use single coordinator with state ownership
└─ IF state changes >10 times/minute
THEN redesign to eliminate shared state
IF agents need to negotiate outcomes
├─ IF <3 agents total
│ THEN allow peer-to-peer communication
└─ IF ≥3 agents
THEN use mediator pattern (single orchestrator)
IF task requires conceptual unity
THEN single orchestrator with specialized tools
NOT peer-to-peer agent democracy
IF you can't write clear spec in 2 pages
THEN design isn't ready for implementation
IF writing documentation feels painful
THEN you haven't decided what you're building
IF spec and code diverge
├─ IF spec is more accurate → fix code
├─ IF code is more accurate → update spec
└─ IF both are wrong → stop and redesign
Priority order:
1. User interface/API spec (what system does)
2. Architecture overview (how pieces fit)
3. Individual component specs
4. Implementation details (last)
Symptoms: Project behind schedule, management proposes adding people, velocity decreases further Detection: "We're 3 months late, let's hire 5 more developers" Root Cause: Training overhead + repartitioning costs exceed productivity gains Fix: Accept delay OR cut scope OR redesign for different partitioning. Never add people to late project in final stages.
Symptoms: System has multiple interaction paradigms, inconsistent interfaces, users can't form mental model Detection: Every feature requires learning new interaction pattern Root Cause: Democratic design process without single architectural vision Fix: Designate single architect for external interfaces. Implementation can be distributed, architecture must be unified.
Symptoms: Progress reports show 90% complete for months, testing keeps finding integration issues
Detection: No concrete deliverable milestones, "almost done" status persists >2 weeks
Root Cause: Underestimated integration complexity, no sharp completion criteria
Fix: Define binary milestones (passes all tests, user can complete workflow X). Allocate 50% of schedule to integration/testing.
Symptoms: Every change request treated as scope creep emergency, architecture can't accommodate variations Detection: "But that's not what we originally agreed to!" repeated frequently Root Cause: Assuming requirements won't change vs. designing for inevitable change Fix: Plan for 25% requirement changes. Build clean interfaces. Treat change as normal, not exceptional.
Symptoms: Reimplementation includes every withheld feature plus kitchen sink, loses original system's elegance Detection: New version has 3x features but takes 5x longer to learn Root Cause: Architect compensating for first system's limitations by including everything Fix: Maintain discipline. Second system should be refined, not inflated. Test conceptual integrity with naive users.
Scenario: Building automated code review with 4 specialized agents (syntax, security, performance, architecture).
Naive Approach: Peer-to-peer agent communication where each agent reviews independently then they negotiate final score.
Brooks Analysis Applied:
Expert Decision Process:
What novice misses: Tries to make agents "smart" and autonomous What expert catches: Minimizes coordination points, preserves decision consistency
Result: 5x simpler debugging, consistent review standards, easy to modify review criteria
Situation: ML training pipeline 2 months behind, manager wants to add 3 GPU engineers.
Decision Process:
Brooks-informed decision:
Outcome: Delivered in 10 weeks vs. estimated 12+ weeks if people added
This skill should NOT be used for:
Delegate instead:
system-design skilldeep-work and focus-management skillsstakeholder-management skillteam-leadership skillsagile-project-management skillKey boundary: Brooks's insights apply when coordination overhead becomes significant factor. If your team spends <10% time on coordination, other management approaches may be more relevant.
tools
Building resilient distributed systems with circuit breakers, retries with full-jitter exponential backoff, retry budgets (per-request 3-attempt + per-client 10% ratio per Google SRE), deadline propagation, and the cascading-failure math (4 layers × 3 retries = 64x amplification). Grounded in Resilience4j, Microsoft Cloud Patterns, AWS Architecture Blog (Marc Brooker), and Google SRE Book.
testing
Designing HTTP cache headers that work correctly across browsers, CDNs, and shared proxies — `Cache-Control` directives per RFC 9111, `stale-while-revalidate` and `stale-if-error` per RFC 5861, the Vary header for varying responses, and surrogate keys for tag-based purging. Grounded in IETF RFCs and Cloudflare/Fastly docs.
development
Use when designing or fixing a Content Security Policy on a real site, choosing between nonce-based and hash-based CSP, adding strict-dynamic, debugging "Refused to execute inline script" errors, deploying CSP in report-only mode first, configuring report-to / report-uri, or auditing an existing policy for unsafe-inline / unsafe-eval / wildcards. Triggers: "CSP blocks legitimate inline script", strict-dynamic, nonce-{RANDOM}, sha256-{HASH}, object-src none, base-uri none, frame-ancestors, Trusted Types, X-Content-Security-Policy obsolete, report-only vs enforced. NOT for general HTTP security headers (HSTS, COOP/COEP), Trusted Types deep dive, CORS configuration, or building a WAF.
tools
Choosing and operating an HTTP API versioning strategy that doesn't break clients — Stripe's date-based pinned versions, the Deprecation/Sunset header pair (RFC 9745 + RFC 8594), URI vs header vs media-type approaches, and the version-transformer pattern. Grounded in Stripe's published architecture and IETF RFCs.