Run productive design critique sessions that generate actionable feedback — structured formats, implementation-aware critique from developers, feedback framing techniques, and asynchronous critique for distributed teams.
Design critique sessions are where good designs become great — or where promising designs die under a pile of conflicting opinions and subjective preferences. The difference between a productive critique and a demoralizing one is almost entirely structure.
For developers participating in design critiques, the challenge is different: you see technical complexity that designers miss, performance implications of visual choices, and accessibility gaps in the interaction model. Translating these technical concerns into productive critique feedback without blocking progress is a skill.
This lesson covers how to structure critique sessions, how developers contribute most effectively, and how to give feedback that improves designs without prescribing solutions.
The most effective design critique format separates what is observed from what is evaluated. Without this separation, critique sessions become debates about subjective preferences.
Liz Lerman Critical Response Process (adapted for product design):
Step 1: Statements of Meaning (5 min)
Step 2: Designer Questions (10 min)
'Is the checkout flow clear enough?' 'Where do you feel uncertain?'
Step 3: Neutral Questions (10 min)
Step 4: Opinions (10 min)
Total time: ~35 minutes for a focused critique.
Why this format works:
Developers see design from a unique perspective: implementation complexity, performance implications, accessibility gaps in the interaction model, and browser behavior edge cases. This perspective is valuable in critique — when framed correctly.
What developers should contribute in critique:
Do not say: 'That animation is too hard to build'
Instead: 'I want to flag that this animation requires a third-party library (Framer Motion) and will add ~50KB to the bundle. Is there a simpler interaction that achieves the same goal?'
Do not say: 'This is not accessible'
Instead: 'I notice the filter panel has no keyboard interaction defined. For WCAG compliance, we need to specify how keyboard users open and close it — should it be a modal with focus trap, or inline with arrow-key navigation?'
Do not say: 'What about empty state?'
Instead: 'I am curious — what should users see if they have no enrolled courses? The design shows the recommendation section, but that requires enrollment data to work.'
Do not say: 'That is impossible on mobile'
Instead: 'On iOS Safari, there is a known bug with position: sticky inside overflow: hidden containers. The floating header pattern here will not work on mobile Safari. Can we explore an alternative?'
Developer critique participation guidelines:
When to speak in critique:
The framing of feedback determines whether it is received as collaborative improvement or personal attack on the designer's work.
Feedback framing techniques:
'I notice...' — observation-based, non-judgmental:
'I wonder if...' — opens exploration:
'How might we...' — collaborative problem framing:
'From the user's perspective...' — reframes around user needs:
Feedback to avoid:
Feedback sandwich: always avoided:
Written feedback template (for async critique):
1Context: [what I was looking at]
2Observation: [what I noticed, without judgment]
3Question: [what I am curious about]
4Suggestion (optional): [one approach that might address my concern]Distributed teams across time zones cannot always gather synchronously for critique. Asynchronous critique formats maintain feedback quality while respecting team schedules.
Figma comment critique:
Figma comment format for async critique:
1[Type: Observation | Question | Concern | Suggestion]
2
3Example:
4[Question] I notice the category filter is a horizontal list — on mobile at 375px,
5what happens when a user has 8+ categories? Does it scroll horizontally or wrap?
6I want to make sure we design for the overflow state.
7
8[Observation] The course rating display (stars + count) is immediately recognizable.
9The size contrast between the star rating and the review count creates good hierarchy.
10
11[Concern] The "Delete account" option is in the same menu as "Edit profile".
12For a destructive action, I would expect it to be separated (different section, different color)
13to prevent accidental deletion. How do we feel about the current placement?Loom video critique:
Async critique structure:
1Designer shares:
2 'Course Detail v1 ready for critique — focus areas:
3 1. Lesson list information density (is it too much?)
4 2. Enrollment CTA placement (above or below lesson list?)
5 3. Progress visualization on enrolled state
6 Please add Figma comments by EOD Thursday.'
7
8Reviewers respond:
9 - Pin comments to specific elements (not the overall frame)
10 - Use observation → question → suggestion format
11 - One comment per concern (not a list comment)
12
13Designer closes:
14 - Replies to all comments (acknowledged / will change / no change + reason)
15 - Creates Figma version: 'v1 — Post-critique revisions'
16 - Posts update: '8 comments addressed, here is what changed'A complete critique session for a checkout flow design, demonstrating the four-step format with developer participation.
1/* DESIGN CRITIQUE SESSION: Checkout Flow v1
2 Attendees: Designer (Sara), Developer (Alex), PM (Jordan)
3 Duration: 35 minutes
4 Date: 2026-06-02 | Format: Liz Lerman adapted
5
6=== STEP 1: Statements of Meaning (5 min) ===
7
8Jordan: 'The progress indicator at the top immediately tells me where
9 I am in the process. I feel confident about how many steps are left.'
10
11Alex: 'The credit card input using a real card-shape visual makes the
12 card number entry feel intuitive. The format mask (XXXX XXXX XXXX XXXX)
13 matches what I expect from my physical card.'
14
15Jordan: 'The order summary sticky panel on the right keeps price visible
16 throughout — I never lose track of what I am paying.'
17
18=== STEP 2: Designer Questions (10 min) ===
19
20Sara asks Jordan: 'Does the 'Apply promo code' interaction feel
21 discoverable? I am worried users will miss it.'
22 Jordan: 'I did not notice it immediately. It is below the fold on
23 first load. Users who have a promo code might look for it first.'
24 Sara: 'I will explore whether it should be in the cart summary instead.'
25
26Sara asks Alex: 'Does the mobile layout of the order summary work?
27 I collapsed it to an accordion — does that match your expectation?'
28 Alex: 'The accordion makes sense. My concern is that the order total
29 needs to stay visible even when the summary is collapsed. WCAG 2.4.3
30 recommends persistent navigation anchors for purchase flows.'
31 Sara: 'Good point. I will keep the total visible outside the accordion.'
32
33=== STEP 3: Neutral Questions (10 min) ===
34
35Alex: 'I am curious — what happens when the credit card number fails
36 Luhn validation? Is there inline validation or only on submit?'
37 Sara: 'Inline as they type — but I have not designed the error state yet.
38 Could you tell me what information the user needs to see?'
39 Alex: 'They need to know: 1) the card number is invalid (not expired,
40 just the number format), 2) to re-enter the number. The exact error
41 from our payment provider is too technical for users.'
42 Sara: 'Got it — I will design: "Card number is invalid — please check
43 and re-enter" in red below the field.'
44
45Jordan: 'I wonder what users see if Stripe is temporarily unavailable.
46 Is there a fallback or graceful degradation?'
47 Sara: 'Not designed yet. That is out of scope for v1 — we will handle
48 it in the error state lesson, right Alex?'
49 Alex: 'Yes — v1 will show a generic "Payment processing error" modal
50 with a retry option. I can handle that without a design.'
51
52=== STEP 4: Opinions (invited by Sara) (10 min) ===
53
54Sara: 'I would like to hear opinions on the 'Save payment method' checkbox.
55 Should it be checked or unchecked by default?'
56
57Jordan: 'Unchecked by default — users should opt IN to saving their
58 payment data, not opt OUT. GDPR and general privacy best practice.'
59
60Alex: 'Agree with Jordan. Also — technically, pre-checked means we
61 store the token immediately on page load, which creates complexity.
62 Unchecked default is cleaner from both sides.'
63
64Sara: 'Agreed. I will update to unchecked default and add:
65 "Your payment info is encrypted and stored securely"'
66
67Sara: 'Any final opinions on the layout I should hear?'
68 Alex: 'One thing: the checkout button is below the fold at 768px.
69 For a conversion-critical button, it needs to be visible without scroll.
70 Could we sticky it at the bottom on tablet?'
71 Sara: 'Good call. I will add a sticky checkout bar for mobile+tablet
72 that appears after scroll past the top summary.'
73
74=== POST-CRITIQUE ACTION LOG ===
75
76Changes committed by Sara:
771. Move promo code to order summary section
782. Order total visible outside accordion on mobile
793. Design error state: card invalid → 'Card number is invalid'
804. Save payment: unchecked default + encryption notice
815. Sticky checkout bar on mobile and tablet
82
83Figma named version created:
84 'Checkout v1.1 — Post-critique revisions'
85
86No-change decisions documented:
87- Step count (3 steps) stays despite Jordan's preference for 2
88 Reason: Stripe requires separate shipping and billing step for compliance
89*/The critique follows the Liz Lerman format precisely: statements of meaning first (no criticism allowed), then designer-controlled questions that surface doubts the designer already had, then neutral questions that reveal information gaps, then invited opinions on specific topics. Developer Alex contributed three implementation-aware points: WCAG persistent navigation in purchase flows (accessibility gap), Stripe error handling scope (technical constraint), and checkout button below-the-fold on tablet (conversion concern). Each was framed as a question or observation, not a blocker. Every change is documented with a reason, and one decision (step count) explicitly noted why it was not changed despite feedback.
The next lesson covers Zeplin and Avocode as handoff tools — how they augment Figma for teams that need multi-platform code generation, enhanced measurement overlays, and component documentation beyond what Figma Dev Mode provides.
Your progress is saved in this browser, on this device only.