Améliorer la Performance : entre réalité et perception

A presentation at Paris Web 2017 in October 2017 in Paris, France by Geoffrey Crofte

Slide 1

Slide 1

Améliorer la performance Entre réalité et perception

Slide 2

Slide 2

“Améliorer la performance” — @geoffrey_crofte Geoffrey Crofte geoffrey.crofte.fr creativejuiz.fr Full-Stack Developer pour la société @geoffrey_crofte

2

Slide 3

Slide 3

“Améliorer la performance” — @geoffrey_crofte Tour d’horizon Pourquoi parler de performance ? La notion de temps. D’un point de vue technique. Faire patienter. Détourner l’attention. Mentir à l’utilisateur· rice. Bonus ?

Slide 4

Slide 4

Pourquoi parler de performance ?

Slide 5

Slide 5

53% des utilisateur·rice·s abandonnent un site qui met plus de 3 secondes à se charger sur mobile. 
 Le temps moyen de chargement d’un site web en 3G est de 19 seconds. Les utilisateur·rice· s n’attendent pas Source : soasta.com (septembre 2016)

Slide 6

Slide 6

la durée moyenne d’attention passe de 12 secondes (en 2000) à 8.25 secondes (en 2015) 
 C’est une seconde de moins que la durée d’attention d’un poisson rouge. Les utilisateur·rice·s 
 attendent de moins en moins Source : statisticbrain.com

Slide 7

Slide 7

“Améliorer la performance” — @geoffrey_crofte Vous perdez vos utilisateur·rice·s au bout de 10 secondes .

Slide 8

Slide 8

La notion de temps

Slide 9

Slide 9

Le temps objectif 
 Celui que vous avez sur vos montres. 
 Le temps psychologique 
 Celui qui va être réellement perçu par une personne. Il y a plusieurs temps Source : Smashing Magazine

Slide 10

Slide 10

0,1 à 0,2s : aucun délai ressenti. 
 0,5 à 1 s : délai immédiat proche d’une réponse d’humain à humain. 
 2 à 5 s : expérience optimale dans une activité. 
 5 à 10 s : la durée d’attention d’un utilisateur·rice . Durées psychologiques Source : Smashing Magazine

Slide 11

Slide 11

“Améliorer la performance” — @geoffrey_crofte Cette semaine est passée super vite, je n’ai pas vu le temps filer ! Youpiiii!

Slide 12

Slide 12

Le type et la complexité de la tâche. 
 L’expérience de la personne sur des tâches similaires. 
 La disposition de la personne (fatigue, stress, etc.) Perception non linéaire Source : tinyartshop

Slide 13

Slide 13

On va pouvoir jouer sur plusieurs facteurs : Différents paramètres clés La stimulation 
 Les indices qui rappellent l’attente. 
 La durée 
 Réelle ou ressentie. 
 L’attention 
 L’occupation du cerveau à une tâche ou une autre.

Slide 14

Slide 14

Comment améliorer la perception de l’attente ? Le temps objectif Optimiser ce qui est concrètement optimisable. Détourner l’attention Occuper la personne à une autre tâche que celle de l’attente. Mentir à l’utilisateur· rice Lui faire croire qu’elle n’a pas besoin d’attendre. Indicateurs de l’attente Fournir une indication adaptée au type d’attente.

Slide 15

Slide 15

Ce que vous avez déjà fait j’espère…

Slide 16

Slide 16

“Améliorer la performance” — @geoffrey_crofte Nginx, Apache… testez et retenez le meilleur pour vos besoins. La solution Serveur Nginx est meilleur (2 fois plus rapide

qu’Apache) pour servir des documents statiques. 
 Apache et Nginx s’équivalent sur l’aspect dynamique.

Slide 17

Slide 17

“Améliorer la performance” — @geoffrey_crofte Les mises à jour vont (très souvent) dans le sens de la performance. Tenez votre système à jour PHP 7 traite 2 fois plus de requêtes par seconde que la version 5.6. (précédente) 
 Apache entre sa version 2.2 et 2.4 est environ 40% plus performant. Sources : genious-interactive.com et rootusers.com

