SlideShare a Scribd company logo
1 of 55
Download to read offline
S E N I O R F R O N T- E N D D E V E L O P E R 

P R E V I O U S N E X T
STYLE GUIDE DRIVEN DEVELOPMENT:

ALL HAIL THE ROBOT OVERLORDS!
J O H N A L B I N W I L K I N S
@JOHNALBIN
Senior Front-end Developer
Zen Theme Menu Block
Menu Position Fences
Conditional Stylesheets
404 Navigation
Simple aggregation
Zen Grids
Chroma
Normalize-scss
KSS-node
github.com
/JohnAlbin
drupal.org
/u/johnalbin
QUESTIONS?
WHERE ARE WE HEADED?
HERE’S A SECRET:
 NO ONE ELSE REALLY KNOWS
 WHAT THEY’RE DOING EITHER.”
“ARE YOU NEW TO
FRONT-END WEB
DEVELOPMENT?
– N I C O L A S G A L L A G H E R
January, 2013
FRONT-END BLOG POSTS:
Grunt/Gulp

task runner
Jenkins / CI
build tools
npm shrinkwrap / Bundler
Web Components
CSS frameworks
Bootstrap / Foundation
CSS/JS linting
Yeoman / Bower
scaffolding tools
Behat / Selenium
regression testing
Vagrant Twig / Handlerbars
Sass / Less
Travis
YSlow
PageSpeed
Cucumber
WraithKSS
Web Starter Kit
Component
CSSLoad
Node.js
“Everyone is describing the one little piece
they’ve created, but don’t explain (or even
reference!) the larger concepts of how all of
these elements link together.”
— Frank Chimero,

July 2014 Designer News AMA
TECHNOLOGY
PROCESS
MAKING SENSE OF FRONT-END TECH
1. Front-end
performance
2. Components
3. Continuous
Integration
( make shit faster )
( make shit modular )
( automate shit )
WATERFALL PROJECT
Start Deadline
Plan
Design
Develop
Theme
Start Deadline
Plan
Design
Develop
Theme
Today
WATERFALL PROJECT
REDUCE YOUR RISK
by controlling/minimizing your risk
AGILE DEVELOPMENT
• Prioritizes project goals
• Completes a set of features
• Creates a releasable
product
Each 2-week sprint:
Feature
backlogFeature #1
Feature #2
Feature #3
Feature #4
Feature #5
Feature #6
Feature #7
Feature #8
Feature #9
Feature #10
Start
Deadline
Sprint Sprint Sprint Sprint Sprint Sprint Sprint
AGILE PROJECT
AGILE + WEB = ?
STYLE-GUIDE-DRIVEN
DEVELOPMENT
Only requirements are:
Component-based design
and
Automated style guides
“Component” is the same as…
“Object” in OOCSS
“Module” in SMACSS
“Block” in BEM’s Block-Element-Modifier
“Web component” in HTML
WHAT IS A DESIGN COMPONENT?
CSS DESIGN COMPONENTS ARE:
• Applied to a loose collection of
HTML elements
• Repeatable

(even if never repeated)
• Specific

Replace CSS specificity with specific
names
• Self contained

Styles do not bleed onto anything else
• Nest-able
SMACSS
BEM
}
1.BASE COMPONENTS
2.LAYOUT COMPONENTS
3.COMPONENTS
3.1.COMPONENT
3.2.ELEMENT
3.3.MODIFIER
3.4.STATE
3.5.SKIN
3.1.COMPONENT
3.2.ELEMENT
3.3.MODIFIER
3.4.STATE
3.5.SKIN
.flower
3.1.COMPONENT
3.2.ELEMENT
3.3.MODIFIER
3.4.STATE
3.5.SKIN
.flower__petals
.flower__face .flower__stem
.flower__leaves
3.1.COMPONENT
3.2.ELEMENT
3.3.MODIFIER
3.4.STATE
3.5.SKIN
.flower__bed
3.1.COMPONENT
3.2.ELEMENT
3.3.MODIFIER
3.4.STATE
3.5.SKIN
.flower--tulip
.flower:hover
3.1.COMPONENT
3.2.ELEMENT
3.3.MODIFIER
3.4.STATE
3.5.SKIN
.flower.is-pollinating
3.1.COMPONENT
3.2.ELEMENT
3.3.MODIFIER
3.4.STATE
3.5.SKIN
@media (min-width: 48em) { .flower }
3.1.COMPONENT
3.2.ELEMENT
3.3.MODIFIER
3.4.STATE
3.5.SKIN
3.1.COMPONENT
3.2.ELEMENT
3.3.MODIFIER
3.4.STATE
3.5.SKIN
@media print { .flower }
.is-night .flower
3.1.COMPONEN
T
3.2.ELEMENT
3.3.MODIFIER
3.4.STATE
3.5.SKIN
( global modifier )
An automated
style guide of
.flower is available:
johnalbin.github.io/flower-power
.flower
DON’T MAKE IT COMPLICATED
.channel-tab__guide__upcoming-video
the names are user-facing
Naming things is hard
if
HOW TO NAME THINGS:
• Spend 30 seconds to name it
• Develop
• Spend 5 minutes reflecting (Maybe add a TODO)
• Commit
• After some time, refactor
DRUPAL 8

