---
title: "Parkinson's Law"
source: "/reference/parkinsons-law"
description: "Work tends to expand to fill the time or space available; in product design, loose task boundaries can encourage unnecessary effort."
---
# Parkinson's Law

Work tends to expand to fill the time or space available; in product design, loose task boundaries can encourage unnecessary effort.



### Principle

Work tends to expand to fill the time or space available; in product design, loose task boundaries can encourage unnecessary effort.

### Why it matters

Parkinson's Law is not a direct usability formula, but it is useful when a workflow invites open-ended configuration before value is delivered. Setup tasks, editors, and administrative processes can grow because the interface presents every possible decision at once. Clear scope, defaults, and staged configuration help users reach a useful state without overworking the setup.

### Deeper design interpretation

Open-ended tasks tend to grow. In software, this appears when setup, profile completion, project creation, or configuration offers every possible refinement before the user reaches a meaningful done state. The user may continue because the interface implies that completion requires more work, even when the additional detail is optional.

A clear boundary protects time and helps users distinguish “ready to use” from “can be improved later.” This is especially valuable in onboarding and administrative workflows, where products often accumulate fields over time.

Layr should examine completion logic, optionality, and time-to-value rather than simply shortening forms.

### What the agent should reason about

Identify the minimum required state for the product to function correctly, then compare it with what the interface currently treats as mandatory. Look for optional fields presented with the same visual weight and progress logic as required ones.

Do not recommend artificial deadlines or time pressure for tasks that require careful review.

### Common failure patterns

- Optional customization blocks initial creation.
- Profile-completion meters count irrelevant optional fields.
- Setup combines creation with every advanced setting.
- Users can refine indefinitely without a clear “done” state.
- Progress indicators imply incompleteness after all required work is finished.

### Audit questions

- What does “done enough to get value” mean for this task?
- Which fields or steps are genuinely required?
- Can refinement happen later without risk?
- Does the interface create artificial incompleteness?

### Example agent finding

> **Medium — Workspace creation requires advanced configuration before first use.** Branding, integrations, notification policy, roles, and templates are all mandatory in the creation flow even though only name and owner are required to create the workspace. Create the workspace after the essential fields and move advanced setup into post-creation configuration.

### Agent directive

> Give tasks a clear completion boundary and avoid making optional refinement feel mandatory before users can obtain value.

### Apply this when

- Onboarding, setup, configuration, profile completion, project creation, editors, reporting, and administrative workflows.

### Observable signals

- A setup flow exposes many optional fields with no distinction from required ones.
- Users can continue refining indefinitely before the product confirms that the task is complete.
- 'Complete your profile' mechanics pressure users to fill irrelevant information.
- A creation flow combines initial creation with every advanced configuration option.
- Progress indicators treat optional customization as incomplete work.

### Recommended actions

- Separate required setup from optional refinement.
- Define a meaningful done state.
- Move advanced configuration after initial value when safe.
- Label optional fields honestly and avoid artificial completion pressure.
- Save partial work so users can refine later.

### Do not over-apply

Do not rush tasks that require careful review. Time pressure can increase errors, especially for financial, legal, medical, security, or destructive decisions.

### Example

**Weak:** Creating a workspace requires configuring branding, integrations, notification rules, roles, and templates before the first project can exist.

**Stronger:** The workspace is created after essential identity and ownership choices; advanced configuration remains available afterward.

### Evaluation notes

- **Default severity:** Low to medium; high when bloated setup blocks activation.
- **Typical confidence:** Medium because unnecessary scope depends on product requirements.
- **Primary evidence:** Required/optional fields, completion logic, setup sequence, time-to-value.
- **Related rules:** Paradox of the Active User, Tesler's Law, Goal-Gradient Effect, Cognitive Load

### References