Slide 18

Slide 18

Cette technique permet de distributer des ressources plus rapidement. Mettez en cache Le cache serveur 
 Évite à votre machine de refaire les calculs. 
 Le cache navigateur 
 Stocke des fichiers dans le navigateur client.

Slide 19

Slide 19

Profiter des avantages des Service Workers. Pensez à votre Progressive Web App Offline / Connexion bas débit 
 Permet d’accéder à des ressources même hors-ligne. 
 Rapidité 
 Une partie des fichiers étant stockée sur la machine de l’utilisateur·rice .

Slide 20

Slide 20

Parce qu’on ne peut pas tout voir ensemble, pensez aussi à : Pensez à plein d’autres choses… HTTP/2, CSS Critical Path, local/sessionStorage, Optimiser vos bases de données, Optimiser vos images (formats, compression), Minifier et concaténer CSS et JS CDN Géolocalisé …

Slide 21

Slide 21

“Améliorer la performance” — @geoffrey_crofte L’interface doit faire ressortir les réponses immédiates. Les réponses immédiates Au survol, focus ou activation d’un élément. 
 Sur une action instantanée traitée en JS.

Slide 22

Slide 22

Il y a un tutoriel pour ça : http://bit.ly/clipboardscript

Slide 23

Slide 23

Démonstration disponible ici : http://bit.ly/clipboarddemo

Slide 24

Slide 24

Faire patienter

Slide 25

Slide 25

Next slide loading…

Slide 26

Slide 26

“Améliorer la performance” — @geoffrey_crofte

Slide 27

Slide 27

Plusieurs manières de procéder qui n’expriment pas la même chose. Indiquer l’attente Le spinner 
 Ce petit truc qui tourne indéfiniment. 
 La barre de chargement 
 Qui propose un début et une fin. Les mots 
 Pour expliciter le pourquoi du comment. Les faux contenus 
 Pour aider à la projection.

Slide 28

Slide 28

“Améliorer la performance” — @geoffrey_crofte Pratique pour une attente courte. Le spinner Le traitement dure entre 2 et 8 secondes. 
 Ne pas afficher de spinner en dessous de 2 secondes. 
 Au delà de 8 secondes l’utilisateur· rice perd sa capacité d’attention.

Slide 29

Slide 29

Pour qu’un indicateur ait du sens, il doit être proche de la zone activée par l’utilisateur· rice. Un indicateur doit être suffisamment longtemps visible pour éviter l’effet “bug visuel” Un indicateur proche

Slide 30

Slide 30

“Améliorer la performance” — @geoffrey_crofte

Slide 31

Slide 31

“Améliorer la performance” — @geoffrey_crofte Pour des tâches plus longues. Spinner originaux Un effet original et travaillé peut délecter l’utilisateur· rice. 
 Permet d’augmenter un peu le délai d’attente sans décourager. “Améliorer la performance” — @geoffrey_crofte

Slide 32

Slide 32

Source : https://www.backmarket.fr/

Slide 33

Slide 33

Slide 34

Slide 34

Slide 35

Slide 35

“Améliorer la performance” — @geoffrey_crofte Pour une attente quantifiable/définie moyenne. La barre de chargement Le traitement risque de durer plus de 8 secondes. 
 Vous pouvez mesurer la durée ou le nombre d’items à traiter. 
 “Améliorer la performance” — @geoffrey_crofte

Slide 36

Slide 36

“Améliorer la performance” — @geoffrey_crofte Apparemment : De la sur-optimisation ? L’accélération finale offre un effet positif sur le ressenti, 
 L’animation en sens inverse dans la barre offre un effet de vitesse supplémentaire. “Améliorer la performance” — @geoffrey_crofte

Slide 37

Slide 37

“Améliorer la performance” — @geoffrey_crofte http://bit.ly/progressbar1