CSS CODING STANDARDS
www.drupal.org/node/1886770
NAMING CONVENTION > NAMES
All the selectors
.the%component+
.the%component%%modifier+
.the%component__an%element+
.the%component%%modifier__an%element+
.the%component.is%state+
+ .the%component:hover+
+ @media+all+{+.the%component+{}+}+
.the%skin+.the%component
EASY TO FIND YOUR
COMPONENTS.
• Inspect the DOM.
• Find the CSS class on the
component.
• Look for a file with that
name in the components
folder.
Selector in DOM

I couldn’t change
Class name I wish

I could use in DOM
THE “FUGLY” SELECTOR HACK
Style guides are:
documentation

for design systems
Style guides are AMAZING!
Out-of-date style guides are
USELESS!
kss-node

github.com/kss-node/kss-node
AUTOMATED STYLE GUIDE
KSS: super-simple documentation
AUTOMATED STYLE GUIDE
• Build CSS from Sass/LESS/etc.
• Linting for CSS/Sass/JavaScript
• Build Style Guide
• Visual Regression testing
• Live reload
TASK RUNNER?
LIVE DEMO !!!!
STYLE-GUIDE-DRIVEN
DEVELOPMENT
Only requirements are:
Component-based design
and
Automated style guides
PROCESS
PROCESS TRIFECTA!
• Designers
• Back-end developers
• Front-end developers
DECOUPLED DEVELOPMENT
“i love the style guide stuff.
Means I can make things pretty!!!”
Actual back-end developer quote:
SO MUCH WIN!
• Designers
• Back-end developers
• Front-end developers
• Clients
• Lawyers
• Project Managers
• even more!
WHAT DID YOU THINK?
EVAULATE THIS SESSION - LOSANGELES2015.DRUPAL.ORG/SCHEDULE
THANK YOU!

More Related Content

What's hot

Using the Editor the Proper Way - WordCamp Toronto 2015
Using the Editor the Proper Way - WordCamp Toronto 2015Using the Editor the Proper Way - WordCamp Toronto 2015
Using the Editor the Proper Way - WordCamp Toronto 2015
sethta
 
Building Single Page Apps with React.JS
Building Single Page Apps with React.JSBuilding Single Page Apps with React.JS
Building Single Page Apps with React.JS
Vagmi Mudumbai
 
Responsive Design is Hard/Easy! Be Afraid/Don't Worry!
Responsive Design is Hard/Easy! Be Afraid/Don't Worry!Responsive Design is Hard/Easy! Be Afraid/Don't Worry!
Responsive Design is Hard/Easy! Be Afraid/Don't Worry!
Dan Mall
 

What's hot (20)

Using the Editor the Proper Way - WordCamp Toronto 2015
Using the Editor the Proper Way - WordCamp Toronto 2015Using the Editor the Proper Way - WordCamp Toronto 2015
Using the Editor the Proper Way - WordCamp Toronto 2015
 
Untangling the web - fall2017 - class 4
Untangling the web - fall2017 - class 4Untangling the web - fall2017 - class 4
Untangling the web - fall2017 - class 4
 
Untangling spring week5
Untangling spring week5Untangling spring week5
Untangling spring week5
 
5 things STILL! TOO! HARD! in Plone 5
5 things STILL! TOO! HARD! in Plone 55 things STILL! TOO! HARD! in Plone 5
5 things STILL! TOO! HARD! in Plone 5
 
Portal UI Design Patterns
Portal UI Design PatternsPortal UI Design Patterns
Portal UI Design Patterns
 
Untangling spring week6
Untangling spring week6Untangling spring week6
Untangling spring week6
 
