You'll learn:
How to structure, govern, and maintain a design system
How to improve design consistency, productivity, and quality with React
How to avoid design debt in short-term and long-term projects
13. Learning #2
Design debt that makes it to production should not be seen as the fault of the
engineer that implemented it, but rather a sign that our tools failed to meet their
needs.
15. Balancing UX Consistency and Developer Productivity
1. Programmatically encouraging design consistency
2. When consistency and productivity clash
3. Living in a component world
16. 1. Programmatically encouraging design consistency
2. When consistency and productivity clash
3. Living in a component world
Balancing UX Consistency and Developer Productivity
27. 1. Programmatically encouraging design consistency
2. When consistency and productivity clash
3. Living in a component world
Balancing UX Consistency and Developer Productivity
35. Evolution of OUI at Optimizely
● Before OUI: Collection of Sass files, within monolith, without documentation
● OUI v1: Collection of Sass files, separate repo, versioned, great documentation
● OUI v2: Added React components with great documentation
When consistency and productivity clash: OUI
38. Learning #7
Use your documentation as the development environment to keep it up to date.
39. Evolution of the Token component: Part 1
When consistency and productivity clash: Token component
40. Evolution of the Token component: Part 2
When consistency and productivity clash: Token component
41. If we wanted to redesign our Tokens...
1. Find every place we use the Token component
2. (Hope that we found all of them.)
3. Remove the previously added helper class and other one-off implementations
4. Rewrite our Token CSS to:
a. Use the new style
b. Support features that we previously implemented as one-offs
5. Visually verify every page that use a Token component
6.
When consistency and productivity clash: Token component
42. Evolution of the Token component: Part 3
When consistency and productivity clash: Token component
<div class="token">
<div class="token__num">1</div>
<div class="token__handle"></div>
<div class="muted">Experience for:</div>
<div class="token__text">
Added item to cart
<button class="token__close">
<svg>...</svg>
</button>
</div>
</div>
import { Token } from 'ui-library';
<Token num={1} label="Experience for">
Added item to cart
</Token>
44. 1. Programmatically encouraging design consistency
2. When consistency and productivity clash
3. Living in a component world
Balancing UX Consistency and Developer Productivity
45. Benefit of Components
1. Productivity Improvements
2. Consistency Improvements
3. Quality Improvements
Living in a component world
46. Productivity Improvements
Living in a component world
<div class="token">
<div class="token__num">1</div>
<div class="token__handle"></div>
<div class="muted">Experience for:</div>
<div class="token__text">
Added item to cart
<button class="token__close">
<svg>...</svg>
</button>
</div>
</div>
import { Token } from 'ui-library';
<Token num={1} label="Experience for">
Added item to cart
</Token>
47.
48.
49.
50. Benefit of Components
1. Productivity Improvements
2. Consistency Improvements
3. Quality Improvements
Living in a component world
51. Benefit of Components
1. Productivity Improvements
2. Consistency Improvements
3. Quality Improvements
Living in a component world
52.
53. Danger of Components
1. Building global components too early may lead to wrong abstraction
2. Allowing developers to pass in their own classes and styles
Living in a component world
54. Only create global components when they are needed in two or more places.
Creating the wrong abstraction is way more costly than duplicating code.
Learning #9