Atomic Web
design and dev
http://atomicdesign.bradfrost.com/
Book Report
tl;dr?
http://bradfrost.com/
Author
I'm just curating... direct your praise and/or anger to:
Book Audience
-
generally, every discipline involved with creating a UI
- devs, designers, management
- specifically, designers: particularly those from a non-digital background
- specifically, front-end devs: those who create and maintain user-facing apps/pages
Book Structure
- conceptually instructional
- not a dive into code
- he makes many assertions & opinions
need your comments
in the beginning...
The "Page"
Each page was handcrafted
academics could easily share and link together their documents
The page metaphor has been baked into the lexicon of the Web since the very beginning.
the page metaphor helped new Web users explore and eventually master an entirely new medium using conventions they were already comfortable with.
the metaphor lives today
the way things are named very much impacts how they’re perceived and utilized
“We’re a startup looking to launch a 5-page website this October…”
“... how long will the home page take to build?”
“How are we ever going to redesign this university website that contains over 30,000 pages?!”
resulting in...
a project’s level of effort is much better determined by the functionality and components contained within those pages -- not quantity of pages themselves.
the fundamental mistake: assuming a page is a uniform, isolated, quantifiable thing. The reality is that the Web is a fluid, bi-directional, interdependent medium
the bi-directional and interactive nature of the Web adds many more dimensions to what constitutes good design. Speed, screen size, environment, technological capabilities, form-factor, ergonomics, usability, accessibility, context, and user preferences must be considered if we want to create great work for this brave new digital world.
Unique Digital Design Considerations
Flexibility
Impact of the network
Interaction
Motion
Ergonomics
Color and text rendering
Pixel density
Scrolling performance
Device and browser quirks
User preferences
25 years into this new medium, and this once-necessary figure of speech has overstayed its welcome.
time has come for us to evolve beyond the "page"
Explosion of the Web
The device and Web landscape of tomorrow will undoubtedly be even bigger and diverse than today’s
"Drowning in a Sea of devices"
a "piece" of content is being viewed in many different shapes and sizes
the Web is Crazy
Leveling Up
Dev
leveling-up
smaller, more manageable chunks.
to maintain sanity, we need
Hence the Buzzwords
Front-end
Components
Node Modules
Micro Services
BEM
CSS Modules
SRP
OOCSS
SMACSS
Modularity FTW
The spirit of modularity is weaving its way into every aspect of the Web creation process and having profound effects on organizations’ strategy, process, content, design, and development.
Design
leveling-up
untenable to produce static mockups of every page on a Web experience
the most effective way to show your clients what their website will never look like.
Photoshop Comps
We’re not designing pages, we’re designing systems of components.
-- Stephen Hay
It’s essential to get stakeholders comfortable with reviewing works in progress rather than fully-baked designs and code.
getting the design into the browser as fast as possible, you confront stakeholders with the realities of the final medium much sooner in the process
Giant Photoshop Comps
Style Tiles
Element Collages
Pattern Libraries
Content
leveling-up
"In order to properly address this increasingly diverse and eclectic digital landscape, we need to dramatically overhaul our perception of content and the tools we use to manage it."
Get your content ready to go anywhere, because it’s going to go everywhere.
- For A Future-Friendly Web
we need well-designed chunks of content that we can then figure out how we want to restructure and publish and display in a way that’s going to be right for the appropriate platform.
- Karen McGrane
If you've stored a view model in database, you're not prepared to go everywhere.
- Me
Teams
leveling-up
front-end developers are often relegated to crude production machines that are brought into the project only after all the design decisions are made. This archaic process keeps disciplines out of sync with each other and prevents teams from working together in a meaningful way. This of course is a huge mistake.
creating a division between designers and frontend developers is an absolutely terrible idea
it’s crucial to treat frontend development as a core part of the design process
People
leveling-up
You can have all the right technologies in place, use the latest-and-greatest tools, and even have extraordinarily talented individuals on board, but if everyone involved isn’t actually cooperating and communicating with each other then you’re not going to create great work. It’s as simple as that.
Process
leveling-up
Waterfall
Iterative
Production
leveling-up
Atomic Design
what is
a mental model that allows us to concurrently create final UIs and their underlying design systems.
a language for discussing the structure of our UI patterns and the content that goes inside those patterns
a buzzword which encapsulates the concepts of modular design and development
allows us to mentally traverse between abstract concepts and concrete instances
not rigid dogma, you can name these things however you want, organize how you want, etc.
it’s conceptual
not a linear, waterfall process
ie: not step-by-step instructions
Chemistry Refresher
first a
Chemistry
- Atoms: basic building blocks of all matter. (ignore protons, electrons, etc)
- Molecules: two+ atoms held together by chemical bond
- Organisms: assemblies of molecules functioning together
Atomic Design
Atoms
Atoms
- the foundational building blocks that comprise all our user interfaces.
- Demonstrate all your global styles at a glance
Example: HTML Tags
HTML Tags
- Each atom contains its own unique attributes, eg: ol vs ul
- "Normalizing" or modifying HTML tags are atomic level changes
Atoms
- HTML Tags
- color palettes
- font stacks
- CSS Normalizations
- animations
Potential Atom Products
- CSS / style variables
- colors, font families, etc
- font-face definitions
- CSS normalization / reset
- type hierarchy, spacing, basic styles
- Media Queries Definitions
- All the foundational styles that everything will inherit from
Molecules
relatively simple groups of UI elements (atoms) functioning together as a unit
Example
label + input + button = QuickForm
use cases
- "search the site"
- "subscribe to newsletter"
simple, portable, reusable components that can be dropped in anywhere that functionality is needed
does one thing and does it well
Benefits
- makes testing easier
-
encourages reusability
-
promotes consistency throughout interface
Organisms
relatively complex UI components composed of groups of molecules, atoms and/or other organisms.
Example
more complex compositions
more opinionated
May be composing many different elements
May compose same element one over and over
Building up from molecules to relatively complex organisms provides designers and developers with an important sense of context
Organisms demonstrate those smaller, simpler components in action and serve as distinct patterns that can be used again and again.
Templates
Breaking away from chemistry metaphor ~ taking it too far.
"page"-level objects that place components into a layout and articulate the design’s underlying content structure.
Example
provides context for these relatively abstract molecules and organisms
focus on the page’s underlying content structure rather than the page’s final content
You can create good experiences without knowing the content. What you can’t do is create good experiences without knowing your content structure. What is your content made from, not what your content is.
— Mark Boulton
a system that can account for a variety of dynamic content, all while providing needed guardrails for the types of content that populates certain design patterns
Pages
specific instances of templates that replace placeholder content with real representative content
template
page
Example
most concrete stage of atomic design
what users see
what stakeholders sign off on
essential for testing the effectiveness of the underlying design system
a place to articulate variations in templates, which is crucial for establishing robust and reliant design systems
Eg:
- A user has one item in their shopping cart and another user has 10 items in their cart
- A web app’s dashboard typically shows recent activity, but that section is suppressed for first-time users
- An article contains a 40-character-long headline while other article with a 340-character-long headline
- Users with administrative privileges see additional buttons and options on their dashboard compared to users who aren’t admins
when things break
we loop back and modify our molecules, organisms, and templates
Review
Atomic Design
- Atoms are UI elements that can’t be broken down any further and serve as the elemental building blocks of an interface
- Molecules are collections of atoms that form relatively simple UI components
- Organisms are relatively complex components that form discrete sections of an interface
- Templates place components into a page layout and demonstrate the design’s underlying content structure
- Pages apply real content to templates and articulate variations to demonstrate the final UI and test the resiliency of the design system
From Abstract to Concrete
Pattern Library
mental model
in practice
Pattern Library
Atomic Design
yields
a centralized hub of all the UI components that comprise your interface
Example
https://standards.usa.gov/
http://styleguides.io/examples.html
more examples
Pattern Libraries
- promote consistency and cohesion across the entire experience
- speed up your team’s workflow, saving time and money
- establish a more collaborative workflow between all disciplines involved in a project
- establish a shared vocabulary between everyone in an organization, including outside vendors
- provide helpful documentation to help educate stakeholders, colleagues, and even third parties
- make cross-browser/device, performance, and accessibility testing easier
- serve as a future-friendly foundation for teams to modify, extend, and improve upon over time
Good Qualities & Features
- articulate pattern variations, such as active or disabled tabs
- ability to view patterns across the entire resolution spectrum
- provide pattern descriptions and annotations
- show me the code
- ability to dynamically pour real representative content into the patterns’ structure
- provides contextual information like which patterns make up a particular component as well as where that component gets utilized
of a pattern library site / tool
no institutional support to create a pattern library?
Do it anyways
-- Brad Frost
(not the stack team)
Do it anyways
- the fact of the matter is: in order to create the whole, you need to create the parts of that whole
- taking the time to organize the parts, you can now create the whole in a more realistic, deliberate, and efficient manner
- as you’re showing progress on the final work, you can decide how much of your internal process you’re willing to expose to them
- the fact that you’re creating a design system to produce the final product is really of no concern to them; it’s simply a decision your team is making to create better work
- it would be extremely difficult for them to argue against you now, especially if the project came in on time and on budget 🚢
Organized Process
Maintaining
Pattern Library
not an afterthought
Design System First
Extending
Quotes from the Book
Henry Ford broke the automobile down into its component parts and modularized the assembly process. The results spoke for themselves: more uniform, more reliable, safer cars rolled out of the factory, and in record time to boot
Ideas are meant to be ugly.
— Jason Santa Maria
Let’s change the phrase “designing in the browser” to “deciding in the browser.”
— Dan Mall
the more fluid a UI component is, the more resilient and versatile it becomes
It’s ludicrous for anyone to utter the phrase “this is how we’ve always done things” in an industry that’s only 25 years old.
The design process is weird and complicated, because people are weird and complicated.
— Mark Boulton
monolithic redesigns don’t get to the organizational root of the problem"
Our React Starters
Component Authoring Starter
App Starter
The End
Atomic Web
By Jared Anderson
Atomic Web
- 1,490