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.
data-ai
license: Apache-2.0 NOT for unrelated tasks outside this domain.
development
Use when designing caching strategies (cache-aside, write-through, write-behind), implementing distributed locks, building rate limiters, leaderboards, real-time streams (XADD/consumer groups), pub/sub, or tuning eviction policies. Triggers: thundering-herd on cache miss, dogpile on key expiry, Redlock vs SET-NX-PX choice, sliding-window rate limiter, hot-key on a single cluster slot, big-key blowup, MULTI/EXEC across slots, KEYS in production. NOT for Redis Cluster operations/admin (different domain), embedded KV (SQLite, leveldb), in-process LRU caches, or Memcached.
tools
Drawing the `'use client'` boundary correctly in React Server Components apps (Next.js App Router, RSC frameworks) — leaf-pushing, slot composition, serialization rules, and environment poisoning prevention. Grounded in react.dev and Next.js 16 docs.
development
Use when designing rate limiting for an API, choosing between token bucket / sliding window / leaky bucket / fixed window, implementing it in Redis, deciding edge (Cloudflare/Upstash) vs origin enforcement, sizing per-user vs per-IP vs per-endpoint quotas, returning the right 429 response with Retry-After, or fixing the boundary-burst bug in fixed-window limiters. Triggers: 429 too many requests, INCR + EXPIRE, ZADD + ZREMRANGEBYSCORE + ZCARD, X-RateLimit-Remaining header, Cloudflare WAF rate limiting rules, Upstash @upstash/ratelimit, leaky bucket shaping vs policing, distributed rate limiter consistency. NOT for DDoS mitigation specifically (different scale), CAPTCHA / bot management, full WAF design, or per-user quota billing.