Design you can defend.

"Make it look nicer" feels unanswerable if you think design is taste. It isn't — hierarchy, spacing, type, contrast and states are rules with defensible answers. This path is UI/UX for people who build the thing, so "it looks off" becomes something you can diagnose and fix.

Duration
5–6 weeks
Format
Rules, not taste
Prerequisite
Any HTML/CSS
You'll build
A redesigned real project

Each stage is one rule you can apply today

Each stage takes one thing that makes developer-built UIs look developer-built — spacing, type, contrast, missing states, no focus ring — and gives you the concrete rule that fixes it.

A sketchpad, right here

No setup, no account, no Figma login. Sketch a screen the way you would on paper — boxes, buttons, inputs, arrows. Deliberately rough, because rough is fast, and fast is the whole point of low-fidelity work.

wireframeTry sketching a login screen — logo, two inputs, one primary button.

Which tool, and when

Tool confusion wastes weeks. Stage 01 covers this properly, but here's the short version so you don't invest in the wrong software.

Figma Learn this

The current industry default, and the one worth real practice. Browser-based, free tier is genuinely enough to get hired on. Focus on four things: Auto Layout, Components, Variants, and Dev Mode.

Sketching Start here

Paper or a rough canvas — like the sketchpad above. Deliberately ugly, therefore fast. You'll throw away five layouts in ten minutes, which is exactly what you want before committing.

Adobe XD Legacy

Adobe moved XD into maintenance mode and stopped selling it standalone — it still opens old files, but new development stopped. Worth learning only if a specific employer already runs on it. Penpot is the open-source alternative worth knowing.

How you actually become a designer people hire

Knowing the rules doesn't make you hireable — showing judgment does. Stage 10 covers the portfolio format and how to get your first real work. This is the map.

1
Can use the tool

Knows Figma. Copies layouts that look nice. Not yet hireable as a designer — this is the level most tutorials leave you at.

2
Can make it look good

Consistent spacing, a real type scale, decent taste. Hireable as a junior — the ceiling is that you still need someone else to tell you what to make.

3
Can defend every decision the jump that pays

"This is primary because it's the one action 90% of users came for — I tested the other way and completion dropped." Most people never make this jump, which is exactly why it's where the money is. Stages 00–10 are aimed squarely at getting you here.

4
Can set direction

Decides what not to build. Owns the design system. Makes the other designers around them better. Years, not weeks — but the path runs through level 3, not around it.

This is what's waiting at the end

Certificate of Completion
Your Name
has completed Design You Can Defend — 11 stages, 11 passed quizzes
11 / 11 stagesAccessible by defaultVerified ID
🔒

Complete all 11 stages and their quizzes to unlock this.

Eleven stages, in this order

Each stage leans on the one before it — spacing systems only make sense once you've felt arbitrary values drift, and component states only matter once hierarchy is settled.

STAGE 00

Design is decisions, not decoration

Week 1

Developers often treat design as a taste layer applied at the end — which is why 'make it look nicer' feels unanswerable. Design is a set of decisions about attention, priority, and clarity, and those have defensible right answers.

What you'll learn
  • What a design is actually optimizing for — task completion, not admiration
  • Visual hierarchy: deciding what a user should see first, second, third
  • Why 'clean' usually means 'nothing competing for attention', not 'empty'
Code
Every screen answers three questions, in this order:

  1. What is this?          // orientation — where am I?
  2. What can I do here?    // the primary action, unmistakable
  3. What else exists?      // secondary options, quieter

<KW>A screen with three equally-loud buttons has answered #2 with
"you decide" — which is the designer declining to design.</KW>

THE SQUINT TEST
  Blur your eyes at the screen. Whatever still stands out
  IS your hierarchy — whether you intended it or not.
BuildSketch any screen you've built. Mark what you INTENDED users to see 1st, 2nd, 3rd — then squint at the real thing and mark what actually stands out. Fix the gap.
Self-checkA client says your design 'looks boring' but users complete tasks 40% faster on it. What does that most likely mean?
STAGE 01

Your tools — Figma, XD, and why you sketch first

Week 1

Tool confusion wastes weeks. Knowing what each tool is actually for — and which one is worth learning deeply in 2026 — saves you from investing in the wrong software or from polishing pixels before the layout is even decided.

