How Design and Engineering collaborate

We make time for design before engineering begins

By beginning projects with product design, we help the entire team explore product requirements in the least expensive and most collaborative medium. When we all make time to collaborate in the design stage, we provide everyone with the ability to review the solution before development. This process should lead to stronger outcomes with less technical debt, as Engineering’s systems design has a better chance of being correct on the first try.

We design together, throughout the project

From planning to QA, everyone shapes the outcome of the product, each step involves some measure of Design, Product, and Engineering input. When we have feedback from a wide range of disciplines, we produce a much better product.

As a project proceeds, Design and Engineering collaborate to modify the effort as required by various constraints. Both parties are flexible and seek to understand tradeoffs to arrive at the best solution given available resources. We understand that at times both design and tech debt is generated during this process. We track this debt and seek to reduce it when time allows.

We embrace incremental development

To avoid huge projects that complicate matters for Engineering, we strive to break projects into iterations that help us more efficiently build and deliver projects and test them with end users.

Shared vision and goals

Both Design and Engineering should have a clear understanding of the goals, target audience, business requirements, technical constraints, and desired outcomes.

Early involvement & regular communication

Design and Engineering should both be involved in a project as early as possible so that each specialty can provide insight as questions come up about feasibility, performance considerations, and UX challenges. Because this is the overlap of two domains, tight feedback loops should be a high priority. Often, Design introduces elements that would require additional engineering or issues are discovered in the build cycle that impact design decisions. Regular communication helps resolve these issues.

Standard set of tools and tooling

We use tools that allow for clear communication of ideas between parties and that both can use. For example, designers use the same issue tracker as Engineering. Additionally, Design and Engineering collaborate to keep design systems in sync so that designs use components that are the same as their codebase counterparts.

We value consistency over novelty and diligently work to ensure new work utilizes our shared tooling. We ensure that updates to this tooling are carefully considered by both design and Engineering.

Communicate and understand constraints

Design should have a basic understanding of the technical constraints of the platform. Engineering should understand the importance of design decisions and their impact on the user experience.

Both parties are encouraged to contribute to all sides of the discussion. Design should bring up technical considerations. Engineering should contribute UX ideas. Both should defer to the other in their area of expertise: Design should defer to Engineering on technical considerations, and Engineering should defer to Design on UX ideas.

Design is what ships, not what is rendered in design software

The gap between what is envisioned and what the final release can be is often large. By maintaining strong collaboration and ownership from ideation through to the shared responsibility of QA, each discipline contributes to shipping design that delights our users.