Design+Performance

67
Design + Performance Steve Souders @souders

Transcript of Design+Performance

Page 1: Design+Performance

Design + Performance

Steve Souders@souders

Page 2: Design+Performance

bringing designers & developers closer

together

Page 3: Design+Performance

flickr.com/photos/timdorr

Page 4: Design+Performance

flickr.com/photos/easyflow

Page 5: Design+Performance

https://speakerdeck.com/yeseniaperezcruz/design-decisions-through-the-lens-of-a-performance-budget

Page 6: Design+Performance

https://speakerdeck.com/yeseniaperezcruz/design-decisions-through-the-lens-of-a-performance-budget

Page 7: Design+Performance

https://speakerdeck.com/yeseniaperezcruz/design-decisions-through-the-lens-of-a-performance-budget

Page 8: Design+Performance

https://speakerdeck.com/yeseniaperezcruz/design-decisions-through-the-lens-of-a-performance-budget

Page 9: Design+Performance

en.oreilly.com/velocity2009/public/schedule/detail/8523

Page 10: Design+Performance

en.oreilly.com/velocity2009/public/schedule/detail/8523

Page 11: Design+Performance

…shaved 2.2 seconds off the average page load time and increased download conversions by 15.4%!

blog.mozilla.com/metrics/category/website-optimization/

Page 12: Design+Performance

We made the new platform 60% faster and this resulted in a 14% increase in donation conversions.

kylerush.net/blog/meet-the-obama-campaigns-250-million-fundraising-platform/

Page 13: Design+Performance

blog.mozilla.com/metrics/category/website-optimization/

…shaved 2.2 seconds off the average page load time and increased download conversions by 15.4%!

en.oreilly.com/velocity2009/public/schedule/detail/7709

Page 14: Design+Performance

en.oreilly.com/velocity2008/public/schedule/detail/3632

Page 15: Design+Performance

slideshare.net/EdmundsLabs/how-edmunds-got-in-the-fast-lane-80-reduction-in-page-load-time-in-3-simple-steps-6593377

Page 16: Design+Performance

“traffic jumped from 6M to 11M uniques…time spent on site rose from 5.9 to 7.8

minutes…interaction rate on ads rose 108%”

Page 17: Design+Performance

Screen shot of blog post…we've decided to take site speed into account in our search rankings.

googlewebmastercentral.blogspot.com/2010/04/using-site-speed-in-web-search-ranking.html

Page 18: Design+Performance

“To stay in Google's good graces, websites must be designed so they load quickly on

mobile devices.”

huffingtonpost.com/2015/04/17/google-search-update_n_7085642.html

Page 19: Design+Performance

Fast is Good

flickr.com/photos/krissen/

Page 20: Design+Performance

designers & developers often work in silos

some designs are hard to make fast

being fast is importantflickr.com/photos/jronaldlee

Page 21: Design+Performance

Design + Performance

flickr.com/photos/easyflow

Page 22: Design+Performance

small interdisciplinary teams

Page 23: Design+Performance

guiding principles

flickr.com/photos/nihaogirl

Page 24: Design+Performance

Speed is more important than design embellishment.

People are filling small gaps in their day with news. It must load fast on all touchpoints.

The design should feel light and nimble, always fresh and up to date. Never heavy, slow to load or clogged up with content.

Users expect sites to render in under 2 seconds.

DAN/TBWA

example

Page 25: Design+Performance

prototype early

Page 26: Design+Performance

measure performance from the start

flickr.com/photos/josterpi

Page 27: Design+Performance

performance budgets

Page 28: Design+Performance

https://speakerdeck.com/lara/mobile-web-at-etsy

in-page remindersshow what’s beaconedbookmarklets

Page 29: Design+Performance

flickr.com/photos/josterpi

Page 30: Design+Performance

Measuring Performance

flickr.com/photos/thatguyfromcchs08

Page 31: Design+Performance

"The graph below shows the average number of seconds it takes 35 different computers located throughout the world to download our homepage."

2002

Page 32: Design+Performance

flickr.com/photos/cataniamichele

Page 33: Design+Performance

window.onload RUM• metrics from real users - COOL!• reflect actual geo, hw, bw, etc.• but, "start" time isn't right• and timer has latency2008

Page 34: Design+Performance

2010

Page 35: Design+Performance

Navigation Timingoverall page metricsperformance.timing,.now()

Resource Timingindividual HTTP requestsperformance.getEntries()

User Timingcustom metricsperformance.mark(),.measure()

W3C Web Timing Specs

flickr.com/photos/zamboniandrea

Page 36: Design+Performance

“window.onload is not the best metric for measuring website

speed”

Page 37: Design+Performance

99% ATF rendered: 2.0s onload: 9.7s

onload: 3.9s 98% ATF rendered: 4.7s

overly optimistic

too critical

Page 38: Design+Performance
Page 39: Design+Performance

domInteractive

Page 40: Design+Performance

domInteractive

Page 41: Design+Performance
Page 42: Design+Performance

https://sites.google.com/a/webpagetest.org/docs/using-webpagetest/metrics/speed-index

Page 43: Design+Performance

domInteractive .onload Speed Index

Bing

Disqus

CNN

MSN

Page 44: Design+Performance

There is no single metric that captures

the UX on all websites.

flickr.com/photos/packethunter

