Scoping Ruthlessly
The hardest skill in startup engineering is not writing code. It is deciding what not to build.
Every feature someone suggests sounds reasonable. User onboarding? Obviously. Email notifications? Of course. Admin dashboard? How else will we manage things? Search? People need to find things. Dark mode? Users expect it.
Each one is reasonable in isolation. Together, they turn a two-week project into a three-month project. And three months is a death sentence for a startup that needs to learn fast.
Ruthless scoping is the discipline of cutting everything that does not directly test your hypothesis or deliver core value. It feels wrong. It feels like you are shipping an incomplete product. You are. That is the point.
The MoSCoW Method
MoSCoW is a simple prioritization framework that forces you to categorize every requirement. It stands for Must Have, Should Have, Could Have, and Won't Have.
The critical rule: if everything is a Must Have, the framework is not working. Realistically, Must Haves should be 30-40% of your total feature list. If you cannot push 60% of features into Should/Could/Won't, you are not scoping ruthlessly enough.
Feature: Social fitness app MVP
Must Have (ship without these and it is pointless):
- User can log a workout
- User can see their workout history
- Basic auth (sign up, log in)
Should Have (important but can launch without):
- Social feed showing friends' workouts
- Workout templates
- Progress charts
Could Have (nice but not critical):
- Push notifications
- Profile photos
- Workout sharing to Instagram
Won't Have (explicitly not in this version):
- Apple Watch integration
- AI workout recommendations
- Nutrition tracking
- Group challenges
- Leaderboards
- Dark mode
The power of Won't Have is that it makes the decision explicit. Everyone on the team knows that leaderboards are not happening in v1. Nobody spends time designing them, discussing them, or "just quickly adding" them.
The Must Have Test
For each item in Must Have, ask: "If we launch without this, does the product still test our core hypothesis?"
If the answer is yes, move it to Should Have. Be brutal about this. Your ego will resist. Your product instinct will resist. Do it anyway.
"We need user profiles."
Does the product test our hypothesis without profiles? Yes.
Move to Should Have.
"We need workout logging."
Does the product test our hypothesis without logging? No.
Keep in Must Have.
"We need error handling for edge cases."
Does the product test our hypothesis without this? Yes.
Move to Could Have. Handle the common case only.
The Two-Week Rule
If your scoped work cannot ship in two to four weeks, the scope is too big. This is not a suggestion — it is a diagnostic tool.
When you find yourself saying "this will take six weeks," the response is not "okay, six weeks then." The response is "what can we cut to make it two weeks?"
Six-week scope:
- Full CRUD for three data models
- Auth with email, Google, GitHub
- Responsive design for mobile and desktop
- Admin panel
- Email notifications
- Search with filters
- File upload with S3
- User settings page
Two-week scope (same product):
- Full CRUD for one data model (the core one)
- Auth with Google only
- Desktop only (mobile users can deal with it)
- Admin via database console
- No email notifications
- No search (list view is enough for now)
- No file upload (link to external files)
- No settings (hardcode sensible defaults)
Both versions test the same hypothesis: "Do people want to manage X?" The six-week version does it with polish. The two-week version does it with duct tape. The duct tape version ships three weeks earlier and tells you whether to keep building.
Stripe's first Checkout widget shipped in a remarkably short time. It handled one thing: accepting a credit card number. No saved cards. No address verification. No international cards. Those all came later, after they proved the core concept worked.
Cutting Scope Techniques
The "What Would We Do Manually?" Test
For any feature that is not your core value, ask if you could do it manually for the first 50 users.
Feature: User onboarding email sequence
Manual alternative: Send emails yourself from Gmail
Automate when: You have 100+ new signups per week
Feature: Admin dashboard
Manual alternative: SQL queries in a database console
Automate when: A non-technical person needs to do admin tasks daily
Feature: User export/download
Manual alternative: User emails you, you run a script
Automate when: More than 5 requests per week
Feature: Password reset
Manual alternative: User emails you, you reset it manually
Automate when: More than a few requests per week
Airbnb's early team manually processed payments, manually verified listings, and manually resolved disputes. They automated each process only when the manual approach became unsustainable.
The "What If We Just Didn't?" Test
For every feature, ask: "What happens if we just don't build this?"
"What if we don't have search?"
Users scroll through a list. Fine for < 100 items.
"What if we don't have pagination?"
Page loads slowly with lots of data. Fine for now.
"What if we don't have email confirmation?"
Some fake signups. Not a problem at 50 users.
"What if we don't have undo?"
Users make mistakes and contact us. Annoying but survivable.
Most features you think are essential are actually just convenient. Convenience matters when you have 10,000 users. It does not matter when you have 10.
The "Fake It" Technique
Some features can be faked convincingly enough to test the concept.
Feature: Personalized recommendations
Fake: Show the same "recommended" list to everyone (curated by you)
Real version: Build a recommendation engine
Build the real version when: You have enough user data for recommendations to matter
Feature: Real-time notifications
Fake: Batch notifications and show them on page refresh
Real version: WebSocket-based push notifications
Build the real version when: Users complain about notification delay
Feature: Multi-language support
Fake: One language (English)
Real version: i18n framework with translations
Build the real version when: You are actively targeting non-English markets
Scope Creep Defense
Scope creep is the slow, invisible expansion of requirements. It happens through "quick additions" and "small improvements" that individually seem harmless but collectively delay the project by weeks.
Monday: "Can we also add a loading spinner?"
Tuesday: "The error messages should be more helpful."
Wednesday: "We should handle the edge case where..."
Thursday: "What if the user doesn't have an account?"
Friday: "Should we add analytics to track this?"
Each request: 2-4 hours
Weekly total: 10-20 hours
Monthly total: 40-80 hours (1-2 weeks of development)
The defense: keep a written scope document. Any addition goes through the MoSCoW filter. If it is not a Must Have, it goes on the list for the next iteration. No exceptions for "quick" additions — quick additions are the most dangerous kind because they bypass the scoping process.
Real-World Ruthless Scoping
Twitter launched with a 140-character limit partly because of SMS constraints, but it also forced ruthless scoping of the product itself. No photo uploads. No retweets. No threads. No DMs. Just post short text and follow people. That was enough.
Craigslist is the ultimate example of ruthless scoping sustained over decades. No modern design. No recommendation algorithms. No mobile app (for years). Just categorized listings. It works because the core value — connecting buyers and sellers — does not require any of those things.
WhatsApp launched with one feature: send messages to people in your phone contacts. No group chats. No voice calls. No status updates. No end-to-end encryption. These all came years later. The core hypothesis — people want free messaging that works internationally — was validated with the simplest possible implementation.
Notion took the opposite approach in their first version and nearly died. They built too much, too complex, too polished before validating demand. They had to lay off most of their team and start over with a much more focused product. The second attempt, with ruthless scoping, succeeded.
When Scoping Feels Impossible
Sometimes stakeholders, cofounders, or customers insist that everything is critical. When scoping conversations stall, try these approaches:
The budget constraint. "We have two weeks of engineering time. How do we spend it?" Finite time forces prioritization.
The one-feature question. "If we could only ship one feature, what would it be?" Start there and add only what is absolutely necessary.
The user story test. "What is the one thing a user does in our product?" Build that one thing end-to-end before adding anything else.
The competitor comparison. "What does our competitor's product not do that we will?" If the answer is "everything our competitor does plus more," your scope is wrong. Find the one thing you do differently.
Common Pitfalls
Confusing scoping with quality. Cutting scope does not mean cutting quality on what remains. The features you ship should work well. You are shipping fewer features, not worse features.
Not saying no. Every "yes" to a feature is a "no" to shipping sooner. If you cannot say no, you cannot scope.
Scoping once and never again. Scope should be revisited weekly. What you learn from early users changes what is important. The Must Haves from last week might be Won't Haves this week.
Gold-plating Must Haves. Even within your Must Have features, there are levels of polish. Ship the 80% version that works, not the 100% version that is perfect.
Treating scope cuts as temporary. "We'll add it in v2" is a polite fiction. Most features that get cut from v1 never get built because you learn they are not needed. This is a feature, not a bug.
Not communicating scope decisions. Everyone on the team needs to know what is in and what is out. Unclear scope leads to engineers building features that were supposed to be cut.
Key Takeaways
- Ruthless scoping is the most important skill in startup engineering. It determines how fast you learn.
- Use MoSCoW method: Must Have, Should Have, Could Have, Won't Have. If everything is a Must Have, try again.
- If your scope exceeds two to four weeks, cut until it does not.
- Do things manually for the first 50 users before automating them.
- Ask "what happens if we just don't build this?" for every feature. Most answers are "nothing catastrophic."
- Scope creep happens through "quick additions." Defend against it with a written scope document.
- Cutting scope is not cutting quality. Ship fewer things that work well, not many things that barely work.