- [Laws of UX — Parkinson's Law](https://lawsofux.com/parkinsons-law/)

## Related rules

- [Paradox of the Active User](/__layr/pages/reference/paradox-of-the-active-user.md)
- [Tesler's Law](/__layr/pages/reference/teslers-law.md)
- [Goal-Gradient Effect](/__layr/pages/reference/goal-gradient-effect.md)
- [Cognitive Load](/__layr/pages/reference/cognitive-load.md)

## Agent guidance

Review criteria, the finding contract a report must use, and worked examples.

Established principle; Layr interpretation and agent guidance. Category: Interaction, Performance & Error Tolerance.

## Retrieve
- Canonical page: https://layr.design/reference/parkinsons-law
- Markdown for agents: https://layr.design/__layr/pages/reference/parkinsons-law.md
- Reference map: https://layr.design/llms.txt
- Route index: https://layr.design/__layr/routes.toon

## Rule object
```yaml
rule:
  id: "parkinsons-law"
  title: "Parkinson's Law"
  category: "Interaction, Performance & Error Tolerance"
  origin: established
  canonical_url: "https://layr.design/reference/parkinsons-law"
  principle: "Work tends to expand to fill the time or space available; in product design, loose task boundaries can encourage unnecessary effort."
  directive: "Give tasks a clear completion boundary and avoid making optional refinement feel mandatory before users can obtain value."
  applies_when:
    - "Onboarding, setup, configuration, profile completion, project creation, editors, reporting, and administrative workflows."
  observable_signals:
    - "A setup flow exposes many optional fields with no distinction from required ones."
    - "Users can continue refining indefinitely before the product confirms that the task is complete."
    - "'Complete your profile' mechanics pressure users to fill irrelevant information."
    - "A creation flow combines initial creation with every advanced configuration option."
    - "Progress indicators treat optional customization as incomplete work."
  audit_questions:
    - "What does “done enough to get value” mean for this task?"
    - "Which fields or steps are genuinely required?"
    - "Can refinement happen later without risk?"
    - "Does the interface create artificial incompleteness?"
  recommended_actions:
    - "Separate required setup from optional refinement."
    - "Define a meaningful done state."
    - "Move advanced configuration after initial value when safe."
    - "Label optional fields honestly and avoid artificial completion pressure."
    - "Save partial work so users can refine later."
  avoid_when:
    - "Do not rush tasks that require careful review. Time pressure can increase errors, especially for financial, legal, medical, security, or destructive decisions."
  common_failure_patterns:
    - "Optional customization blocks initial creation."
    - "Profile-completion meters count irrelevant optional fields."
    - "Setup combines creation with every advanced setting."
    - "Users can refine indefinitely without a clear “done” state."
    - "Progress indicators imply incompleteness after all required work is finished."
  evidence_types:
    - "Required/optional fields"
    - "completion logic"
    - "setup sequence"
    - "time-to-value"
  default_severity: "Low to medium; high when bloated setup blocks activation."
  typical_confidence: "Medium because unnecessary scope depends on product requirements."
  related_rules:
    - { id: "paradox-of-the-active-user", title: "Paradox of the Active User", url: "https://layr.design/reference/paradox-of-the-active-user" }
    - { id: "teslers-law", title: "Tesler's Law", url: "https://layr.design/reference/teslers-law" }
    - { id: "goal-gradient-effect", title: "Goal-Gradient Effect", url: "https://layr.design/reference/goal-gradient-effect" }
    - { id: "cognitive-load", title: "Cognitive Load", url: "https://layr.design/reference/cognitive-load" }
```

## What to reason about
Identify the minimum required state for the product to function correctly, then compare it with what the interface currently treats as mandatory. Look for optional fields presented with the same visual weight and progress logic as required ones. Do not recommend artificial deadlines or time pressure for tasks that require careful review.

## Routing
Route a review here when evidence is measurable in interaction behavior: latency, target geometry, validation, parsing, task completion, duplicate actions, failed input, or recovery. Prefer instrumented evidence over aesthetic judgment.

## Review procedure
For every finding:
1. Identify the exact component, state, route, or interaction.
2. State the observable evidence.
3. Name the principle that applies.
4. Explain the user consequence in the current context.
5. Estimate severity from the consequence, frequency, and reversibility.
6. Recommend the smallest change that addresses the issue while preserving the product's existing design system.
7. Lower confidence when intent, frequency, audience, device, or product constraints must be inferred.
8. Do not produce generic advice such as "improve hierarchy" or "make this clearer" without specifying what is wrong and why.

## Finding contract — emit exactly this shape
```yaml
finding:
  rule_id: string
  location: string
  evidence:
    - observable fact
  impact: string
  severity: low | medium | high | critical
  confidence: low | medium | high
  recommendation:
    change: string
    rationale: string
    preserve:
      - existing design-system behavior
      - valid product constraints
```

## Example finding for this rule
Medium — Workspace creation requires advanced configuration before first use. Branding, integrations, notification policy, roles, and templates are all mandatory in the creation flow even though only name and owner are required to create the workspace. Create the workspace after the essential fields and move advanced setup into post-creation configuration.

## Code reference

The same principle as markup. Compare the structure, not the class names.

```html
<!-- weak -->
<div class="example-ui example-ui-weak">
  <div class="scene-chrome">
    <span class="scene-chrome-app">Workspace</span>
    <span class="scene-chrome-view">Create</span>
  </div>
  <div class="scene-body">
    <div class="scene-panel">
      <span class="scene-panel-title">Create workspace</span>
      <div class="scene-row">
        <span class="scene-check-row">
          <span class="scene-check scene-check-on"></span>
          <span>Name &amp; owner</span>
        </span>
        <span class="scene-tag scene-tag-warning">Required</span>
      </div>
      <div class="scene-row">
        <span class="scene-check-row">
          <span class="scene-check"></span>
          <span>Brand colours</span>
        </span>
        <span class="scene-tag scene-tag-warning">Required</span>
      </div>
      <div class="scene-row">
        <span class="scene-check-row">
          <span class="scene-check"></span>
          <span>Integrations</span>
        </span>
        <span class="scene-tag scene-tag-warning">Required</span>
      </div>
      <div class="scene-row">
        <span class="scene-check-row">
          <span class="scene-check"></span>
          <span>Notification rules</span>
        </span>
        <span class="scene-tag scene-tag-warning">Required</span>
      </div>
      <div class="scene-row">
        <span class="scene-check-row">
          <span class="scene-check"></span>
          <span>Roles</span>
        </span>
        <span class="scene-tag scene-tag-warning">Required</span>
      </div>
      <div class="scene-row">
        <span class="scene-check-row">
          <span class="scene-check"></span>
          <span>Templates</span>
        </span>
        <span class="scene-tag scene-tag-warning">Required</span>
      </div>
      <div class="scene-row">
        <span class="scene-action scene-action-disabled">Create workspace</span>
        <span class="scene-meta">1 of 6 complete</span>
      </div>
      <span class="scene-note">6 required steps before the first project exists</span>
    </div>
  </div>
</div>
```

```html
<!-- stronger -->
<div class="example-ui example-ui-strong">
  <div class="scene-chrome">
    <span class="scene-chrome-app">Workspace</span>
    <span class="scene-chrome-view">Create</span>
  </div>
  <div class="scene-body">
    <div class="scene-panel">
      <span class="scene-panel-title">Create workspace</span>
      <div class="scene-field">
        <span class="scene-label">Workspace name</span>
        <span class="scene-input scene-input-ok">Acme Studio</span>
      </div>
      <div class="scene-row">
        <span>Owner</span>
        <span class="scene-owner">
          <span class="scene-avatar">MC</span>
          <span class="scene-value">Maya Chen</span>
        </span>
      </div>
      <span class="scene-action scene-action-primary">Create workspace</span>
    </div>
    <div class="scene-panel scene-panel-quiet">
      <span class="scene-panel-title">Set up later</span>
      <div class="scene-row scene-row-muted">
        <span class="scene-meta">Branding · Integrations · Roles · Templates</span>
        <span class="scene-tag scene-tag-neutral">Optional</span>
      </div>
    </div>
  </div>
</div>
```

```css
/* declarations these studies depend on */
.example-ui { display: grid; grid-template-rows: auto minmax(0, 1fr); min-width: 0; min-height: 17rem; overflow: hidden; border: var(--border-thin) solid var(--color-border-strong); background: var(--color-background); color: var(--color-text); font-size: var(--text-xs); line-height: var(--leading-snug); }
.example-ui .scene-chrome { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--space-1) var(--space-2); padding: var(--space-2) var(--space-3); border-bottom: var(--border-thin) solid var(--color-border-strong); background: var(--color-surface); }
.example-ui .scene-chrome-app { font-size: var(--text-2xs); font-weight: 600; letter-spacing: var(--tracking-label); text-transform: uppercase; }
.example-ui .scene-chrome-view { color: var(--color-text-tertiary); font-size: var(--text-2xs); }
.example-ui .scene-body { display: grid; align-content: start; gap: var(--space-3); min-width: 0; padding: var(--space-3); }
.example-ui .scene-body:has(> .scene-panel:only-child) { align-content: stretch; }
.example-ui .scene-panel { display: grid; align-content: start; justify-items: start; gap: var(--space-2); min-width: 0; padding: var(--space-3); border: var(--border-thin) solid var(--color-border-strong); background: var(--color-surface-raised); }
.example-ui .scene-panel-quiet { border-color: var(--color-border-subtle); background: var(--color-surface); }
.example-ui .scene-panel-title { font-size: var(--text-sm); font-weight: 600; letter-spacing: var(--tracking-heading); }
.example-ui .scene-row { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--space-1) var(--space-2); width: 100%; min-width: 0; padding-block: var(--space-1); }
.example-ui .scene-panel > .scene-row + .scene-row { border-top: var(--border-thin) solid var(--color-border-subtle); }
.example-ui .scene-row-muted { color: var(--color-text-tertiary); }
.example-ui .scene-meta { color: var(--color-text-tertiary); font-size: var(--text-2xs); }
.example-ui .scene-value { font-variant-numeric: tabular-nums; font-weight: 550; }
.example-ui .scene-note { width: 100%; padding-top: var(--space-2); border-top: var(--border-thin) solid var(--color-border-subtle); color: var(--color-text-tertiary); font-family: var(--font-mono); font-size: var(--text-2xs); line-height: var(--leading-snug); }
.example-ui .scene-action { display: inline-flex; align-items: center; justify-content: center; min-height: var(--space-8); padding-inline: var(--space-3); border: var(--border-thin) solid var(--color-border-strong); border-radius: var(--radius-xs); background: var(--color-surface-raised); color: var(--color-text); font-size: var(--text-xs); font-weight: 550; white-space: nowrap; }
.example-ui .scene-action-primary { border-color: var(--color-primary-bg); background: var(--color-primary-bg); color: var(--color-primary-text); }
.example-ui .scene-action-disabled { border-color: var(--color-border-subtle); background: var(--color-surface); color: var(--color-text-tertiary); }
.example-ui .scene-tag { display: inline-block; padding: 0 var(--space-2); border: var(--border-thin) solid var(--color-border-strong); color: var(--color-text-secondary); font-size: var(--text-2xs); line-height: 1.6; white-space: nowrap; }
.example-ui .scene-tag-neutral { border-color: var(--color-border-strong); }
.example-ui .scene-tag-warning { border-color: var(--color-caution); color: var(--color-caution); }
.example-ui .scene-field { display: grid; justify-items: stretch; gap: var(--space-1); width: 100%; }
.example-ui .scene-label { color: var(--color-text-secondary); font-size: var(--text-2xs); }
.example-ui .scene-input { display: flex; align-items: center; min-height: var(--space-8); min-width: 0; padding: 0 var(--space-2); border: var(--border-thin) solid var(--color-border-strong); background: var(--color-surface-raised); color: var(--color-text); overflow-wrap: anywhere; }
.example-ui .scene-input-ok { border-color: var(--color-success); }
.example-ui .scene-avatar { display: inline-grid; place-items: center; width: var(--space-6); height: var(--space-6); border-radius: 50%; background: var(--diagram-fill); font-size: var(--text-2xs); font-weight: 600; }
.example-ui .scene-check { display: inline-block; width: 13px; height: 13px; border: var(--border-thin) solid var(--color-border-strong); border-radius: var(--radius-xs); }
.example-ui .scene-check-on { border-color: var(--color-primary-bg); background: var(--color-primary-bg); }
.example-ui .scene-check-row { display: inline-flex; align-items: center; gap: var(--space-2); min-width: 0; }
.example-ui .scene-owner { display: inline-flex; align-items: center; gap: var(--space-2); }
.example-ui { min-height: 15rem; }

/* resolved values */
:root {
  --border-thin: 1px;
  --font-mono: "Geist Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  --leading-snug: 1.35;
  --radius-xs: 2px;
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --text-2xs: 0.6875rem;
  --text-sm: 0.875rem;
  --text-xs: 0.75rem;
  --tracking-heading: -0.025em;
  --tracking-label: 0.06em;
}
```

## Weak vs stronger
- Weak: Creating a workspace requires configuring branding, integrations, notification rules, roles, and templates before the first project can exist.
- Stronger: The workspace is created after essential identity and ownership choices; advanced configuration remains available afterward.

## Reporting rules
- Report only what the interface shows as observable evidence; phrase psychological or motivational effects as possible consequences.
- Returning no finding is a valid result when evidence is insufficient.