Slide 38

Slide 38

“Améliorer la performance” — @geoffrey_crofte http://bit.ly/progressbar2

Slide 39

Slide 39

“Améliorer la performance” — @geoffrey_crofte

Slide 40

Slide 40

“Améliorer la performance” — @geoffrey_crofte Aménager l’espace et proposer du faux contenu. Les faux contenus Permet de fournir du contenu au compte- gouttes. 
 Le faux contenu peut servir à l’utilisateur·rice à se projeter et faciliter la phase de découverte.

Slide 41

Slide 41

“Améliorer la performance” — @geoffrey_crofte http://bit.ly/placeholderdemo

Slide 42

Slide 42

“Améliorer la performance” — @geoffrey_crofte

Slide 43

Slide 43

“Améliorer la performance” — @geoffrey_crofte

Slide 44

Slide 44

“Améliorer la performance” — @geoffrey_crofte Ajouter une information claire avec de vrais mots. Paroles, les paroles Il permet d’être explicite sur le processus. 
 Donner des chiffres sert d’estimatif du temps restant. 
 Il permet de donner de la lecture à l’utilisateur·rice … gtmetrix.com

Slide 45

Slide 45

Détourner l’attention de l’attente

Slide 46

Slide 46

“Améliorer la performance” — @geoffrey_crofte Attente alternée L’attente de l’utilisateur·rice passe de passive à active. 
 L’action peut être utile . 
 L’action peut être ludique également. Source : La Sphère Bleue

Slide 47

Slide 47

“Améliorer la performance” — @geoffrey_crofte En donnant de la lecture Afficher les news de votre entreprise/blog. 
 Donner des astuces sur l’interface. 
 Raconter une anecdote ou blague. 
 Personnaliser l’attente.

Slide 48

Slide 48

Slide 49

Slide 49

Slide 50

Slide 50

Slide 51

Slide 51

“Améliorer la performance” — @geoffrey_crofte En proposant une activité Par exemple : Commencer à accomplir la tâche suivante. 
 Communiquer avec une communauté. 
 En jouant le temps de l’attente.

Slide 52

Slide 52

“Améliorer la performance” — @geoffrey_crofte

Slide 53

Slide 53

“Améliorer la performance” — @geoffrey_crofte

Slide 54

Slide 54

“Améliorer la performance” — @geoffrey_crofte Ecran de LoL avec sélection des perso et discussion en cours.

Slide 55

Slide 55

“Améliorer la performance” — @geoffrey_crofte

Slide 56

Slide 56

Mentir sur le temps d’attente

Slide 57

Slide 57

“Améliorer la performance” — @geoffrey_crofte Fake It Until You Make It Partir du principe que la réponse serveur est positive dans 99% des cas. 
 Proposer une réponse instantanée. 
 Prévenir le 1% restant si jamais ça se passe mal. Source : Jakob Schnitker sur RedBubble

Slide 58

Slide 58

“Améliorer la performance” — @geoffrey_crofte

Slide 59

Slide 59

“Améliorer la performance” — @geoffrey_crofte Mensonge par omission Profiter que l’utilisateur·rice soit occupé· e sur une tâche pour effectuer nos requêtes serveur sans prévenir. 
 
 Ça permet de ne pas montrer d’indicateur d’attente. Source : Instagram Upload

Slide 60

Slide 60

“Améliorer la performance” — @geoffrey_crofte

Slide 61

Slide 61

“Améliorer la performance” — @geoffrey_crofte

Slide 62

Slide 62

“Améliorer la performance” — @geoffrey_crofte

Slide 63

Slide 63

“Améliorer la performance” — @geoffrey_crofte

Slide 64

Slide 64

“Améliorer la performance” — @geoffrey_crofte Lazyload Du contenu à la demande. Des ressources quand elles sont utiles. 
 Chargement du contenu premier plus rapide. 
 Ça marche avec plein de types de contenu. Source : Medium

Slide 65

Slide 65

