Owning projects
Working with designers
Designers are partners on empty, error, and permission states — not pixel people you implement after the fact.
Designers are not "pixel people" you implement after the fact. Treat them as partners on edge cases you will otherwise discover in QA. Give feedback early on wireframes, not only on final Figma. "This flow needs four round-trips; we can do it in two if we combine these steps" is high-value eng input. Bring a sequence diagram when the interaction implies a chatty API.
Concept
This is still discovery. Constraints you raise on a wireframe are cheaper than a rewrite after visual design is "final."
What to ask for
- Empty, loading, error, permission-denied states — ask for them explicitly if they are missing from the mock
- Performance budgets — a gorgeous animation that blocks input for 800 ms on mid phones is a bug; say so with a number
- Accessibility — keyboard paths, contrast, screen-reader labels; cheaper in design than in rewrite
- System constraints — "we only have these three permission states today"; the designer can simplify the UX instead of inventing a fourth state eng cannot back
Trade-off
Pixel-perfect match to the mock vs consistent with the design system. Prefer the system unless the mock is deliberately establishing a new pattern. Silent one-off styles create long-term product debt the designer did not intend.
Walking through a constraint
The mock invents a fourth permission state. You only have admin, editor, and viewer today. Say that on the wireframe: "We can back three states. A fourth is a new model plus audit. Can we express this as editor-plus-a-flag, or is the fourth state the product bet?" Either answer is fine. Silence until QA is not.
The 800 ms animation is the same move with a number. "This blocks input for 800 ms on a mid phone. That is a bug for us. Can we keep the motion under a budget, or drop it on low-end?" Taste yields faster than irreversible risk. Performance is closer to risk.
Common mistakes
- Feedback only after visual design is final. Wireframes are cheaper.
- Silent one-off styles that fight the design system.
- Skipping empty, error, and denied states until QA.
- Inventing a fourth state in the API to match a mock nobody constrained.
Check yourself
-
The mock is missing a permission-denied state. When do you ask? On the wireframe. QA is too late and a rewrite is expensive.
-
When do you match the mock instead of the design system? When the mock is deliberately establishing a new pattern. Otherwise prefer the system.
Key takeaways
- Ask for empty, loading, error, and denied states on the wireframe.
- Say performance and permission constraints with numbers.
- Prefer the design system unless a new pattern is the bet.
- Sequence diagrams beat a chatty API discovered in QA.
Further learning
Next, make it a habit in product-minded habits.
Related
Working with product managers and designers
Product sense for engineers — shaping scope, trade-off conversations, feasibility spikes, and building the right thing with PMs and designers.
Discovery and delivery
Discovery figures out what to build. Delivery builds and ships it. Engineers belong in both, as peers of PM and design — not a ticket factory.
Feasibility spikes
Surface a hard constraint before design is locked. Time-box a spike and come back with a recommendation and residual risk.