Skip to main content

Breaking Problems Down

A simple way to turn a confusing ticket or interview question into smaller, safer decisions.

Andrews Ribeiro

Andrews Ribeiro

Founder & Engineer

The problem

A messy ticket or an aggressive interview prompt lands in front of you, and the natural reflex is to rush straight into the editor.

The problem is that when you accelerate too early, you greatly increase the chance of solving the wrong version of the problem.

You spend energy on syntax before you have locked down what goes in, what needs to come out, what cannot break, and what is still unclear.

A lot of people call this “being fast.”

Most of the time it is just badly aimed urgency.

Mental model

Treat a raw problem like something that needs shape before it turns into code.

Before writing a single if, get four boundaries clear:

  • what goes in
  • what needs to come out
  • what cannot break
  • what is still ambiguous

Once those four points are clear, a surprising amount of the difficulty disappears.

The goal is not to turn everything into a document.

The goal is to stop dragging hidden uncertainty into the implementation.

Breaking it down

A practical way to reduce risk is this:

  1. Restate the problem in your own words.
  2. Separate inputs, outputs, and constraints.
  3. Name the biggest open question.
  4. Reduce the scope to the smallest version that proves the path.

The goal is not to look brilliant.

The goal is to reduce noise until the problem is solid enough to trust.

1. Restating the problem exposes misunderstanding early

When you repeat the problem in your own words, two things happen:

  • you confirm whether you actually understood it
  • the other person quickly hears what is still vague

That saves a lot of wasted work.

2. Input, output, and constraint change the shape of the solution

Without those, you have a theme, not a problem.

Input tells you what you receive.

Output tells you what you must produce.

Constraint tells you what limits the solution:

  • time
  • cost
  • scale
  • compatibility
  • correctness

3. Name the biggest unknown

Sometimes the problem is not hard.

It is just underspecified.

Useful questions often sound like this:

  • is the ranking global or per tenant?
  • does this need real-time results or eventual results?
  • does this endpoint need pagination?
  • which failures are acceptable and which are not?

4. Solve the smallest honest version

This is not about shipping a sloppy MVP.

It is about choosing the smallest slice that proves the path safely.

Simple example

Imagine this request lands in Slack:

“We urgently need a new API endpoint that returns the 10 customers with the absolute highest revenue.”

A rushed response is to jump straight into SQL.

A better response pauses and maps the shape of the problem:

  • Input: What is the date range? Is there a specific tenant ID? Are there hidden filters?
  • Output: Is it just the top 10 names, or do they need the exact revenue payload?
  • Constraints: Does this need to run in under 50ms? What is the strict tie-breaker rule if two customers have the exact same revenue?
  • Failures: What happens if the database times out? What if the tenant has zero customers?

The problem is no longer vague.

It is now a safer specification.

Another common interview example:

“Design a queueing system for notifications.”

Before talking about Kafka, it helps to lock down things like:

  • are we sending email, push, or SMS?
  • do we need ordering per user?
  • what volume changes the architecture?
  • are retries expected?
  • what latency is acceptable?

Without that, the answer is just tool dumping.

Common mistakes

  • starting implementation before understanding the actual shape of the request
  • ignoring edge cases until they invalidate the solution later
  • solving future scenarios nobody asked for
  • treating ambiguity like a license to guess
  • confusing “breaking the problem down” with making a random checklist

How a senior thinks

A strong senior engineer does not rush just to look fast.

They remove ambiguity before they spend energy on implementation.

It usually sounds like this:

“Before I open the editor, I want the inputs, outputs, and main constraint to be clear. After that, the solution gets much easier to trust.”

What the interviewer wants to see

In system design or algorithm interviews, this shows maturity right away.

  • you actually listened and understood the shape of the problem
  • you know how to reduce uncertainty before you code
  • you can explain trade-offs without getting lost

A strong answer usually sounds like this:

“Before I solve it, I want to align on inputs, outputs, constraints, and the biggest unknown. Without that, any implementation might be correct for the wrong problem.”

If you cannot clearly state the input, output, and constraint, it is still too early to implement.

Quick summary

What to keep in your head

Practice checklist

Use this when you answer

You finished this article

Next article Thinking About Trade-offs and Constraints

Keep exploring

Related articles