Page 45: Design+Performance

flickr.com/photos/15609463@N03

Page 46: Design+Performance

flickr.com/photos/kk

Page 47: Design+Performance

custom metrics

Page 48: Design+Performance

custom metricsdefine most important elements on the page

Page 49: Design+Performance

custom metricsdefine most important elements on the pagemeasure using User Timing

Page 50: Design+Performance

custom metricsdefine most important elements on the pagemeasure using User Timingtrack with RUM and synthetic

Page 51: Design+Performance

https://blog.twitter.com/2012/improving-performance-on-twittercom

Page 52: Design+Performance
Page 53: Design+Performance

image load time custom metric

<div class="stream-item-header"> <a class="account-group js-account-group js-action-profile js-user-profile-link js-nav" href="/ericlaw" data-user-id="5725652"> <img class="avatar js-action-profile-avatar" src="https://pbs.twimg.com/profile_images/...d8a_bigger.jpeg" alt=""> <strong class="fullname js-action-profile-name show-popup-with-id" data-aria-label-part> Eric Lawrence </strong>

DISPLAY

Page 54: Design+Performance

image load time custom metric

<div class="stream-item-header"> <a class="account-group js-account-group js-action-profile js-user-profile-link js-nav" href="/ericlaw" data-user-id="5725652"> <img class="avatar js-action-profile-avatar" src="https://pbs.twimg.com/profile_images/...d8a_bigger.jpeg" alt=""> <strong class="fullname js-action-profile-name show-popup-with-id" data-aria-label-part> Eric Lawrence </strong>

DISPLAY

Page 55: Design+Performance

image load time custom metric

<div class="stream-item-header"> <a class="account-group js-account-group js-action-profile js-user-profile-link js-nav" href="/ericlaw" data-user-id="5725652"> <img class="avatar js-action-profile-avatar" src="https://pbs.twimg.com/profile_images/...d8a_bigger.jpeg" alt="" onload="performance.measure('imgDisplayed')"> <strong class="fullname js-action-profile-name show-popup-with-id" data-aria-label-part> Eric Lawrence </strong>

DISPLAY

Page 56: Design+Performance

image load time custom metric

<link rel="stylesheet" href="/huge-slow.css">

<div class="stream-item-header"> <a class="account-group js-account-group js-action-profile js-user-profile-link js-nav" href="/ericlaw" data-user-id="5725652"> <img class="avatar js-action-profile-avatar" src="https://pbs.twimg.com/profile_images/...d8a_bigger.jpeg" alt="" onload="performance.measure('imgDisplayed')"> <strong class="fullname js-action-profile-name show-popup-with-id" data-aria-label-part> Eric Lawrence </strong>

DISPLAY

Page 57: Design+Performance

image load time custom metric

<link rel="stylesheet" href="/huge-slow.css">

<script>performance.measure('imgDisplayed');</script>

<div class="stream-item-header"> <a class="account-group js-account-group js-action-profile js-user-profile-link js-nav" href="/ericlaw" data-user-id="5725652"> <img class="avatar js-action-profile-avatar" src="https://pbs.twimg.com/profile_images/...d8a_bigger.jpeg" alt="" onload="performance.measure('imgDisplayed')"> <strong class="fullname js-action-profile-name show-popup-with-id" data-aria-label-part> Eric Lawrence </strong>

DISPLAY

Page 58: Design+Performance

image load time custom metric

<link rel="stylesheet" href="/huge-slow.css">

<script>performance.measure('imgDisplayed');</script>

<div class="stream-item-header"> <a class="account-group js-account-group js-action-profile js-user-profile-link js-nav" href="/ericlaw" data-user-id="5725652"> <img class="avatar js-action-profile-avatar" src="https://pbs.twimg.com/profile_images/...d8a_bigger.jpeg" alt="" onload="performance.measure('imgDisplayed')"> <strong class="fullname js-action-profile-name show-popup-with-id" data-aria-label-part> Eric Lawrence </strong>

DISPLAY

Page 59: Design+Performance

image load time custom metric

<link rel="stylesheet" href="/huge-slow.css">

<script>performance.clearMeasures('imgDisplayed');performance.measure('imgDisplayed');</script>

<div class="stream-item-header"> <a class="account-group js-account-group js-action-profile js-user-profile-link js-nav" href="/ericlaw" data-user-id="5725652"> <img class="avatar js-action-profile-avatar" src="https://pbs.twimg.com/profile_images/...d8a_bigger.jpeg" alt="" onload="performance.clearMeasures('imgDisplayed'); performance.measure('imgDisplayed')"> <strong class="fullname js-action-profile-name show-popup-with-id" data-aria-label-part> Eric Lawrence </strong>

DISPLAY

Page 60: Design+Performance
Page 61: Design+Performance

custom metrics

Page 62: Design+Performance

flickr.com/photos/stevendepolo

Page 63: Design+Performance

flickr.com/photos/cataniamichele

Page 64: Design+Performance

There is no single metric that captures

the UX on all websites.

flickr.com/photos/packethunter

Page 65: Design+Performance

custom metricsdefine most important elements on the pagemeasure using User Timingtrack with RUM and synthetic

Page 66: Design+Performance

flickr.com/photos/kk

Page 67: Design+Performance

@soudersstevesouders.com/talks