Building Single Page Apps with React.JS
Building Single Page Apps with React.JSBuilding Single Page Apps with React.JS
Building Single Page Apps with React.JS
 
HTML5 as a game console
HTML5 as a game consoleHTML5 as a game console
HTML5 as a game console
 
Responsive Design Workflow
Responsive Design WorkflowResponsive Design Workflow
Responsive Design Workflow
 
Responsive Design is Hard/Easy! Be Afraid/Don't Worry!
Responsive Design is Hard/Easy! Be Afraid/Don't Worry!Responsive Design is Hard/Easy! Be Afraid/Don't Worry!
Responsive Design is Hard/Easy! Be Afraid/Don't Worry!
 
Introduction to blogging with Jekyll
Introduction to blogging with JekyllIntroduction to blogging with Jekyll
Introduction to blogging with Jekyll
 
Plone 5 theming
Plone 5 themingPlone 5 theming
Plone 5 theming
 
Jekyll Presentation Slides
Jekyll Presentation SlidesJekyll Presentation Slides
Jekyll Presentation Slides
 
Jekyll, static websites generator
Jekyll, static websites generatorJekyll, static websites generator
Jekyll, static websites generator
 
Worry free web development
Worry free web developmentWorry free web development
Worry free web development
 
Archetype
ArchetypeArchetype
Archetype
 
Html5
Html5Html5
Html5
 
role=drinks AMS Meetup: 5 Pro Tips for Making Your Email More Accessible
role=drinks AMS Meetup: 5 Pro Tips for Making Your Email More Accessiblerole=drinks AMS Meetup: 5 Pro Tips for Making Your Email More Accessible
role=drinks AMS Meetup: 5 Pro Tips for Making Your Email More Accessible
 
Style Guide Best Practices
Style Guide Best PracticesStyle Guide Best Practices
Style Guide Best Practices
 
Untangling spring week7
Untangling spring week7Untangling spring week7
Untangling spring week7
 

Similar to Style Guide Driven Development: All Hail the Robot Overlords!

Similar to Style Guide Driven Development: All Hail the Robot Overlords! (20)

Managing Complex Projects with Design Components - Drupalcon Austin 2014
Managing Complex Projects with Design Components - Drupalcon Austin 2014Managing Complex Projects with Design Components - Drupalcon Austin 2014
Managing Complex Projects with Design Components - Drupalcon Austin 2014
 
Drupal Camp Manila 2014 - Theming with Zen
Drupal Camp Manila 2014 - Theming with ZenDrupal Camp Manila 2014 - Theming with Zen
Drupal Camp Manila 2014 - Theming with Zen
 
Intro to OOCSS Workshop
Intro to OOCSS WorkshopIntro to OOCSS Workshop
Intro to OOCSS Workshop
 
Front end workflow Presentation at Coffee@DBG by Praveen Vijayan
Front end workflow Presentation at Coffee@DBG by Praveen VijayanFront end workflow Presentation at Coffee@DBG by Praveen Vijayan
Front end workflow Presentation at Coffee@DBG by Praveen Vijayan
 
Between a Block & a Hard Place
Between a Block & a Hard PlaceBetween a Block & a Hard Place
Between a Block & a Hard Place
 
Advanced Front End Architecture in D8: Sass, Gulp, & Living Style Guides
Advanced Front End Architecture in D8: Sass, Gulp, & Living Style GuidesAdvanced Front End Architecture in D8: Sass, Gulp, & Living Style Guides
Advanced Front End Architecture in D8: Sass, Gulp, & Living Style Guides
 
Html css workshop, lesson 0, how browsers work
Html css workshop, lesson 0, how browsers workHtml css workshop, lesson 0, how browsers work
Html css workshop, lesson 0, how browsers work
 
What is Modular CSS?
What is Modular CSS?What is Modular CSS?
What is Modular CSS?
 
The Fast And The Fabulous
The Fast And The FabulousThe Fast And The Fabulous
The Fast And The Fabulous
 
DrupalSouth 2014: Managing Complex Projects with Design Components
DrupalSouth 2014: Managing Complex Projects with Design ComponentsDrupalSouth 2014: Managing Complex Projects with Design Components
DrupalSouth 2014: Managing Complex Projects with Design Components
 
We Need to Talk About CSS
We Need to Talk About CSSWe Need to Talk About CSS
We Need to Talk About CSS
 
