What's wrong with atomic design?

What's wrong with atomic design?

Atomic Design is a way of organising a design system from small components to large components. These components are referred to as atoms, molecules, organisms, templates, and pages. They all work together to create an effective interface design system. An atom is the smallest building block and combines with other atoms to form molecules. A button is considered to be an atom and when combined with other elements like an input field it will create a form which is considered to be a molecule.

UI elements


Atomic design's flaw

Sounds great eh? But wait, Atomic Design has one flaw that makes it difficult to work with.

So you've organised your design components into atoms, molecules, organisms, templates and you feel like some kind of design god. Then you come to look for those components when building a design like a form on a website. In your design god head, buttons and more complicated things a dropdown button are fairly similar. But according to Atomic Design they sit in two different categories. We have now encountered the problem that is technically know as, "Is this an atom or a molecule, what the hell is it, Jimmy?".

They are both navigational tools that should sit somewhere in the same group but in Atomic Design they are split based on their complexity. It would make more sense to organise components into groups based on their functionality.

Atomic Design's flaw


At Bridge Studio we encountered this problem when creating a design system from scratch for one of our clients. Atomic Design was actually a useful frame work to use when creating the components. We started with the smallest components then worked our way up to combining them to create more complicated molecules and organisms. However, halfway through this we realised its flaw. We decided to finish creating the components in this manner and then reorganised them in a more logical way after. This is how we organised our design system:

Foundation

This is the core of our design system and will effect everything going forward. It contains the following elements:

  • Colour
  • Typography
  • Spacing
  • The grid

Components

These are the building blocks we use to create our pages. They are then divided into sub groups based on functionality. This section also include things like modal windows that contain various smaller elements. Here are just some examples components:

  • Buttons > Buttons with icons, dropdowns, dropdowns with search, etc.
  • Icons
  • Input fields > Search, text inputs, date inputs
  • Selectors > Check boxes, Radios, Toggles
  • Date picker
  • Modal popup > basic alerts, popups with text inputs

Components

These are pages that have examples of the most common UI elements. They show how the design system works and also serves as starting templates when creating new designs. Here are some examples:

  • Home page
  • Sign up page
  • Contact page

This is how we went about organising our design system but I'm sure there are many other ways of doing it. This is just what suited us at the time.

Advantages of this system:

No illogical boundaries between sections.

Disadvantages of this system:

It can create long lists of components that take a while to search.

At the end of the day design systems are humongous beasts that will take some time to tame. Because of their complex nature they will always be difficult to organise. It does take time to get to know how to use them but if created correctly they will be a great asset for your team.

Pablo Godoy

Senior Software Engineer | React.js & TypeScript Expert | Crafting High-Performance, Responsive, and Accessible Web Experiences

7 个月

There are flaws in atomic design, but the problem you describe is more related to a particular preference for another component system and the friction it generates when switching to atomic design. "They are both navigational tools that should sit somewhere in the same group". That is not true in atomic design. That is part of a preconception taken for the experience of working with another approach. The real problems of the design appear when you completely adopt the philosophy of atomic design and start to see repeating patterns or pain points like prop drilling, the ever-repeating question about when to abstract and when not, or how to avoid duplications with "almost similar" components or even component repeated on different categories. If I manage global dependencies only in pages I win making more testable components but I start doing prop drilling because a simple "loading" state in a button now should pass over 3 or 4 layers of components. There are also strategies to mitigate those flaws like composition, render functions, global state, and a good sense of "when to do that" because all in development has its pros and cons.

回复
Daniel Fu

User Experience Design | Service/Process Design | UI/Interaction Design | Human-Centered Design | Design Leader | Design Strategy

1 年

You have "Components" as sub-headers for two different sections. I think the second one was probably meant to be "Templates" or "Pages?" Otherwise, I appreciate the thinking here. Thanks! :)

Syed M. Sawaid

Senior Software Engineer | Full Stack Engineer | ASP.NET | Node.Js | React | Next.Js | AWS | Azure | Docker

2 年

Can I plug an atom inside another atom? As I want to keep all my text styles in one place and then use them in buttons.

回复
André Rodrigues

Motion Designer Pleno

2 年

As stated in the Atomic Design book by Brad Frost, you can bend the rules and definitions of this methodology according to your needs. Being that the case, I have seen different systems defining Buttons as Atoms or as Molecules. It all comes down to what you find easier when creating your design system. I personally think the nomenclature of the Atomic Design Methodology helps stablish a hierarchy for the components. Still, it was insightful to read about how you organized your design system. Thanks!

Iorran Castro

React/Go - Full Stack Developer (Remote)

2 年

I was trying to implement the same, then I have some questions regarding atomic design. Am I able to call an atom directly into an organism? or a molecule in a template? Or I need to follow strict atom> mol > org> templ ?

要查看或添加评论,请登录

James Eccleston的更多文章

  • How we helped an NGO resolve some of its biggest problems with a workshop

    How we helped an NGO resolve some of its biggest problems with a workshop

    Bridge Studio was contacted by the NGO, Tumaini to help improve how they worked as an organisation. Tumaini is an NGO…

    9 条评论
  • What is genuine brand messaging?

    What is genuine brand messaging?

    Today while I was deleting a deluge of impersonal copy and paste marketing e-mails asking me to 'stay safe', (like they…

    1 条评论
  • What rugby taught me about business and design

    What rugby taught me about business and design

    Apart from fighting obesity, diabetes, high blood pressure, mental wellbeing and lowering cholesterol, what exactly is…

    2 条评论
  • Tips on teaching the new generation of students

    Tips on teaching the new generation of students

    I was going to call this article ‘How to Teach Millennials’, but I generally don’t like putting a label on a whole…

    2 条评论
  • 7 tips to improve your focus

    7 tips to improve your focus

    Do you remember that guy who got caught doing that thing to that wolf and the best thing was… oh wait a moment I just…

  • The logo design process

    The logo design process

    Usually when designing a logo it will be in the wider context of the brand. The logo is just one part of how the brand…

  • UX: Feature Prioritization.

    UX: Feature Prioritization.

    Really like this Youtube channel.

社区洞察

其他会员也浏览了