-
Notifications
You must be signed in to change notification settings - Fork 0
/
design-systems.html
534 lines (374 loc) · 24.8 KB
/
design-systems.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
<!DOCTYPE html>
<html>
<head>
<!-- Document Settings -->
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!-- Base Meta -->
<!-- dynamically fixing the title for tag/author pages -->
<title>Design Systems</title>
<meta name="HandheldFriendly" content="True" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- Styles'n'Scripts -->
<link rel="stylesheet" type="text/css" href="/assets/built/screen.css" />
<link rel="stylesheet" type="text/css" href="/assets/built/screen.edited.css" />
<!-- highlight.js -->
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css">
<style>.hljs { background: none; }</style>
<!-- This tag outputs SEO meta+structured data and other important settings -->
<meta name="description" content="UX and service design lead for Client Group Technology at AB, an asset manager with more than $600B AUM. Specializing in User-Centered Design, Lean Startup, Agile, Qualitative and Quantitative User Research, and Front End Technologies and Languages." />
<link rel="shortcut icon" href="http://localhost:4000/assets/images/favicon.png" type="image/png" />
<link rel="canonical" href="http://localhost:4000/design-systems" />
<meta name="referrer" content="no-referrer-when-downgrade" />
<!--title below is coming from _includes/dynamic_title-->
<meta property="og:site_name" content="Timothy Gaull" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Design Systems" />
<meta property="og:description" content="Of late, in my practice, I’ve been working on the challenge of implementing design systems. At AB, we’ve just over half a dozen technology teams serving different aspects of the business. In the corporate and enterprise technology teams we have about 800 people working on various enterprise products at any" />
<meta property="og:url" content="http://localhost:4000/design-systems" />
<meta property="og:image" content="http://localhost:4000/assets/images/welcome.jpg" />
<meta property="article:publisher" content="https://www.facebook.com/" />
<meta property="article:author" content="https://www.facebook.com/" />
<meta property="article:published_time" content="2018-02-01T04:00:00-06:00" />
<meta property="article:modified_time" content="2018-02-01T04:00:00-06:00" />
<meta property="article:tag" content="Ideas And Thoughts" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Design Systems" />
<meta name="twitter:description" content="Of late, in my practice, I’ve been working on the challenge of implementing design systems. At AB, we’ve just over half a dozen technology teams serving different aspects of the business. In the corporate and enterprise technology teams we have about 800 people working on various enterprise products at any" />
<meta name="twitter:url" content="http://localhost:4000/" />
<meta name="twitter:image" content="http://localhost:4000/assets/images/welcome.jpg" />
<meta name="twitter:label1" content="Written by" />
<meta name="twitter:data1" content="Timothy Gaull" />
<meta name="twitter:label2" content="Filed under" />
<meta name="twitter:data2" content="Ideas And Thoughts" />
<meta name="twitter:site" content="@" />
<meta name="twitter:creator" content="@" />
<meta property="og:image:width" content="1400" />
<meta property="og:image:height" content="933" />
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Website",
"publisher": {
"@type": "Organization",
"name": "Timothy Gaull",
"logo": "http://localhost:4000/assets/images/blog-icon.png"
},
"url": "http://localhost:4000/design-systems",
"image": {
"@type": "ImageObject",
"url": "http://localhost:4000/assets/images/welcome.jpg",
"width": 2000,
"height": 666
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "http://localhost:4000/design-systems"
},
"description": "Of late, in my practice, I’ve been working on the challenge of implementing design systems. At AB, we’ve just over half a dozen technology teams serving different aspects of the business. In the corporate and enterprise technology teams we have about 800 people working on various enterprise products at any"
}
</script>
<!-- <script type="text/javascript" src="https://demo.ghost.io/public/ghost-sdk.min.js?v=724281a32e"></script>
<script type="text/javascript">
ghost.init({
clientId: "ghost-frontend",
clientSecret: "f84a07a72b17"
});
</script> -->
<meta name="generator" content="Jekyll 3.6.2" />
<link rel="alternate" type="application/rss+xml" title="Design Systems" href="/feed.xml" />
</head>
<body class="post-template">
<div class="site-wrapper">
<!-- All the main content gets inserted here, index.hbs, post.hbs, etc -->
<!-- default -->
<!-- The tag above means: insert everything in this file
into the {body} of the default.hbs template -->
<header class="site-header outer">
<div class="inner">
<nav class="site-nav">
<div class="site-nav-left">
<a class="site-nav-logo" href="/"><img src="/assets/images/blog-icon.png" alt="Timothy Gaull" /></a>
<ul class="nav" role="menu">
<li class="nav-home" role="menuitem"><a href="/">Home</a></li>
<li class="nav-about" role="menuitem"><a href="/about/">About</a></li>
<li class="nav-about" role="menuitem" ><a target="_blank" href="https://linkedin.com/in/timothygaull">LinkedIn</a></li>
</ul>
</div>
</nav>
</div>
</header>
<!-- Everything inside the #post tags pulls data from the post -->
<!-- #post -->
<main id="site-main" class="site-main outer" role="main">
<div class="inner">
<article class="post-full post tag-ideas ">
<header class="post-full-header">
<section class="post-full-meta">
<time class="post-full-meta-date" datetime=" 1 February 2018"> 1 February 2018</time>
<span class="date-divider">/</span>
<a href='/tag/ideas-and-thoughts/'>IDEAS AND THOUGHTS</a>
</section>
<h1 class="post-full-title">Design Systems</h1>
</header>
<figure class="post-full-image" style="background-image: url(/assets/images/welcome.jpg)">
</figure>
<section class="post-full-content">
<div class="kg-card-markdown">
<p>Of late, in my practice, I’ve been working on the challenge of implementing design systems. At AB, we’ve just over half a dozen technology teams serving different aspects of the business. In the corporate and enterprise technology teams we have about 800 people working on various enterprise products at any given time with hundreds of products happening simultaneously.</p>
<h6 id="challenge">Challenge</h6>
<p>With an organization of this size and only a few designers to go around, the need for a design system became apparent as soon as I arrived. A system to empower our development focused teams to get product to market faster while elevating our brand and user experience standards.</p>
<h6 id="global-enterprise-technology--marketing--brand">Global Enterprise Technology | Marketing & Brand</h6>
<ul>
<li>Corporate & Enterprise Technology</li>
<li>Infrastructure</li>
<li>Client Group</li>
<li>Equity</li>
<li>Fixed Income</li>
<li>Research</li>
<li>Private Client</li>
</ul>
<h6 id="step-one---institutional-buy-in-for-design-systems">Step One - Institutional Buy-in for Design Systems</h6>
<p>It goes without saying, without buy in from across the organization, a design system won’t be much use. No matter how much effort the teams and myself put into producing it. So, I set out working with the different groups at AB to begin building consensus around the need for the system. In this step I talked with AB’s <strong>Developers Guild</strong>, key technology project managers, engineers, and our new <strong>UX Guild</strong>. Together, we quickly established the importance of developers within our organization and with that we had buy in around the principle that the primary audience of the design system would need to be developers.</p>
<h6 id="step-two---content-inventory">Step Two - Content Inventory</h6>
<p>Having multiple tracks of the design system is helpful. What’s that mean? At AB, the UX discipline’s growth has meant a distributed set of lead designers throughout the organization. Some of us on the brand and global marketing teams, others serving the global technology umbrella. The benefit to this is that we get more exposure for user centered design thinking across the organization as a whole. In the case of AB, the marketing and brand teams began working on a client facing design system inventory just as the corporate and enterprise technology teams started thinking about how to improve a lot of our enterprise apps and services.</p>
<ol>
<li>
<p>The marketing group produced the initial UI content inventory. Once complete, they produced a new design component library in Sketch.</p>
<blockquote>
<p>With the newly emerged set of patterns. The marketing group was able to produce a new library in Sketch for designers across the organizations to quickly adopt the same design language and helping to enforce better componentization of UI elements.</p>
</blockquote>
</li>
<li>
<p>Corporate and Enterprise Technology implemented Pattern Lab. A visual library for developers to reference UI elements. With the Pattern Lab, developers from across the organization are able to quickly reference the fonts, icons, SVG images, and image libraries that make of the different components identified in the initial UI inventory.</p>
</li>
</ol>
<p><img src="assets/images/ab-logo-patterns.png" alt="AB Logo Patterns" title="AB Logo Patterns" /></p>
<blockquote>
<p>With the new system, developers only have to clone the design system from the git repository, ensuring they always have access to the latest fonts, logo, and icon systems for their applications.</p>
</blockquote>
<h6 id="step-three---show-and-tell--pattern-lab">Step Three - Show and Tell | Pattern Lab</h6>
<p>The first project that we used to help launch the new patterns was a subsite of our corporate intranet. Focused on showcasing user guides and stories to help employees adapt to our new technology environment.</p>
<p><img src="assets/images/ab-color-patterns.png" alt="AB Color Patterns" title="AB Color Patterns" /></p>
<blockquote>
<p>With Pattern Lab, developers can easily reference any component they need when building their application, copy the markup HTML from the lab, and have the design for their app seamlessly, click into place.</p>
</blockquote>
<p><img src="assets/images/ab-font-patterns.png" alt="AB Font Patterns" title="AB Font Patterns" /></p>
<h6 id="seeing-it-in-action---ab-technology--intranet-and-guides">Seeing it in Action - AB Technology | Intranet and Guides</h6>
<p>Being in the middle of a massive digital effort means that documentation doesn’t just stope at the new design system for our developers. One of the first projects I was able to use to both build out the initial pattern library as well as benefiting from the new consensus across AB is our intranet site dedicated to helping employees and consultants worldwide get access to guides and useful how-to guides using the array of new SaaS and cloud services we’ve introduced over the past several years.</p>
<p><img src="assets/images/ab-patterns-inaction.png" alt="AB Font Patterns" title="AB Font Patterns" /></p>
<h6 id="step-four---ongoing-maintenance--componentization-of-ui-elements">Step Four - Ongoing Maintenance | Componentization of UI elements</h6>
<p>With the base system now in place. The term componentization becomes ever more relevant. With multiple corporate and enterprise apps in need of modernization and new feature development. The next big enterprise apps to use the new system include.</p>
<ol>
<li><strong>eRequest</strong> - AB’s corproate workflow tool for all technology and service request</li>
<li><strong>Corporate Intranet</strong> - AB’s intranet redesign</li>
<li><strong>Zoom Desktop App Redesign</strong> - our new cloud based video and audio conferencing platforms customized dashboard and desktop interface</li>
<li><strong>Symphony Messaging</strong> - our new chat communications platform will benefit with our new corproate apps implementing the design system</li>
<li>and more more</li>
</ol>
<h6 id="step-five----unleash--the-teams-are-ready-for-more-complete-design-sprints">Step Five - Unleash | The Teams are Ready for More Complete Design Sprints</h6>
<p>With the new toolset in place and multiple teams contributing to the new code base maintenance. We now have a tool ready for our Labs and User Centered Design and Engineering teams to use throughout new design sprints on client facing tools with our business clients. Having a well documented and thorough design system in place is a massive endeavor with major operational efficiencies to be gained. We’re thrilled to be a the begnning of our journey with design systems at AB.</p>
</div>
</section>
<!-- Email subscribe form at the bottom of the page -->
<section class="subscribe-form">
<h3 class="subscribe-form-title">Subscribe to Timothy Gaull</h3>
<p>Get the latest posts delivered right to your inbox</p>
<form method="post" action="/subscribe/" class="">
<input class="confirm" type="hidden" name="confirm" /><input class="location" type="hidden" name="location" /><input class="referrer" type="hidden" name="referrer" />
<div class="form-group">
<input class="subscribe-email" type="email" name="email" placeholder="[email protected]" />
</div>
<button class="" type="submit" disabled><span>Subscribe</span></button>
<script type="text/javascript">(function(g,h,o,s,t){h[o]('.location')[s]=h[o]('.location')[s] || g.location.href;h[o]('.referrer')[s]=h[o]('.referrer')[s] || h.referrer;})(window,document,'querySelector','value');</script>
</form>
</section>
<footer class="post-full-footer">
<!-- Everything inside the #author tags pulls data from the author -->
<!-- #author-->
<section class="author-card">
<img class="author-profile-image" src="/assets/images/ghost.png" alt="timothy" />
<section class="author-card-content">
<h4 class="author-card-name"><a href="/author/timothy">timothy</a></h4>
<p>Creative, Strategist, Entrepreneur and Design Thinker.</p>
</section>
</section>
<div class="post-full-footer-right">
<a class="author-card-button" href="/author/timothy">Read More</a>
</div>
<!-- /author -->
</footer>
<!-- If you use Disqus comments, just uncomment this block.
The only thing you need to change is "test-apkdzgmqhj" - which
should be replaced with your own Disqus site-id. -->
</article>
</div>
</main>
<!-- Links to Previous/Next posts -->
<aside class="read-next outer">
<div class="inner">
<div class="read-next-feed">
<!-- If there's a next post, display it using the same markup included from - partials/post-card.hbs -->
<!-- If there's a previous post, display it using the same markup included from - partials/post-card.hbs -->
<article class="post-card post-template">
<a class="post-card-image-link" href="/alliance-bernstein">
<div class="post-card-image" style="background-image: url(/assets/images/alliancebernstein.jpg)"></div>
</a>
<div class="post-card-content">
<a class="post-card-content-link" href="/alliance-bernstein">
<header class="post-card-header">
<span class="post-card-tags">Portfolio</span>
<h2 class="post-card-title">Alliance Bernstein</h2>
</header>
<section class="post-card-excerpt">
<p>AB is a leading global investment-management and research firm. We bring together a wide range of insights, expertise and innovations to advance the interests of our clients around the world. -Alliance Bernstein Technology</p>
</section>
</a>
<footer class="post-card-meta">
<img class="author-profile-image" src="/assets/images/ghost.png" alt="timothy" />
<span class="post-card-author">
<a href="/author/timothy/">timothy</a>
</span>
</footer>
</div>
</article>
</div>
</div>
</aside>
<!-- Floating header which appears on-scroll, included from includes/floating-header.hbs -->
<div class="floating-header">
<div class="floating-header-logo">
<a href="http://localhost:4000/">
<img src="/assets/images/favicon.png" alt="Timothy Gaull icon" />
<span>Timothy Gaull</span>
</a>
</div>
<span class="floating-header-divider">—</span>
<div class="floating-header-title">Design Systems</div>
<progress class="progress" value="0">
<div class="progress-container">
<span class="progress-bar"></span>
</div>
</progress>
</div>
<!-- /post -->
<!-- The #contentFor helper here will send everything inside it up to the matching #block helper found in default.hbs -->
<!-- Previous/next page links - displayed on every page -->
<!-- The footer at the very bottom of the screen -->
<footer class="site-footer outer">
<div class="site-footer-content inner">
<section class="copyright"><a href="http://localhost:4000/">Timothy Gaull</a> © 2019</section>
<section class="poweredby">Proudly published with <a href="https://jekyllrb.com/">Jekyll</a> &
<a href="https://pages.github.com/" target="_blank" rel="noopener">GitHub Pages</a> using
<a href="https://github.com/jekyller/jasper2" target="_blank" rel="noopener">Jasper2</a></section>
<nav class="site-footer-nav">
<a href="/">Latest Posts</a>
</nav>
</div>
</footer>
</div>
<!-- The big email subscribe modal content -->
<div id="subscribe" class="subscribe-overlay">
<a class="subscribe-overlay-close" href="#"></a>
<div class="subscribe-overlay-content">
<img class="subscribe-overlay-logo" src="/assets/images/blog-icon.png" alt="Timothy Gaull" />
<h1 class="subscribe-overlay-title">Subscribe to Timothy Gaull</h1>
<p class="subscribe-overlay-description">Stay up to date! Get all the latest & greatest posts delivered straight to your inbox</p>
<form method="post" action="/subscribe/" class="">
<input class="confirm" type="hidden" name="confirm" /><input class="location" type="hidden" name="location" /><input class="referrer" type="hidden" name="referrer" />
<div class="form-group">
<input class="subscribe-email" type="email" name="email" placeholder="[email protected]" />
</div>
<button class="" type="submit" disabled><span>Subscribe</span></button>
<script type="text/javascript">(function(g,h,o,s,t){h[o]('.location')[s]=h[o]('.location')[s] || g.location.href;h[o]('.referrer')[s]=h[o]('.referrer')[s] || h.referrer;})(window,document,'querySelector','value');</script>
</form>
</div>
</div>
<!-- highlight.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.10.0/components/prism-abap.min.js"></script>
<script>$(document).ready(function() {
$('pre code').each(function(i, block) {
hljs.highlightBlock(block);
});
});</script>
<!-- jQuery + Fitvids, which makes all video embeds responsive -->
<script
src="https://code.jquery.com/jquery-3.2.1.min.js"
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
crossorigin="anonymous">
</script>
<script type="text/javascript" src="/assets/js/jquery.fitvids.js"></script>
<script type="text/javascript" src="https://demo.ghost.io/assets/js/jquery.fitvids.js?v=724281a32e"></script>
<!-- Paginator increased to "infinit" in _config.yml -->
<!-- if paginator.posts -->
<!-- <script>
var maxPages = parseInt('');
</script>
<script src="/assets/js/infinitescroll.js"></script> -->
<!-- /endif -->
<!-- Add Google Analytics -->
<!-- Google Analytics Tracking code -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-68389425-1', 'auto');
ga('send', 'pageview');
</script>
<!-- The #block helper will pull in data from the #contentFor other template files. In this case, there's some JavaScript which we only want to use in post.hbs, but it needs to be included down here, after jQuery has already loaded. -->
<script>
// NOTE: Scroll performance is poor in Safari
// - this appears to be due to the events firing much more slowly in Safari.
// Dropping the scroll event and using only a raf loop results in smoother
// scrolling but continuous processing even when not scrolling
$(document).ready(function () {
// Start fitVids
var $postContent = $(".post-full-content");
$postContent.fitVids();
// End fitVids
var progressBar = document.querySelector('progress');
var header = document.querySelector('.floating-header');
var title = document.querySelector('.post-full-title');
var lastScrollY = window.scrollY;
var lastWindowHeight = window.innerHeight;
var lastDocumentHeight = $(document).height();
var ticking = false;
function onScroll() {
lastScrollY = window.scrollY;
requestTick();
}
function onResize() {
lastWindowHeight = window.innerHeight;
lastDocumentHeight = $(document).height();
requestTick();
}
function requestTick() {
if (!ticking) {
requestAnimationFrame(update);
}
ticking = true;
}
function update() {
var trigger = title.getBoundingClientRect().top + window.scrollY;
var triggerOffset = title.offsetHeight + 35;
var progressMax = lastDocumentHeight - lastWindowHeight;
// show/hide floating header
if (lastScrollY >= trigger + triggerOffset) {
header.classList.add('floating-active');
} else {
header.classList.remove('floating-active');
}
progressBar.setAttribute('max', progressMax);
progressBar.setAttribute('value', lastScrollY);
ticking = false;
}
window.addEventListener('scroll', onScroll, {passive: true});
window.addEventListener('resize', onResize, false);
update();
});
</script>
<!-- Ghost outputs important scripts and data with this tag - it should always be the very last thing before the closing body tag -->
<!-- ghost_foot -->
</body>
</html>