There was a time when I viewed designers with the same scepticism as I viewed homeopathy.

When I pictured designers I thought of Mad Men, the creative department sitting around smoke-filled rooms waiting for inspiration to strike. But slowly and surely, I’ve realised great products are built by designers and engineers working together.

Most of the time, people tell us this is achieved by designers learning to code, or engineers learning interaction design. Ironically, great products aren’t built by engineers becoming better designers, or vice-versa. It happens when we’re able to balance the competing forces in both design and engineering, and prevent excess or deficiency from occurring. Achieving the golden mean, as Aristotle once said.

The right balance of design and engineering

As a company grows, it’s easy for the yin and yang of design and engineering to quickly get out of whack. Engineers are, in their hearts, architects. The first thing they want to do is build and ship the latest features, or increase performance, whether or not the customer has asked for it.

Likewise, when design is prioritized over functionality, we’re left with products more akin to pieces of art. As Don Norman argues, many of today’s products have reinforced the idea “that the designer’s sole job is to make things beautiful, even at the expense of providing the right functions.”

Balancing interests between engineering and design in a growing product team is easier said than done. Most assume it comes down to compromise. But balance really comes when both sides pursue their self-interest.

This is already well understood in economics, what Adam Smith calls “the invisible hand”. We witness the same dynamic in product teams. If designers and engineers were to compromise at every stage of building product, we’d likely never experience the technical breakthrough and a never-before-seen design great products require.

Continual compromise will guide you to nowhere but mediocrity.

Let’s take a real example. We recently launched OAuth to allow people to authorize third party access to their Intercom data. From an engineering perspective, we were focusing on the functional and technical side of the implementation. At no point had we prioritized user flows, menu layouts or feature descriptions. Meanwhile, our designer was focusing on creating the best possible user flow, not simply one that that followed the technical steps the engineers had in mind.

This self-interest didn’t mean selfishness. Through our daily stand-ups and whiteboard sessions, we were constantly interacting with one another, and debating how a particular piece of design or engineering could add value to the product. Far from being a sign of internal strife, it was actually a sign of the health of our product team. If everyone is thinking alike, then somebody isn’t thinking.

Achieving your own golden mean

Aristotle, the invisible hand…how the hell does this help me create a better product!? Here’s how.

Engineers can’t wear a designer’s hat

Forget the hype about unicorns, it’s simply unrealistic to expect engineers to also design the product they are building. Engineers can’t simply forget the embedded and detailed knowledge they’ve built up of a product, and at the same time think about it from the perspective of a customer trying to use it for the first time. Designers are also trained to catch the tiniest interaction details most wouldn’t ever notice. Engineers don’t miss these details on purpose – it’s just not a priority for them like basic functionality and deploying bug-free code are.

Engineers need to know designers are people too

When engineers work with designers on a daily basis, it quickly becomes clear that 217 options on a dropdown menu don’t actually help the customer make a decision. That’s why the best product teams have their designers operate in a ‘hub and spoke’ model – embedded in a product team alongside engineers, but still reporting to a central design team. This ensures the designers can remain true to the wider design principles of the company, while also interacting with engineers on a daily basis.

Accept there are some things you can’t control

Putting designers and engineers on the same team is only the first step. You will need to trust that they find their own balance. You will not be able control how, when or if this interaction occurs. That feeling you have, that you need to put some rules or structures in place to get both sides working together, well, you need to let it go. Rely on the people you hire, trust their instincts to pursue their own self-interest to realize a better product for your customer. It’s a little scary, but the invisible hand is the best way to guide them to the golden mean of engineering and design.

For great products to be built, both design and engineering need to be in balance. If you have a super strong engineering team but a weak or underserved design team, you will struggle. If you have built a talented design team, but don’t have a functioning engineering team, you will struggle. The scales don’t need to be set at all times, but I can’t think of any successful product where one overwhelmed the other.

More importantly, you need a set of designers and engineers who are willing to stand up for what they believe is the best solution, and be willing to work together to achieve these breakthroughs. Continual compromise will guide you to nowhere but mediocrity.