Principles and priorities

I think about design principles a lot. I’m such a nerd for design principles, I even have a collection. I’m not saying all of the design principles in the collection are good—far from it! I collect them without judgement.

As for what makes a good design principle, I’ve written about that before. One aspect that everyone seems to agree on is that a design principle shouldn’t be an obvious truism. Take this as an example:

Make it usable.

Who’s going to disagree with that? It’s so agreeable that it’s practically worthless as a design principle. But now take this statement:

Usability is more important than profitability.

Ooh, now we’re talking! That’s controversial. That’s bound to surface some disagreement, which is a good thing. It’s now passing the reversability test—it’s not hard to imagine an endeavour driven by the opposite:

Profitability is more important than usability.

In either formulation, what makes these statements better than the bland toothless agreeable statements—“Usability is good!”, “Profitability is good!”—is that they introduce the element of prioritisation.

I like design principles that can be formulated as:

X, even over Y.

It’s not saying that Y is unimportant, just that X is more important:

Usability, even over profitability.


Profitability, even over usability.

Design principles formulated this way help to crystalise priorities. Chris has written about the importance of establishing—and revisiting—priorities on any project:

Prioritisation isn’t and shouldn’t be a one-off exercise. The changing needs of your customers, the business environment and new opportunities from technology mean prioritisation is best done as a regular activity.

I’ve said it many times, but one on my favourite design principles comes from the HTML design principles. The priority of consitituencies (it’s got “priorities” right there in the name!):

In case of conflict, consider users over authors over implementors over specifiers over theoretical purity.

Or put another way:

  • Users, even over authors.
  • Authors, even over implementors.
  • Implementors, even over specifiers.
  • Specifiers, even over theoretical purity.

When it comes to evaluating technology for the web, I think there are a number of factors at play.

First and foremost, there’s the end user. If a technology choice harms the end user, avoid it. I’m thinking here of the kind of performance tax that a user has to pay when developers choose to use megabytes of JavaScript.

Mind you, some technologies have no direct effect on the end user. When it comes to build tools, version control, toolchains …all the stuff that sits on your computer and never directly interacts with users. In that situation, the wants and needs of developers can absolutely take priority.

But as a general principle, I think this works:

User experience, even over developer experience.

Sadly, I think the current state of “modern” web development reverses that principle. Developer efficiency is prized above all else. Like I said, that would be absolutely fine if we’re talking about technologies that only developers are exposed to, but as soon as we’re talking about shipping those technologies over the network to end users, it’s negligent to continue to prioritise the developer experience.

I feel like personal websites are an exception here. What you do on your own website is completely up to you. But once you’re taking a paycheck to make websites that will be used by other people, it’s incumbent on you to realise that it’s not about you.

I’ve been talking about developers here, but this is something that applies just as much to designers. But I feel like designers go through that priority shift fairly early in their career. At the outset, they’re eager to make their mark and prove themselves. As they grow and realise that it’s not about them, they understand that the most appropriate solution for the user is what matters, even if that’s a “boring” tried-and-tested pattern that isn’t going to wow any fellow designers.

I’d like to think that developers would follow a similar progression, and I’m sure that some do. But I’ve seen many senior developers who have grown more enamoured with technologies instead of honing in on the most appropriate technology for end users. Maybe that’s because in many organisations, developers are positioned further away from the end users (whereas designers are ideally being confronted with their creations being used by actual people). If a lead developer is focused on the productivity, efficiency, and happiness of the dev team, it’s no wonder that their priorities end up overtaking the user experience.

I realise I’m talking in very binary terms here: developer experience versus user experience. I know it’s not always that simple. Other priorities also come into play, like business needs. Sometimes business needs are in direct conflict with user needs. If an online business makes its money through invasive tracking and surveillance, then there’s no point in having a design principle that claims to prioritise user needs above all else. That would be a hollow claim, and the design principle would become worthless.

