Screaming Interfaces – User interfaces should also scream their usage by themselves.

Generated using the ChatGPT 4o model based on Chapter 21’s cover illustration from Clean Architecture.

Among software engineering concepts, there is a design concept called Screaming Architecture proposed by Robert C. Martin. It’s a concept where the architecture itself screams the use cases it supports.

The UI we create in frontend development is the same. It’s necessary to enable users to immediately grasp the purpose of the interface. I would like to propose this idea of mine with the term “Screaming Interface”.

Implicit Interfaces

UIs that are not intuitive and confusing make it difficult to understand the purpose and role of functions. Here are major examples that cause these problems:

  • When the UI’s appearance and actual function don’t match
    • Example: Looking like a button but functioning as a link, or looking like a link but performing button functions
  • When form control interactions are inconsistent
    • Example: Supporting only Enter key action without a submit button, or conversely supporting only submit button interaction
  • When buttons have only icons without text labels or alternative text
  • When states are distinguished only by color and contrast is insufficient
  • When keyboard focus indication is invisible or focus movement order is illogical

Use Cases and Changing Tools

So what does the architecture of your application scream? When you look at the top level directory structure, and the source files in the highest level package; do they scream: Health Care System, or Accounting System, or Inventory Management System? Or do they scream: Rails, or Spring/Hibernate, or ASP?

Architectures are not (or should not) be about frameworks. Architectures should not be supplied by frameworks. Frameworks are tools to be used, not architectures to be conformed to.

If you are building a health care system, then when new programmers look at the source repository, their first impression should be: “Oh, this is a health care system”. Those new programmers should be able to learn all the use cases of the system, and still not know how the system is delivered.

– From Screaming Architecture

According to Robert Martin’s opinion, “rapidly changing development tools and environments should remain as ‘options that can be replaced according to circumstances’ rather than fixed elements."

Like replacing mobile phones, frontend development environments are receiving high attention and changing rapidly. However, I feel regret about the relatively low interest in fundamentals that haven’t changed for decades, like HTML and accessibility standards.

The reason the web has become more widely used than any other platform today is because of the ripple effect created by Sir Tim Berners-Lee, the founder of the web, who intended and prioritized universal accessibility design.

Conclusion - Usability

The power of the Web is in its universality. Access by everyone regardless of disability is an essential aspect.
– Tim Berners-Lee, Accessibility | Our mission | W3C

Just as “Screaming Architecture” says “use cases must scream directly,” I think user interfaces should also scream usability - “what they can do” - at least half as much as “how they appear.”

They may come to you and say: “We see some things that look sorta like models, but where are the views and controllers”, and you should say: “Oh, those are details that needn’t concern you at the moment, we’ll show them to you later.”

Final paragraph of Screaming Architecture