Course contentsShow
System Design
Lesson 9 of 1,9191. System Design Mindset and First PrinciplesFree lesson

Functional vs Non-Functional: Core Distinction

Learn the fundamental difference between what a system does (functional) and how well it does it (non-functional).

Functional vs Non-Functional: Core Distinction

What you'll learn: You'll understand the fundamental difference between what a system does versus how well it does it.

The Two Categories of Requirements

When designing any system, requirements fall into two distinct buckets:

Functional requirements describe what the system must do—the actual features and behaviors users interact with. Think of these as the job description of your system.

Non-functional requirements describe how well the system performs its job—the quality attributes that matter but aren't features themselves.

A Restaurant Analogy

Imagine you're designing a restaurant:

  • Functional: "Serve customers food," "Take payment," "Provide a menu"—these are the actions the restaurant performs
  • Non-functional: "Serve food within 15 minutes," "Handle 100 customers simultaneously," "Stay open 24/7," "Keep food costs under budget"—these describe how well it performs

Both types are essential, but they're fundamentally different conversations.

In System Design Context

For a social media system:

  • Functional: Users can post messages, follow other users, like posts, send direct messages
  • Non-functional: The system must handle 10 million daily users, load pages in under 2 seconds, store data reliably for 10 years, cost less than $X per month to operate

Notice how functional requirements answer "Can it do this?" while non-functional requirements answer "Can it do this well enough?"

Why This Distinction Matters

In system design interviews and real-world projects, you'll constantly switch between these two lenses. You first clarify what needs to be built (functional), then figure out how well it needs to perform (non-functional). This distinction keeps your design organized and ensures you don't overlook critical quality requirements while chasing features.

Key Takeaway: Functional requirements define what your system does; non-functional requirements define how well it does it—both are equally important for successful system design.