Because that’s the point with design principles. They’re there to be used. They’re not a nice fluffy exercise in feeling good about your work. The priority of constituencies begins, “in case of conflict” and that’s exactly when a design principle matters—when it’s tested.

Suppose someone with a lot of clout in your organisation makes a decision, but that decision conflicts with your organisations’s design principles. Instead of having an opinion-based argument about who’s right or wrong, the previously agreed-upon design principles allow you to take ego out of the equation.

Prioritisation isn’t easy, and it gets harder the more factors come into play: user needs, business needs, technical constraints. But it’s worth investing the time to get agreement on the priority of your constituencies. And then formulate that agreement into design principles.

Have you published a response to this? :


Scott Arbeit

This. Usability is far more important than developer ergonomics. … or… Your Electron app sucks. I want native. … or… Your React / Vue / Angular app sucks. I want server-side rendering and simple HTML and CSS.

Rui Peres

> (…) many senior developers who have grown more enamoured with technologies instead of honing in on the most appropriate technology for end users. Maybe that’s because in many organisations, developers are positioned further away from the end users.

# Posted by Rui Peres on Tuesday, April 28th, 2020 at 8:55am


//In case of conflict, consider users over authors over implementors over specifiers over theoretical purity.

# Posted by Jacky on Wednesday, April 29th, 2020 at 5:19am

Stuart Langridge

@adactio I can’t decide whether doesn’t have a <head> or any styles as some kind of subtle comment on what’s actually needed on the web for a piece to be readable and what’s just aesthetics, or whether it’s a bug. I think it’s a bug.

Gareth Clubb

I really resonate with ‘Principles and priorities’ by @adactio. I see so much developer experience over user experience nowadays. It shouldn’t be about using the latest tools and tech at your users expense. We do what we do to make the web a better place -

Kyle Bremner

“Principles and priorities” A good outline of how clear priorities can help a team/org make complex decisions, and the challenges in writing clear priorities (e.g. “Make it usable.” vs “Usability is more important than profitability.”)


# Shared by xnoɹǝʃ uɐıɹq on Monday, April 27th, 2020 at 3:07pm

# Shared by Roland Tanglao 猪肉面 on Friday, May 1st, 2020 at 12:24am

# Shared by Clearleft on Monday, November 30th, 2020 at 11:41am


# Liked by Marty McGuire on Monday, April 27th, 2020 at 3:37pm

# Liked by Chris Taylor on Monday, April 27th, 2020 at 6:41pm

# Liked by Roland Tanglao 猪肉面 on Friday, May 1st, 2020 at 12:54am

# Liked by vitalPixel on Monday, November 30th, 2020 at 12:16pm

# Liked by Mark Hurrell on Monday, November 30th, 2020 at 12:16pm

# Liked by Benjamin Parry on Monday, November 30th, 2020 at 1:03pm

# Liked by John Cutler on Monday, November 30th, 2020 at 3:11pm

Previously on this day

7 years ago I wrote 100 words 036

Day thirty six.

7 years ago I wrote The shape of Responsive Day Out 3: The Final Breakpoint

Bringing the conference series to a close with a bang!

10 years ago I wrote Conditional CSS

The results are in. Here’s what you came up with to solve the problem of conditional loading with CSS.

11 years ago I wrote Content First

In which I repeatedly hammer home the point that it’s all about the content.

13 years ago I wrote All Our Yesterdays

Opening up Bamboo Juice 2009.

15 years ago I wrote POSH Patterns

Not everything has to be a microformat.

15 years ago I wrote The Dunbar number of the beast

My invisible friend has a bigger Dunbar number than your invisible friend.

16 years ago I wrote Natural language hCard

You can use the hCard microformat in plain English sentences.

18 years ago I wrote Irish spring break

I’m back in Brighton after my short break in Ireland. For those of you uninterested in travelogues and holiday snaps, look away now.

19 years ago I wrote About this site

I’ve updated the "About" section of this site to include a new page about this site and how it was made.

20 years ago I wrote surRealpolitik

Ah, France.