Do and don’t
One focused chapter from the Thorbis interface research. 43 rules. Read the research index for every chapter and focused study.
Do and don’t
- Do less, but better. Dieter Rams: good design is useful, honest, thorough, unobtrusive, and as little design as possible. Don’t decorate a weak job. If removing the element does not remove meaning, remove the element.
- Do be honest about capability. Rams again: a product should not appear more innovative, powerful, or valuable than it is. Don’t fake certainty, inflate a metric, or skin a spinner as a completed action.
- Do pay design debt in sweeps. Karri Saarinen : software evolves weekly, and the chrome unbalances. Don’t redesign one view at a time and leave the product disjointed. A reset is how the whole surface stays one product. A design reset (opens in a new tab).
- Do let chrome recede. Same law as Work dominates chrome. Saarinen, Yann-Edern Gillet, Andreas Eldh: content holds the strongest contrast. Don’t paint the navigation in brand blue.
- Do align until it disappears. Gillet: spend the time lining up labels, icons, and buttons on the tiny surface of a sidebar. Users will not name it. They will feel it. Don’t “fix” misalignment with extra padding on one item.
- Do treat the spec as the floor. Same law as The spec is the baseline. Karri Saarinen : it’s easy to meet the spec. Don’t ship the ticket and call it done.
- Do fix one papercut a week. Same law as Papercuts every week. Tuomas Artman : quality is not an individual sport.
- Do obsess over the last ten percent. Rauno Freiberg : interaction quality is the product. Focus restoration, the first frame of a press, the caret after submit. Don’t ship the first layout that fits and call it done. Design Engineering at Vercel (opens in a new tab).
- Do reuse the metaphor the operator already has. Rauno: a sheet is a layer, a peek is a card, pinch is precision. Don’t invent a third swipe because this view is special. Invisible Details of Interaction Design (opens in a new tab).
- Don’t fidget the workbench. Fidgetability is a happy accident on an AirPods case. A dispatch board used eight hours a day is not a pencil to click. If it is high frequency, it is instant, not playful.
- Do prefer the platform. Paco Coursey : a native dialog, a real link, a real checkbox. Don’t reimplement the browser for aesthetic control, cmdk, next-themes, and the craft around them all start from this.
- Do animate only to explain. Emil Kowalski : you don’t need animations. Keyboard-driven and high-frequency actions are instant. Don’t animate a row highlight, a keystroke, or ⌘K. You Don’t Need Animations (opens in a new tab).
- Do own the component source. shadcn : copy the primitive in, normalize it once, then reuse the owner. Tokens are the authority, not the library. Don’t theme an opaque package into the brand and hope the states survive.
- Do defer to content. Jony Ive and the Apple HIG (opens in a new tab): controls are guests. Clarity, deference, depth. Don’t compete with the user’s work. Don’t invent a gesture the platform already owns.
- Do make the conceptual model visible. Don Norman: affordance, feedback, mapping, constraints. The user should not need a tour to know what will happen. Don’t hide system state and expect them to guess. The Design of Everyday Things (opens in a new tab).
- Do maximize data-ink. Edward Tufte: above all else show the data. Prefer position and length on a common scale. Don’t 3D a bar, don’t chartjunk, don’t encode a quantity as a rainbow. The Visual Display of Quantitative Information (opens in a new tab).
- Do align to a grid. Josef Müller-Brockmann: a systematic grid is freedom, not constraint. Equivalent peers share an edge. Don’t place by eye and call it organic.
- Do use few typefaces. Massimo Vignelli: intellectual elegance. A disciplined scale beats a font collection. Don’t add a display face because the headline felt boring. Change the words or the weight.
- Do treat the web as typography first. Oliver Reichenstein, Information Architects: web design is 95% typography. Size, measure, leading, wrapping. Don’t start with color and cards. Web Design is 95% Typography (opens in a new tab).
- Do set a readable measure. Matthew Butterick: a decent size, a finite line, a line-height that can be read. Don’t set 12px gray body on an infinite column and call it quiet. Practical Typography (opens in a new tab).
- Do pick one typographic voice. Erik Spiekermann: type is a voice. Keep it consistent. Don’t shout with weight, whisper with size, then shout again two sections later.
- Do keep system status visible. Jakob Nielsen: visibility of system status, user control, error prevention, recognition over recall. Don’t leave a dispatcher wondering whether the invoice saved. 10 Usability Heuristics (opens in a new tab).
- Do design the device you have. Rauno Freiberg : mobile-first as a religion thins desktop workbenches. Luke Wroblewski is right that a phone is not a shrunken laptop, and the inverse is also true. The workbench is desktop-first. The van is mobile-native. Don’t pour either into the other.
- Do raise contrast between levels. Steve Schoger : hierarchy is contrast between levels, not just text against the canvas. Align, then space, then color. Don’t fix a flat page by turning the accent up.
- Do compose from a scale. Adam Wathan : encode the spacing and type scale, then compose. Don’t invent 13px of padding because 12 felt close.
- Do think in systems, not pages. Brad Frost: shared language, atomic pieces, a pattern that can travel. Don’t one-off a button because this screen is “special.” Atomic Design (opens in a new tab).
- Do put decisions in tokens. Dan Mall, Jina Anne, Kaelig Deloumeau-Prigent : pages consume names, not hex. Don’t hardcode a color in a feature component and call it a theme.
- Do design for the person doing the job. Frank Chimero: people ignore design that ignores people. Don’t design the portfolio first. What Screens Want (opens in a new tab).
- Do try to be good, not original. Paul Rand. Don’t invent a new mark, a new dialog, or a new table when a clear one exists. Originality that costs the user a relearn is vanity.
- Do subtract the obvious. John Maeda, Laws of Simplicity: add only the meaningful. Don’t add “just one more” control to a toolbar that already does the job.
- Do leave emptiness the work can occupy. Kenya Hara: emptiness is not unfinished. Don’t fill every gap because a blank region made you nervous.
- Do make the next action the obvious one. Naoto Fukasawa: design without thought. The primary action should not need a legend. Don’t require a tooltip to explain a button that saves the invoice.
- Do treat icons as metaphor. Susan Kare: pixel-honest, recognizable at small size, a metaphor the user already has. Don’t ship a decorative glyph that only makes sense after a tooltip.
- Do treat taste as a decision record. Julie Zhuo: taste is the history of choices you can defend. Don’t argue from “I like it” without the user job. The Making of a Manager (opens in a new tab).
- Do measure whether the job completed. Jared Spool: usability is whether the person finished. Don’t confuse visual polish with a completed dispatch.
- Do let content size the layout. Jen Simmons: intrinsic layout. Grid and flex before JavaScript measurement. Don’t force every page through a 12-column leftover.
- Do art-direct pages that have something to say. Andy Clarke: a page with a subject deserves an organizing move of its own. Don’t pour every marketing surface into the same three-card grid.
- Do design for the operator, not the demo. Contractor workflows over generic dashboards. Don’t design against seed data. A dispatch board that only works with “Acme Inc.” is unfinished.
- Do put AI where it reduces work. Michael Truell and Cursor: a conversation is fine for a simple request. Don’t make chat the only way to edit structured state. Open the workspace the job actually needs.
- Do optimize for progress, not attention. OpenAI on ChatGPT: help the person take the next useful step. Don’t maximize time-on-surface inside an operational product. Optimizing ChatGPT (opens in a new tab).
- Do hide complexity behind a small interface. John Ousterhout : depth is leverage. Don’t expose every knob because you built them. A Philosophy of Software Design (opens in a new tab).
- Do lift with a short shadow, not a border. Same law as No borders on the page and Short shadows. A commit still needs a well or a lift.
I built this for the dispatcher at 7 a.m., the tech in a crawlspace, and the owner closing the books. Quiet chrome. Precise work. I’m still learning. These are the notes.
Applied bookmark research
Reviewed 2026-09-06. These examples reinforce the existing owners; they do not introduce another visual style or claim the product behavior is implemented. Read the 26-source review and access limits.
Make the task easier, not the screen busier
A feature can look complete while the dispatcher still has to reconstruct context or wait for unrelated content.
Start from one person, interruption, and completed task. Keep the current job and its next action usable while optional evidence arrives. Treat the real constraint as part of the brief, not something polished away afterward.
Thorbis example. For assigning a tech, show the job, relevant availability, and the consequence of the assignment. Do not make the dispatcher traverse a marketing-style sequence or a new shell to finish a routine task.
Verify. Walk through the task with representative long and missing records. Check that the essential action remains understandable when optional content is slow or unavailable. Record the result rather than claiming a performance improvement without measurement.
Do not import. No additional shell, feature hero, framework migration, or new dependency. Keep the approved surface role.
Open the product skill · Evidence: Design Engineer Principles; How we think about design; Component Architecture for React Server Components
Preserve the place as the collection grows
Large customer, property, and inspiration collections become expensive to navigate when every inspection loses the current place.
Treat filters, selected records, scroll, and Back behavior as part of the task. Loading a child or optional panel should not reset the whole collection. A saved reference includes enough context to be useful when revisited.
Thorbis example. Open a property from a filtered customer list and return to the same filter and position. On the inspiration wall, reserve the media footprint and retain source credit even when the preview is unavailable.
Verify. Try refresh, Back and Forward, a direct record link, an empty result, a failed preview, and a long collection. Check that late data does not overwrite a draft or move the action under the pointer.
Do not import. No unbounded eager media, private information in shareable URLs, or a local-only storage promise borrowed from Copper.
Open the ecosystem skill · Evidence: 7 Principles of Rich Web Applications; Component Architecture for React Server Components; Philosophy; Copper