Speaking the Same Language: Engineering and Design in Product Teams

John Cobb
6 min readadvanced
--
View Original

Overview

This article explores how engineering and design teams can overcome siloed handover culture by adopting a shared language rooted in entity-first thinking, drawing parallels to Domain-Driven Design principles. Written from the perspective of an engineering manager at SafetyCulture, it advocates for earlier cross-functional collaboration to reduce bottlenecks, improve software quality, and deliver customer solutions faster.

What You'll Learn

1

Why handover culture between design and engineering creates bottlenecks that delay customer value delivery

2

How to apply entity-first thinking to align engineering and design teams on a shared problem-solving language

3

How Conway's Law influences the separation between design and engineering in product teams

4

When to involve engineering earlier in the design process to avoid costly rework and architectural misalignment

5

How Domain-Driven Design principles like ubiquitous language naturally emerge from collaborative engineering-design workflows

Prerequisites & Requirements

  • Experience working in a product team with both engineering and design functions
  • Basic understanding of software development lifecycle and team collaboration
  • Familiarity with Domain-Driven Design concepts(optional)

Key Questions Answered

Why does handover culture between design and engineering hurt product development?
Handover culture creates bottlenecks where hi-fidelity designs become prerequisites for engineering work, causing weeks or months of delay. Designers face pressure to produce mockups quickly at the expense of thorough problem understanding, while engineers often receive designs divorced from underlying system capabilities. This leads to either costly design rework or inflated estimates due to significant architectural changes needed.
How does Conway's Law affect engineering and design team collaboration?
Conway's Law states that organisations design systems mirroring their communication structures. When design and engineering operate in silos, they create software with clear boundaries between user interface and underlying architecture. By bringing these teams together earlier, organisations can create more cohesive, integrated software solutions that don't reflect artificial organisational divides.
What is entity-first thinking in product development?
Entity-first thinking is a collaborative approach where engineering and design teams first identify what entities are needed to solve the customer problem — whether existing entities need modification or new ones are required. They then define interaction models for how users manipulate those entities, including business logic, queries, and APIs. Finally, they consider UI components needed to visualize entities and enable interactions.
How can engineering teams start building features without final UI designs?
By establishing a shared language around entities and interactions through early cross-functional discussions, engineering can confidently build underlying data models, APIs, and services that align with the intended design direction. This entity-first approach ensures the architecture supports the final design, while giving design teams more time to explore UI options and perform user testing without blocking engineering work.
What is the relationship between entity-first thinking and Domain-Driven Design?
Entity-first thinking naturally aligns with Domain-Driven Design principles, particularly the concept of ubiquitous language — a common language shared by domain experts, users, and developers. Both approaches prioritize understanding core entities and their relationships before jumping into implementation details, creating shared understanding that bridges design thinking and technical architecture.
How does shift-left philosophy apply to design and engineering collaboration?
Just as shift-left testing catches issues early to save time and reduce costs, bringing design and engineering together at the start of feature development prevents discovering architectural or UX challenges late in the process when they're expensive to fix. Early collaboration allows teams to address misalignments while they're still easy to adapt, rather than after significant work has been invested.
What are the three key areas where engineering and design thinking align?
The three areas are: Entity-First Thinking (identifying what entities are needed to solve the problem), Interaction Models (defining how users manipulate entities including business logic and APIs), and User Interface (determining what components visualize entities and enable interactions). These areas create a structured progression from problem understanding to solution design.

Key Actionable Insights

1
Replace handover culture with entity-first collaborative sessions between design and engineering. Instead of waiting for hi-fidelity mockups, start with joint discussions about what entities are needed, how users interact with them, and what UI components will support those interactions. This prevents the costly rework that occurs when designs are divorced from system capabilities.
Apply this at the start of any new feature development. The author found that this approach naturally emerged from conversations with design colleagues at SafetyCulture.
2
Establish a shared vocabulary around domain entities and interactions before any implementation begins. This ubiquitous language, similar to Domain-Driven Design principles, enables both designers and engineers to discuss solutions using the same terms, reducing miscommunication and ensuring alignment on what's being built.
This is especially valuable in teams where design and engineering have historically operated in silos and use different terminology to describe the same concepts.
3
Apply shift-left principles to design collaboration by involving engineering at the earliest stages of feature exploration. Rather than engineering becoming involved only when hi-fidelity designs are ready, engage engineers during problem discovery to identify architectural constraints and opportunities early when they're cheap to address.
The author observed that waiting for completed designs can mean weeks or months before engineering becomes involved, leading to designs that don't align with system capabilities.
4
Create a safe environment for sharing early, incomplete work between design and engineering. Encourage designers to discuss rough concepts with engineers before creating high-fidelity mockups, and engineers to suggest technical alternatives during the design phase, building trust and shared ownership.
This cultural transformation helps team members become more comfortable with uncertainty and more confident in cross-functional discussions.
5
Structure collaborative discussions in three progressive layers: first identify entities (what data/objects solve the problem), then define interaction models (what business logic and APIs are needed), and finally consider UI components. This ensures both teams build understanding from the ground up rather than starting with surface-level UI concerns.
This layered approach ensures the underlying data model and architecture will support the final design, preventing the common problem of designs that require significant architectural changes.

Common Pitfalls

1
Treating hi-fidelity UI designs and prototypes as prerequisites for engineers to begin development on a feature. This creates a bottleneck where design becomes a dependency in the software development lifecycle, pressuring designers to rush while leaving engineers idle and uninvolved for weeks or months.
Break this pattern by involving engineering earlier through entity-first thinking sessions that don't require polished designs.
2
Allowing organisational silos between design and engineering to dictate software architecture, as described by Conway's Law. When teams don't communicate, the resulting software tends to have artificial boundaries between UI and architecture that reflect team structure rather than optimal design.
Counteract this by intentionally creating cross-functional collaboration points early in the development cycle.
3
Presenting engineers with hi-fidelity designs or prototypes that are divorced from the capabilities of the underlying systems and data model. This frequently leads to either costly design rework or significantly inflated estimates because the required architectural changes are substantial.
Avoid this by having engineers participate in early design discussions to surface technical constraints before significant design work is completed.
4
Viewing engineering and design as separate functions focused only on their outputs — designers producing mockups and engineers writing code — rather than as collaborative partners solving customer problems together. This reductive view leads to handover culture and misaligned priorities.
Reframe the relationship around the shared goal of solving customer problems, using a common language to facilitate collaboration.

Related Concepts

Conway's Law
Domain-driven Design
Ubiquitous Language
Shift-left Testing
Cross-functional Teams
Entity Modeling
Interaction Design
Product Development Lifecycle
Handover Culture
Collaborative Design