Back to insights

A design system is a decision system

Components matter, but the real value is making product decisions repeatable across states, surfaces and teams.

By Max Hakowsky

4 min read

The cursor mark
A useful system records how a product behaves, not only how its components look.

A component library can make production faster, but speed alone does not make it a design system. The deeper value is shared product logic: repeated decisions about hierarchy, states, language and interaction no longer need to be solved from the beginning.

I think of a design system as a decision system. Components are the visible result, while the real work is deciding which behaviors should remain consistent and where the product genuinely needs variation.

The difference shows up in what happens when something new arrives. A component library answers the question do we have this. A decision system answers the harder one: what did we decide the last time a product problem looked like this, and does that reasoning still hold.

Start with recurring decisions

The strongest starting point is not a list of visual primitives. It is a list of questions the team keeps answering differently. How should the product confirm an action? What information belongs in a summary? When should a control become unavailable?

These questions reveal the seams of the system. Once the decision is clear, the component can carry it consistently across the product.

Starting from primitives produces the opposite result. A team can own a beautifully specified button and still ship two answers to whether a destructive action needs confirming. That was never a button problem.

  • Repeated hierarchy and content patterns
  • Interaction rules that appear across several flows
  • States that need the same meaning in different contexts

Design states before collecting variants

A component shown only in its ideal state is not yet a product pattern. Real use includes missing data, long labels, delayed responses, unavailable actions and errors that need a way forward.

State design makes the system resilient. It also exposes whether two components are truly different or whether they are one pattern responding to different conditions.

That second effect is worth more than it sounds. Most variant sprawl is not variety, it is the same pattern described several times by people who could not see each other's work.

The best system removes repeated arguments without removing judgment.

One system can serve two audiences

The hardest test of a system is a product with two kinds of user. The temptation is to build a second product inside the first.

Bartly has two sides that want opposite things. A creator wants abundance: relevant offers with as little work as possible. A brand wants evidence: reach it can believe, in numbers it can compare. Both run on the same components, with the same weights applied differently.

Keeping one system there was not an efficiency decision. It was a refusal to let the side that produces the supply become the cheap-looking half of the product. Systems encode priorities, and this is the kind they encode most visibly.

Keep semantics visible

Names should describe the role a pattern plays, not the page where it first appeared or the color it currently uses. Semantic language helps design and engineering discuss the same object without translating through a screenshot.

This also protects the system when the visual direction evolves. A well-named status, action or content pattern can survive a visual redesign because its product purpose remains stable.

The same logic holds one level up, in the brand. The boostlab mark is resolved as a silhouette before any color is applied, so it holds in one color, in reverse and at favicon scale. Color arrives afterwards as energy, never as the thing that makes it recognizable.

Document rules where work happens

Documentation is useful when it answers the decision a person is making now. A short note beside a component can be more valuable than a large reference page nobody opens during active work.

I prefer documentation that explains intent, required states, content constraints and known exceptions. Examples should show why the pattern changes, not only how many variants exist.

At by.studio the rules exist for five people producing work that has to read as one studio, not for a guidelines PDF that gets approved and then forgotten. That audience changes the format: shorter, closer to the work, and written for someone who is not thinking about the system that day.

  • What problem the pattern solves
  • Which states are required
  • Which content and interaction rules are fixed
  • When a different pattern is more appropriate

Let the system evolve through product work

A system becomes brittle when consistency is treated as a goal above product quality. New flows will expose missing states, weak names and rules that were too specific to the first use case.

The useful response is not to bypass the system quietly. It is to update the shared decision, record why it changed and let the improved rule support the next part of the product.

A quiet bypass is expensive in a way that is hard to see. The product keeps working, so nothing looks broken. But the system has stopped describing it. Once the map and the territory disagree, everyone goes back to reading the territory.

A mature design system is not measured by how many components it contains. It is valuable when people can make familiar decisions with less friction, and still spot the moments that deserve new judgment. Everything else is a library. That is a useful thing to own, and a different thing entirely.

About the author

Max Hakowsky

Product designer and engineer working across product strategy, interaction, systems and growth.

Have a product worth building?
Let’s make it perform.

I work with founders and product teams on products that need to launch, convert, scale or simply work better.

Contact

Let’s discuss your project.

A short call is the fastest way to a scope and a price.