The traditional model had a clean boundary: design produced files, engineering produced software, and a handoff meeting transferred intent across the gap. Everybody complained about the gap. Design complained about implementations that drifted; engineering complained about specifications that ignored real constraints. Both complaints were accurate, and both were symptoms of the same problem, which is that the two disciplines were editing different documents.
What changed
Three things collapsed the gap. Component libraries meant that the design system and the code system could share names and structure. Token pipelines meant colour, spacing, and type could have one definition consumed by both. And generation tooling meant that producing a working screen from real components stopped requiring a full engineering cycle.
The result is that the interesting artefact is no longer a file or a repository, it is a shared surface where a change is visible to everyone in the medium the user will experience.
What each side actually owns now
- Design owns the system's semantics: what the roles mean, what the scale is, when to use which component, and the standards for states and motion.
- Engineering owns the system's integrity: accessibility of the primitives, performance, API shape, and the enforcement that keeps drift out.
- Both own the result, which means a designer noticing a spacing bug can open a pull request and an engineer noticing an unclear label can ask for a copy change, without either being out of line.
The failure mode to watch
Blurring roles creates a new risk: nobody owning the hard calls. When both sides can change everything, the system drifts unless there is a clear decision-maker for the token set and the component API. Shared surface does not mean shared authority over every decision; it means fewer translation losses on the way to a decision.
The measure of collaboration is not how many meetings you share. It is how few times a decision has to be re-explained.
Practical changes worth making
Put the design system's documentation next to its code so they cannot disagree. Give designers the ability to run the application locally, or a hosted preview per branch, so review happens on real behaviour. And replace the handoff meeting with a review that happens in the running interface, where states, responsiveness, and motion are visible without anyone imagining them.
Join the conversation
Discussion0
Join the conversation. Sign in to leave a response or reply to comments.