Atomic Design - An Event Apart San Diego
Atomic Design - An Event Apart San DiegoAtomic Design - An Event Apart San Diego
Atomic Design - An Event Apart San Diego
 
SiteMesh
SiteMeshSiteMesh
SiteMesh
 
How to Build a Bespoke Page Builder in WordPress
How to Build a Bespoke Page Builder in WordPressHow to Build a Bespoke Page Builder in WordPress
How to Build a Bespoke Page Builder in WordPress
 
WordPress theme frameworks
WordPress theme frameworksWordPress theme frameworks
WordPress theme frameworks
 
Atomic design
Atomic designAtomic design
Atomic design
 
Front End Best Practices
Front End Best PracticesFront End Best Practices
Front End Best Practices
 
Scalable front-end architecture with Bootstrap 3 + Atomic CSS
Scalable front-end architecture with Bootstrap 3 + Atomic CSSScalable front-end architecture with Bootstrap 3 + Atomic CSS
Scalable front-end architecture with Bootstrap 3 + Atomic CSS
 
CSS Architecture: Writing Maintainable CSS
CSS Architecture: Writing Maintainable CSSCSS Architecture: Writing Maintainable CSS
CSS Architecture: Writing Maintainable CSS
 
Using Core Themes in Drupal 8
Using Core Themes in Drupal 8Using Core Themes in Drupal 8
Using Core Themes in Drupal 8
 

More from John Albin Wilkins

More from John Albin Wilkins (18)

Using the CSS Nesting Spec Today
Using the CSS Nesting Spec TodayUsing the CSS Nesting Spec Today
Using the CSS Nesting Spec Today
 
The Drupal Roadmap: From D7 to D9
The Drupal Roadmap: From D7 to D9The Drupal Roadmap: From D7 to D9
The Drupal Roadmap: From D7 to D9
 
Mastering Drupal 8’s Twig
Mastering Drupal 8’s TwigMastering Drupal 8’s Twig
Mastering Drupal 8’s Twig
 
CSS-in-JS: unexpected lessons for Drupal component design
CSS-in-JS: unexpected lessons for Drupal component designCSS-in-JS: unexpected lessons for Drupal component design
CSS-in-JS: unexpected lessons for Drupal component design
 
SassConf: Managing Complex Projects with Design Components
SassConf: Managing Complex Projects with Design ComponentsSassConf: Managing Complex Projects with Design Components
SassConf: Managing Complex Projects with Design Components
 
Drupal Camp Taipei Keynote
Drupal Camp Taipei KeynoteDrupal Camp Taipei Keynote
Drupal Camp Taipei Keynote
 
Become an IA superstar (Chinese version)
Become an IA superstar (Chinese version)Become an IA superstar (Chinese version)
Become an IA superstar (Chinese version)
 
Mobile drupal: building a mobile theme
Mobile drupal: building a mobile themeMobile drupal: building a mobile theme
Mobile drupal: building a mobile theme
 
Sass: CSS with Attitude
Sass: CSS with AttitudeSass: CSS with Attitude
Sass: CSS with Attitude
 
Mastering zen
Mastering zenMastering zen
Mastering zen
 
Drupal and the Future of the Web
Drupal and the Future of the WebDrupal and the Future of the Web
Drupal and the Future of the Web
 
What's new in D7 Theming?
What's new in D7 Theming?What's new in D7 Theming?
What's new in D7 Theming?
 
Default theme implementations: a guide for module developers that want sweet ...
Default theme implementations: a guide for module developers that want sweet ...Default theme implementations: a guide for module developers that want sweet ...
Default theme implementations: a guide for module developers that want sweet ...
 
Rocking the Theme Layer
Rocking the Theme LayerRocking the Theme Layer
Rocking the Theme Layer
 
Drupal Design Tips
Drupal Design TipsDrupal Design Tips
Drupal Design Tips
 
New Adventures in Drupal Theming
New Adventures in Drupal ThemingNew Adventures in Drupal Theming
New Adventures in Drupal Theming
 
Nanocon Taiwan
Nanocon TaiwanNanocon Taiwan
Nanocon Taiwan
 
Making Drupal Dance: Techniques for Non-obvious Theme Manipulations
Making Drupal Dance: Techniques for Non-obvious Theme ManipulationsMaking Drupal Dance: Techniques for Non-obvious Theme Manipulations
Making Drupal Dance: Techniques for Non-obvious Theme Manipulations
 

Recently uploaded

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Recently uploaded (20)

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

Style Guide Driven Development: All Hail the Robot Overlords!