“Améliorer la performance” — @geoffrey_crofte Qualité adaptée Permet de réduire le temps d’attente passive. 
 Permet de ne pas interrompre le service. 
 Conserve l’attention sur la tâche en cours. 
 Mieux en faible qualité que pas du tout.

Slide 66

Slide 66

“Améliorer la performance” — @geoffrey_crofte Cacher derrière une animation Gagnez quelques secondes ci et là en proposant des animations courtes dans votre interface. Les animations fluides et courtes ont un effet positif sur le ressenti de l’utilisateur·rice . Démo sur CodePen : http://bit.ly/animationperf

Slide 67

Slide 67

Et si on prenait notre temps ?

Slide 68

Slide 68

“Améliorer la performance” — @geoffrey_crofte Le délai attendu Trop rapide, le prise en compte de l’accomplissement d’une tâche par le cerveau peut ne pas être immédiate, voire absente. L’utilisateur·rice peut également dans certains cas ressentir de la frustration.

Slide 69

Slide 69

“Améliorer la performance” — @geoffrey_crofte Durée, gage de qualité Donne une idée de la quantité de tâches accomplies. 
 Idée commune “d’en avoir pour son argent” ou “plus ça dure, mieux c’est”. Quand une action est communément censée durer car gage de qualité, n’optimisez rien.

Slide 70

Slide 70

“Améliorer la performance” — @geoffrey_crofte

Slide 71

Slide 71

Lâchons le Chronomètre ?

Slide 72

Slide 72

“Améliorer la performance” — @geoffrey_crofte Et si au lieu d’essayer de gagner du temps on évitait d’en perdre ?

Slide 73

Slide 73

“Améliorer la performance” — @geoffrey_crofte Soyez prévoyants Éviter à l’utilisateur· rice de lui faire perdre son temps. Enregistrer les données d’un formulaire en local/sessionStorage par exemple. 
 L’informer en cas de crash et restaurer ses données. Source : Projet en cours

Slide 74

Slide 74

“Améliorer la performance” — @geoffrey_crofte Et détecter le reste. Demander l’indispensable 35% : abandon du processus de commande car un compte est nécessaire. 
 27% : abandon du processus de commande car trop de champs à remplir. Sources : SecuPress.me et Baymard.com

Slide 75

Slide 75

“Améliorer la performance” — @geoffrey_crofte

Slide 76

Slide 76

“Améliorer la performance” — @geoffrey_crofte Évitez les formulaires (?) La technique tip-top : Proposer d’enregistrer des données. 
 Les réutiliser le plus souvent possible pour faire gagner du temps. Source : Amazon

Slide 77

Slide 77

“Améliorer la performance” — @geoffrey_crofte Proposez une alternative Offrir une alternative à l’utilisateur·rice

permet d’augmenter son niveau de satisfaction, même s’il n’a pas pu aller jusqu’au bout de sa démarche. Source : WebPageTest

Slide 78

Slide 78

À retenir Optimisez du côté technique autant que possible. Un Spinner pour les attentes courtes. Une barre de progression pour les attentes longues. Du faux contenu pour aider l’utilisateur. Détourner l’attention de l’attente. Cacher l’attente sous le tapis. Utiliser les animations pour faire patienter. Prendre son temps quand il le faut. Proposer des portes de sortie.

Slide 79

Slide 79

“Améliorer la performance” — @geoffrey_crofte Quelques ressources Mobile Speed Matters (DoubleClick) The perception of time (Smashing Mag) Attention Span Statistics (Statistic Brain) Getting Started with PWA (Google Devs) Cart Abandonment Rate ( baymard.com ) Étude sur la vitesse de défilement des barres de progression (Carine Lallemand) Lighttpd solution serveur. Nginx solution serveur. G-Wan solution serveur. LazySizes : Lazyload et la technique de l’image de remplacement floue. Credit Card IIN Ranges

Slide 80

Slide 80

N’hésitez pas je ne mords pas. Merci ! Des Questions ?