01
Friction
For the product team
Product intent got lost between initial trade-offs, tickets and reviews.
Unclear acceptance criteria
Reopened trade-offs
Decisions hard to preserve

When Enphase acquired us in 2022, our teams had to move from startup-style delivery to a more global product organization. I structured a shared delivery system between product, design and dev to reduce interpretation, rework and design/dev gaps.
Challenge
My role
OwnedContributedYear
Timeline
Tools
Methodology
Clarifications after dev start
59%Share of tickets returning to discussion after development had started.
Tickets with more than one review cycle
40%Share of tickets requiring more than one design/dev correction cycle.
Too many decisions remained open after development had started.
Implicit decisions in tickets
Missing
states
Ambiguous
flows
Unclear
criteria
No
reuse
Technical
constraint
Rework mostly came from decisions that remained implicit.
61%
Cross-discipline reviews
Share of tickets receiving at least two types of feedback: product, design or engineering.
Teams did not always share the same definition of the deliverable.
How can we make decisions, criteria and responsibilities verifiable before development starts?
01
Friction
For the product team
Product intent got lost between initial trade-offs, tickets and reviews.
Unclear acceptance criteria
Reopened trade-offs
Decisions hard to preserve
02
Friction
For design
Mockups showed the target interface, but not always the rules needed to implement it.
Incomplete states
Missing edge cases
Reinvented patterns
03
Friction
For developers
Developers had to guess expected behaviours, states and quality criteria.
Divergent implementations
Review loops
Implicit decisions
Check out the 4 key decisions I made
Delivery
Because decisions reopened during review cost more than trade-offs made upfront.

Workflow showing the shift of product, design and engineering decisions before development starts.
Avoided cost
Accepted cost
Governance
Because a single library was mixing global decisions, components, product usage and responsibilities.

Design system architecture separating foundations, components, product usage and governance responsibilities.
Avoided cost
Accepted cost
Quality
Because reviews came too late and relied too often on different opinions.

Handoff package and review checklist reducing interpretation gaps during development.
Avoided cost
Accepted cost
Adoption
Because a shared system couldn’t be sustainably adopted if it remained design-only.

Adoption model showing how technical advocates helped teams use the shared system.
Avoided cost
Accepted cost
The system made delivery more predictable: fewer reopened decisions, less late rework and more verifiable quality criteria.
Decisions were less often reopened after dev start
product, design and dev alignment happened earlier
Reviews required fewer late corrections
quality criteria were made explicit before implementation
Quality relied less on informal exchanges
handoff, checklist and governance made expectations verifiable
Clarifications after dev start
Before / After
Fewer decisions were reopened after development had started.
Tickets with more than one review cycle
Before / After
Tickets required fewer back-and-forth review cycles.
Cross-discipline reviews
Before / After
Teams more often shared the same definition of the deliverable.
Time savings on covered screens
Before / After
Gains were mostly visible on screens covered by the system.
Optimize each team separately
DON’TOptimize the handoffs between teams
INSTEADFix alignment during review
DON’TCreate alignment conditions before development
INSTEADAssume a system adopts itself
DON’TBuild adoption with its future users
INSTEAD