What you'll learn
  • Figma: the current industry default, and the four features that actually matter
  • Adobe XD's status, and why it's no longer the tool to learn first
  • Low-fidelity sketching (paper, Excalidraw) as a separate, faster thinking mode
Code
FIGMA — learn this one properly
  Free tier is genuinely enough to be hired on. Browser-based,
  so nothing to install. The four things worth real practice:
    Auto Layout  — flex/gap, but visual. Makes designs responsive.
    Components   — one source of truth, reused everywhere.
    Variants     — all six states of a button in ONE component.
    Dev Mode     — how developers read spacing/tokens from your file.

ADOBE XD — know what it is, don't start here
  Adobe moved XD into maintenance mode and stopped selling it
  standalone. It still opens old files, but new features stopped.
  Learn it only if a specific employer already runs on it.

PENPOT — the open-source alternative
  Free, self-hostable, Figma-like. Worth knowing it exists.

SKETCHING (paper / Excalidraw) — where you should START
  Deliberately ugly = fast. You throw away 5 layouts in 10 minutes
  because none of them cost anything to make.

<KW>The trap: polished tools invite polishing. Choosing a border
radius before the layout is settled is procrastination that
looks like progress.</KW>
BuildSketch three completely different layouts for the same screen in under 10 minutes — deliberately rough. Pick one, and only then open a real design tool.
Self-checkYou have a rough idea for a new screen. Why is opening Figma immediately usually the slower path?
STAGE 02

Layout & visual hierarchy

Week 1–2

Most 'it looks off but I don't know why' interfaces are alignment and proximity problems. These are learnable rules, not intuition — which is exactly why developers can pick them up quickly.

What you'll learn
  • Proximity and grouping — spacing communicates relationship before text does
  • Alignment, and why inconsistent edges read as sloppy even unconsciously
  • Size, weight, and position as hierarchy tools instead of color alone
Code
Spacing tells the user what belongs together,
before they read a single word.

AMBIGUOUS — is the label attached above or below?
  label     margin-bottom: 16px
  input     margin-bottom: 16px

CLEAR — tight inside a group, loose between groups
  label     margin-bottom: 6px    // bound to its own input
  input     margin-bottom: 28px   // separated from next field

<KW>THE RULE
Space WITHIN a group must be smaller than space BETWEEN groups.</KW>
BuildSketch a form twice: once with equal spacing everywhere, once with tight-within / loose-between. Compare how obvious the grouping becomes.
Self-checkTwo elements are 8px apart; a third is 40px away from them. What does a user assume before reading a single word?
STAGE 03

Typography that carries meaning

Week 2

Type is most of what's on screen in almost every app, and it's the fastest lever for making an interface feel considered — but 'pick a nice font' is the least useful part of it.

What you'll learn
  • Type scale — a fixed set of sizes instead of arbitrary values
  • Line height and measure (line length), and why both affect readability
  • Weight and case as hierarchy tools, and when uppercase actively hurts
Code
A TYPE SCALE — pick from these, never invent one mid-project
  --text-xs:   12px   // captions, metadata
  --text-sm:   14px   // secondary text
  --text-base: 16px   // body — never smaller for real reading
  --text-lg:   20px
  --text-xl:   28px
  --text-2xl:  40px   // page titles

LINE HEIGHT — tighter for headings, looser for body
  heading  line-height: 1.15   // large text needs less room
  body     line-height: 1.6    // small text needs more

MEASURE — cap body text around 65 characters
  max-width: 65ch;
BuildSketch the same article layout at 3 different measures — very narrow, ~65ch, and full-width. Note where reading starts to feel like work.
Self-checkWhy does a line of body text running the full width of a 27-inch monitor get harder to read, even at a comfortable font size?
STAGE 04

Color & contrast — the accessible way

Week 2–3

Color is where most developer-built UIs fail accessibility, and it fails silently — nothing errors, it just becomes unusable for a meaningful slice of your users.

What you'll learn
  • WCAG contrast ratios, and computing them instead of eyeballing
  • Semantic color (success/warning/danger) kept separate from brand color
  • Why color must never be the only carrier of meaning
Code
WCAG AA MINIMUMS — the numbers that matter
  Body text (< 18px)                4.5 : 1
  Large text (>= 24px, or 18px bold)  3 : 1
  UI components & borders             3 : 1

Color alone fails ~1 in 12 men (color vision deficiency).

