Loading content...
With requirements read and understood, the next critical step is defining boundaries. Scope determines what you will build. Constraints determine how you can build it. Together, they transform an infinite possibility space into a tractable engineering problem.
Without clear scope, projects expand endlessly—the infamous 'scope creep' that destroys timelines and budgets. Without understood constraints, engineers propose solutions that cannot be implemented—technically infeasible, economically unviable, or politically impossible.
The ability to precisely define scope and constraints is what separates engineers who deliver from engineers who perpetually iterate. It's what distinguishes system designs that work from system designs that look good on a whiteboard but collapse under reality's weight.
By the end of this page, you will master the art of scope definition—knowing exactly what to include, what to exclude, and why. You'll develop a systematic approach to identifying constraints across technical, business, organizational, and regulatory dimensions. These skills form the essential frame within which all design decisions occur.
Scope is the explicit boundary separating what your system is responsible for from what it is not. It answers the fundamental question: What exactly are we building?
This sounds obvious, but scope is deceptively complex. It operates at multiple levels simultaneously, and confusion at any level creates problems:
Levels of Scope:
| Scope Dimension | In Scope | Out of Scope | Why Excluded |
|---|---|---|---|
| Feature | Tweet posting, Timeline feed, Follow system | Direct messages, Twitter Spaces, Ads platform | Focus on core social functionality |
| User | Public users, Power users (high followers) | Business accounts, Advertisers | Different usage patterns, separate systems |
| Data | Tweets, Users, Follow relationships | Ad data, Analytics aggregations | Owned by other systems |
| Responsibility | Tweet creation, Timeline assembly, Notifications | Content moderation ML, Ad serving | Specialized subsystems |
| Time | Read timeline, Post tweets | Analytics dashboard, Algorithmic ranking | MVP first, optimize later |
In system design interviews and initial product builds, 20% of features typically deliver 80% of value. Identify that 20% ruthlessly. Your scope should focus there. Features outside the core 20% should be explicitly excluded with clear reasons—this shows prioritization skill, not laziness.
Defining scope is not a single decision but a process. This process should be explicit and repeatable.
Step 1: List All Potential Features
From your requirement analysis, enumerate every feature that could be part of the system. Don't filter yet—capture everything. This becomes your scope universe.
Step 2: Categorize by Necessity
For each feature, assign it to one of four categories:
Step 3: Define Boundaries with Explicit Statements
Translate your categorization into explicit boundary statements. These statements form your scope contract:
✅ IN SCOPE
- The system WILL provide [feature A]
- The system WILL handle [use case B]
- The system WILL own [data C]
❌ OUT OF SCOPE
- The system WILL NOT handle [feature X]
- The system WILL NOT be responsible for [behavior Y]
- The system WILL delegate [function Z] to [external system]
⏳ FUTURE SCOPE
- [Feature] is deferred to phase 2 because [reason]
- [Capability] requires [prerequisite] which isn't ready
Step 4: Validate Scope Coherence
Review your scope definition for internal consistency:
Step 5: Document Dependencies on Out-of-Scope Systems
For anything out of scope that your system depends on, document:
Initial feature universe: Rider app, Driver app, Matching, Pricing, Payments, Navigation, Rating, Support, Analytics, Driver onboarding, Insurance, Fleet management...MUST HAVE: Rider requests ride, Driver accepts ride, Matching algorithm, Basic pricing, Trip tracking
SHOULD HAVE: Surge pricing, Ratings, Payment processing
COULD HAVE: ETA predictions, Route optimization
WON'T HAVE: Driver onboarding (separate system), Insurance management (partner system), Fleet management (enterprise feature)Notice how the scope focuses on the core ride-matching loop. Features that are business-critical but operationally separate (like driver onboarding) are explicitly excluded. This creates a bounded, achievable design target.
While scope defines what you're building, constraints define the boundaries of how you can build it. Constraints are limitations you must work within—they're not negotiable without changing the fundamental problem.
The Four Constraint Categories:
Every system design operates under constraints from four distinct dimensions. Complete constraint identification requires examining all four:
Technical Constraints
Limitations imposed by technology, physics, or existing systems.
Performance Constraints:
Scale Constraints:
Integration Constraints:
Infrastructure Constraints:
Example Constraint Statements:
The same functional requirements under different constraints produce radically different architectures. 'Build a chat system' with 100 users per day looks nothing like the same requirement with 100 million users. GDPR compliance changes data architecture fundamentally. A 3-month timeline eliminates many technically optimal solutions. Never design architecture without first understanding constraints.
Constraints are rarely handed to you on a silver platter. They must be systematically identified through probing questions and careful analysis. Here are proven techniques for surfacing constraints:
Probing Questions for Each Category:
Resources:
Absolutes:
Precedents:
Interfaces:
Dependencies:
Ask: 'What would make this project fail even if we delivered everything on time and budget?' This surfaces constraints people don't think to mention—political issues, dependencies on other initiatives, assumptions about user behavior, or organizational changes in progress.
Not all constraints are equally binding. Understanding the difference between hard constraints and soft constraints enables smarter trade-off decisions.
Hard Constraints: Non-negotiable boundaries that cannot be violated under any circumstances.
Characteristics of Hard Constraints:
Soft Constraints: Preferences or targets that can be relaxed under the right circumstances.
Characteristics of Soft Constraints:
The Constraint Negotiation Strategy:
Warning: Fake Hard Constraints
People often present soft constraints as hard ones. 'We must use MongoDB' might actually mean 'we're familiar with MongoDB.' 'This must be done by Q1' might mean 'we'd like Q1 but Q2 is actually possible.' Probe claimed hard constraints with: 'What happens if we can't meet this?' Truly hard constraints have severe, specific consequences.
Scope and constraints interact in fundamental ways. When constraints tighten, scope must often shrink. When scope expands, constraints become harder to meet. Understanding these trade-offs is critical to realistic design.
The Project Management Triangle Applied to System Design:
The classic project management 'iron triangle' has three vertices: Scope, Time, and Resources. You can optimize for any two, but the third suffers.
In system design, this expands to a multi-dimensional trade-off space:
| If You Want More... | You Typically Sacrifice... | Alternative Trade-off |
|---|---|---|
| Features (scope) | Development time OR development cost | Reduce quality/polish OR phase delivery |
| Performance | Development time OR operational cost | Reduce feature scope OR increase team |
| Reliability | Development complexity OR operational cost | Reduce performance OR extend timeline |
| Speed to market | Feature scope OR quality | Increase team OR reduce reliability requirements |
| Lower cost | Feature scope OR performance | Extend timeline OR reduce reliability |
The Scope-Time-Quality Trade-off in Practice:
Suppose you're designing a feed system with these initial parameters:
Halfway through, business says: 'We actually need 50M users at launch.'
Something must give. Your options:
There's no magic solution—each option has real costs. Your job is to present these trade-offs clearly to stakeholders, not to promise the impossible.
When asked to do more (more scope, more quality, faster timeline), the easiest answer is 'yes.' It's also the most dangerous. Saying yes to expanded scope without relaxing constraints leads to crunch, technical debt, missed deadlines, and system failures. Always couple scope expansion with explicit constraint discussion: 'We can add this feature if we extend the timeline by X weeks, OR if we accept Y trade-off.'
Scope and constraints must be documented explicitly. This documentation becomes your design contract—it's what you'll refer back to when questions arise, scope creep threatens, or stakeholders ask why something wasn't included.
The Scope and Constraints Document:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
# System Design: [System Name] - Scope & Constraints ## 1. Scope Definition ### 1.1 In Scope (Must Have)| Feature | Description | Priority | Dependency ||---------|-------------|----------|------------|| Feature 1 | ... | P0 | None || Feature 2 | ... | P0 | Feature 1 | ### 1.2 In Scope (Should Have - If Time Permits)| Feature | Description | Value | Effort ||---------|-------------|-------|--------|| Feature A | ... | High | Medium | ### 1.3 Explicitly Out of Scope| Feature | Reason for Exclusion | Future Phase? ||---------|---------------------|---------------|| Feature X | Different user segment | Phase 2 || Feature Y | Requires integration not ready | TBD | ### 1.4 External Dependencies (Out of Our Control)| System | What It Provides | Owner | Our Expectation ||--------|-----------------|-------|-----------------|| Auth Service | User authentication | Platform team | 99.9% availability | --- ## 2. Constraints ### 2.1 Hard Constraints (Non-Negotiable)| Constraint | Type | Consequence of Violation ||------------|------|-------------------------|| GDPR compliance | Regulatory | Legal liability || Max 200ms p99 latency | Technical | SLA violation | ### 2.2 Soft Constraints (Preferred but Flexible)| Constraint | Target | Acceptable Range | Trade-off ||------------|--------|-----------------|-----------|| Monthly cost | $20K | Up to $30K | More features || Launch date | Q1 2024 | Q2 acceptable | Full feature set | ### 2.3 Resource Constraints| Resource | Available | Notes ||----------|-----------|-------|| Backend engineers | 4 | Can request +1 if needed || Timeline | 3 months | Hard stop for market window || Infrastructure budget | $25K/month | Includes buffer | --- ## 3. Trade-off Decisions Made | Decision | What We Chose | What We Sacrificed | Rationale ||----------|--------------|-------------------|-----------|| Latency vs features | Lower latency | Analytics dashboard | User experience priority | --- ## 4. Open Items (To Be Resolved) | Item | Blocking? | Owner | Due Date ||------|-----------|-------|----------|| Final scale numbers | Yes | Product | [Date] |Why This Level of Documentation Matters:
Let's apply scope and constraint definition to a real system design problem.
The Prompt:
Design a rate limiting service for a large API platform.
Feature Universe:
MoSCoW Categorization:
| Feature | Category | Rationale |
|---|---|---|
| Check if request allowed | Must Have | Core function |
| Track request counts | Must Have | Required for checking |
| Distributed counting | Must Have | Large platform = distributed |
| Configure limits per client | Must Have | Business requirement |
| Return remaining quota | Should Have | Good API practice |
| Multiple algorithms (sliding window, token bucket) | Should Have | Flexibility |
| Rate limit by multiple dimensions | Should Have | Real-world need |
| Admin dashboard | Could Have | Can use existing tools |
| Analytics | Could Have | Nice but not core |
| Alerting | Won't Have | Separate alerting system |
Scope Statement:
IN SCOPE: Core rate limiting service that checks requests against configurable limits using distributed counters, supporting multiple rate limit algorithms and dimension combinations.
OUT OF SCOPE: Admin UI (use existing config management), analytics dashboards (separate system), alerting (integrate with existing alerting).
We've covered the essential skill of defining boundaries in system design. Let's consolidate the key takeaways:
What's Next:
With scope and constraints defined, ambiguities still remain. The next page explores how to clarify ambiguities—the systematic process of identifying unclear requirements, resolving them through targeted questioning, and documenting resolutions to prevent future confusion.
You now possess a systematic methodology for defining scope and identifying constraints in system design. These boundaries transform infinite possibility spaces into tractable engineering problems. Practice applying MoSCoW and RAPID to every new design challenge you encounter. Next, we'll tackle the critical skill of clarifying ambiguities.