BAD — only red distinguishes this from a normal message
  <span style="color: red">Payment failed</span>

GOOD — color + icon + explicit words: three channels
  <span role="alert">⚠ Error: Payment failed — card declined</span>
BuildSketch an error state twice: once relying on red alone, once with icon + word + color. Show both to someone in grayscale.
Self-checkYour error message is red text on a white background and passes contrast. Why is that still not sufficient for conveying 'error'?
STAGE 05

Spacing systems & design tokens

Week 3

This is the stage that makes a developer-built UI stop looking developer-built. Consistency is more visible than any individual choice — and it's purely mechanical to achieve.

What you'll learn
  • A spacing scale (4/8pt) instead of arbitrary pixel values
  • Design tokens as the shared vocabulary between design and code
  • Why consistency beats perfection on any single value
Code
A SPACING SCALE — every gap comes from this list
  --space-1:   4px
  --space-2:   8px
  --space-3:  12px
  --space-4:  16px
  --space-6:  24px
  --space-8:  32px
  --space-12: 48px

BAD — three "roughly medium" gaps, none intentional
  padding: 13px;  margin: 18px;  gap: 22px;

GOOD — from the scale, consistent with everything else
  padding: var(--space-3);  margin: var(--space-4);  gap: var(--space-6);

In Figma this is exactly what Auto Layout gap values should be.
BuildSketch a card component twice — once with eyeballed gaps, once using only 4/8/16/24. Put them side by side.
Self-checkWhy does an arbitrary spacing value like 13px cause problems even though it looks fine in isolation?
STAGE 06

Components & every state they have

Week 3–4

Designing only the default state is the single most common reason a built UI feels broken. Real components live mostly in their non-default states.

What you'll learn
  • The full state set: default, hover, focus, active, disabled, loading, error
  • Empty states as a design opportunity, not an oversight
  • Skeletons vs. spinners, and what each communicates
Code
A BUTTON HAS AT LEAST SIX STATES
Designing one is designing 1/6 of a button.

  default            // resting
  :hover             // affordance — "this is clickable"
  :focus-visible     // keyboard position — NEVER remove
  :active            // press feedback
  :disabled          // unavailable, and ideally why
  [data-loading]     // in progress — prevents double-submit

<KW>In Figma: this is exactly what Variants are for — one component,
a State property, six values.</KW>

EMPTY STATE — a user's first impression of a feature
  "No projects yet" + a button
  beats a blank rectangle, every time.
BuildSketch all six states of one button side by side, plus the empty state of a list. Put them on one board.
Self-checkYou've designed a button's default and hover states. Which commonly-forgotten state most often makes an interface feel broken to real users?
STAGE 07

Accessibility as a build requirement

Week 4–5

Accessibility gets framed as a compliance chore, which is why it gets skipped. It's really about whether your interface works for people using it differently than you do — and most fixes are small.

What you'll learn
  • Keyboard navigation, focus order, and visible focus indicators
  • Semantic HTML — why the right element beats ARIA in almost every case
  • Labels, alt text, and testing with an actual screen reader
Code
THE WORST LINE OF CSS IN COMMON USE
  *:focus { outline: none; }
  // keyboard users are now lost on your page

DO THIS INSTEAD — style it, don't delete it
  :focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
  }

A div with a click handler is invisible to keyboards
and screen readers:
  <div onClick={save}>Save</div>       // unreachable
  <button onClick={save}>Save</button> // focusable + announced, free
BuildSketch the tab order of a form as numbered arrows. Then use a real form with only the keyboard and mark every place you get stuck.
Self-checkWhy is removing the focus outline (outline: none) one of the most damaging single lines of CSS you can write?
STAGE 08

Testing with real users

Week 5

You cannot see your own interface with fresh eyes — you know where everything is. Five real users will find problems no amount of internal review surfaces.

What you'll learn
  • Running a simple usability test — tasks, not opinions
  • Why watching silently beats asking 'do you like it?'
  • Why ~5 users surfaces most usability problems
Code
BAD PROMPT — invites politeness, produces flattery
  "Do you like this design?"

GOOD PROMPT — a task, then silence
  "Sign up and create your first project."
  Then say nothing. Every hesitation is data.

RECORD FOR EACH USER
  - Where did they pause?
  - What did they click that wasn't it?
  - What did they say out loud while confused?

<KW>5 of 5 users hitting the same wall is not a small sample.
It's a wall.</KW>
BuildSketch the flow you'll test as a simple 4-box journey, then run it past 3 people and mark on the sketch where each one hesitated.
Self-checkYou watch 5 users struggle with the same step. Your PM says 'we need 100 users before we act.' What's the flaw in that reasoning?
STAGE 09

From design to shipped interface

Week 5–6

The gap between a design and the built version is where most quality quietly leaks out. Closing it is a process problem with a concrete solution, not a talent problem.

What you'll learn
  • Reading a design spec: spacing, sizes, states, and behavior
  • Translating designs into tokens and reusable components
  • Design systems — and when building one is premature
Code
A design hands over values.
Tokens make them enforceable in code.

  :root {
    --space-4: 16px;
    --radius-md: 10px;
    --text-base: 16px;
    --color-accent: #FF7500;
  }

Build the component once, with every state, then reuse it:
  <Button variant="primary" loading={saving}>Save</Button>

<KW>A design system is worth it when you're reusing components,
not before. Two screens don't need one; twenty do.</KW>
BuildTake one design (yours or a public Figma community file), extract its tokens onto a sketch, and label every spacing value.
Self-checkWhy does 'the developer will figure out the spacing' cause the built UI to drift from the design?
STAGE 10

Becoming a designer people hire

Week 6

Knowing the rules doesn't make you hireable — being able to show judgment does. This is the honest map from 'I can use Figma' to work people pay for, including what actually separates each level.

What you'll learn
  • The four levels, and what genuinely distinguishes each one
  • Case studies over screenshots — the portfolio format that gets replies
  • Getting real work with no experience, and what to charge first
Code
THE FOUR LEVELS

  1. CAN USE THE TOOL
     Knows Figma. Copies layouts that look nice.
     Not yet hireable as a designer.

  2. CAN MAKE IT LOOK GOOD
     Consistent spacing, type scale, decent taste.
     Hireable as a junior. Ceiling: needs direction.

  3. CAN DEFEND EVERY DECISION
     "This is primary because it's the one action
      90% of users came for. I tested the other way
      and completion dropped."
     This is the jump that pays. Most never make it.

  4. CAN SET DIRECTION
     Decides what NOT to build. Runs the system.
     Makes other designers better.

PORTFOLIO: case studies, not galleries
  ✗ 12 pretty screenshots
  ✓ 3 case studies, each:
      - the problem, and who had it
      - what you tried and REJECTED (and why)
      - what changed after testing
      - the outcome, measured if possible

<KW>Two rejected approaches say more about your judgment
than ten polished screens.</KW>

GETTING THE FIRST REAL WORK
  - Redesign something real and badly designed, publish
    the case study (a govt form, a local business site)
  - Offer one free/cheap project for a real person with
    a real deadline — constraints teach what practice can't
  - Contribute to open-source design systems
  - Start freelance small; raise rates every 2 projects
BuildWrite one full case study for something you've designed — problem, two rejected approaches, what changed after showing it to 3 people, and the outcome.
Self-checkTwo portfolios show the same quality of visual work. One is a grid of polished screenshots; the other walks through a problem, two rejected approaches, and what changed after testing. Why does the second get hired?

The capstone: redesign something you built

Take a project you've already built and redesign it applying every stage — real type scale, real spacing tokens, contrast that passes, every component state, full keyboard access. Keep a before/after screenshot pair: that comparison says more in an interview than any certificate.

Before/after screenshots of every screen
A documented type scale and spacing scale
Every text pair passes WCAG AA contrast
All six states designed on every interactive component
Fully usable with the keyboard alone
Notes from watching 3 real people use it

Common pitfalls

  • Designing only the default state. Real components spend most of their life in loading, empty, error, and disabled.
  • outline: none. One line that makes your entire interface unusable by keyboard. Restyle the focus ring, never delete it.
  • Eyeballing contrast. Light grey on white looks elegant on your bright monitor and vanishes on a phone in sunlight. Compute it.
  • Asking "do you like it?" People are polite. Give them a task and watch silently instead.

Resources worth your time

  • Refactoring UIthe book
  • WebAIM Contrast Checkerfree tool
  • WCAG Quick Referencestandard
  • Nielsen Norman GroupUX research
  • Inclusive Componentsa11y patterns