68
Faire le pont entre designers et développeurs au Guardian @kaelig

Faire le pont entre designers et développeurs au Guardian

Embed Size (px)

DESCRIPTION

L’histoire de la fluidification du dialogue entre designers et développeurs au Guardian : comment nous avons facilité l’amélioration continue à grande vitesse d’un site responsive à grande échelle. Pour atteindre une ubiquité de langage entre les interactions humaine et notre code, nous avons utilisé le pré-processeur CSS Sass et des techniques qui s'apparentent au Domain Driven Design (Design Orienté Domaine). Présentation donnée à la conférence Blend Web Mix (http://www.blendwebmix.com/) le jeudi 30 octobre 2014 à Lyon. C'est une mise à jour d'une présentation précédemment donnée en Français à la Kiwi Party (http://kiwiparty.fr/) le vendredi 13 juin 2014 : http://www.slideshare.net/kaelig/kiwi-party

Citation preview

Page 1: Faire le pont entre designers et développeurs au Guardian

Faire le pont entre designers et développeurs au Guardian

@kaelig

Page 2: Faire le pont entre designers et développeurs au Guardian

Pour qui est cette conférence ?

Ceux qui écrivent du codeCeux qui n’en écrivent pas

Ceux qui utilisent des pré-processeursCeux qui n’en ont jamais entendu parler

@kaelig

Page 3: Faire le pont entre designers et développeurs au Guardian

Mars Climate Orbiter23 Septembre 1999

Page 4: Faire le pont entre designers et développeurs au Guardian
Page 5: Faire le pont entre designers et développeurs au Guardian
Page 6: Faire le pont entre designers et développeurs au Guardian

theguardian

@kaelig

.com

180,000 copies 105,000,000 unique browsers

Établi en 1821 Lancé en 1999 (.co.uk)

UK seulement Mondial

Données: Août 2014

Page 7: Faire le pont entre designers et développeurs au Guardian

@kaelig

Page 8: Faire le pont entre designers et développeurs au Guardian

Source: http://www.html5rocks.com/static/images/screenshots/crossdevice/image16.gif

Page 9: Faire le pont entre designers et développeurs au Guardian
Page 10: Faire le pont entre designers et développeurs au Guardian
Page 11: Faire le pont entre designers et développeurs au Guardian
Page 12: Faire le pont entre designers et développeurs au Guardian

github.com/guardian/frontend

@kaelig

Page 13: Faire le pont entre designers et développeurs au Guardian

github.com/guardian/frontend

70 contributeurs

@kaelig

Page 14: Faire le pont entre designers et développeurs au Guardian

github.com/guardian/frontend

70 contributeurs~30 personnes qui touchent au HTML/CSS

@kaelig

Page 15: Faire le pont entre designers et développeurs au Guardian

github.com/guardian/frontend

70 contributeurs~30 personnes qui touchent au HTML/CSS~25 000 lignes de Sass

@kaelig

Page 16: Faire le pont entre designers et développeurs au Guardian

github.com/guardian/frontend

70 contributeurs~30 personnes qui touchent au HTML/CSS~25 000 lignes de SassCycle de déploiement

~4 fois par jour

@kaelig

Page 17: Faire le pont entre designers et développeurs au Guardian

Product Manager

Designers

Engineers

Editorial

UX Designer

@kaelig

Page 18: Faire le pont entre designers et développeurs au Guardian

Prototype

Idée

Test

@kaelig

Page 19: Faire le pont entre designers et développeurs au Guardian

Real User Monitoring@kaelig

Page 20: Faire le pont entre designers et développeurs au Guardian

A/B tests@kaelig

Page 21: Faire le pont entre designers et développeurs au Guardian

Prototype

Idée

Test

@kaelig

Page 22: Faire le pont entre designers et développeurs au Guardian

Prototype

Idée Test

@kaelig

Page 23: Faire le pont entre designers et développeurs au Guardian

@kaelig

De nombreux intervenantsNiveaux d’expertise variés

Vocabulaires différents

On déploie très tôt et souventOn souhaite que ça continue ainsi

Le contexte

Page 24: Faire le pont entre designers et développeurs au Guardian

Developer tools

Scala

Play!

GruntSass

RequireJS

Bower

AWS

Node.jsSelenium

WebdriverRuby

TeamCity

GitHub

PhantomJSAngular

Beer

Page 25: Faire le pont entre designers et développeurs au Guardian

sass-lang.com

@kaelig

Page 26: Faire le pont entre designers et développeurs au Guardian

@kaelig

Page 27: Faire le pont entre designers et développeurs au Guardian

La couleur du titre est “gris clair”

@kaelig

Page 28: Faire le pont entre designers et développeurs au Guardian

Prototype

Idea Test

@kaelig

Page 29: Faire le pont entre designers et développeurs au Guardian

Prototype

Idea Test

@kaelig

Designsystem

(couleurs)

Page 30: Faire le pont entre designers et développeurs au Guardian
Page 31: Faire le pont entre designers et développeurs au Guardian
Page 32: Faire le pont entre designers et développeurs au Guardian

@kaelig

.nav { background: #005689; }

$c-brandBlue: #005689;.nav { background: $c-brandBlue; }

Page 33: Faire le pont entre designers et développeurs au Guardian

@kaelig

.title { color: #333333; }

.title { color: $c-neutral-1; }

Page 34: Faire le pont entre designers et développeurs au Guardian

Ce que tu as appris

• Le code est un moyen de communication (ici grâce aux variables)

• Un pré-processeur aide à éviter les copier-coller constants

@kaelig

Page 35: Faire le pont entre designers et développeurs au Guardian

Breakpoints

@kaelig

Page 36: Faire le pont entre designers et développeurs au Guardian

@media (min-width: 37.5em) {}

@media (min-width: $tablet) {}

@kaelig

Page 37: Faire le pont entre designers et développeurs au Guardian

sass-mq

• Abstraction réutilisable pour @media queries • Chaque point de rupture (breakpoint) a un

nom pratique à retenir • Simplifie le support des anciens navigateurs

(Internet Explorer 8)

git.io/sass-mq

@kaelig

Page 38: Faire le pont entre designers et développeurs au Guardian

@media (min-width: 37.5em) {}

@media (min-width: $tablet) {}

@include mq($from: tablet) {}@include mq(tablet, desktop) {}@include mq($until: tablet) {}

@kaelig

Page 39: Faire le pont entre designers et développeurs au Guardian

sass-mq: exemple

Sass

CSS

.nav { background: $c-brandBlue; ! @include mq($from: tablet) { background: transparent; } }

.nav { background: #005689; } @media all and (min-width: 37.5em) { .nav { background: transparent; } }

Page 40: Faire le pont entre designers et développeurs au Guardian

Nommer les breakpoints

$mq-breakpoints: ( mobile: 320px, tablet: 740px, desktop: 980px, wide: 1300px );

@kaelig

Page 41: Faire le pont entre designers et développeurs au Guardian

Ce que tu as appris

• Les choses complexes peuvent être abstraites derrière des abstractions plus simples

• Prendre le temps de s’outiller va s’avérer très productif

@kaelig

Page 42: Faire le pont entre designers et développeurs au Guardian

La grille

@kaelig

Page 43: Faire le pont entre designers et développeurs au Guardian
Page 44: Faire le pont entre designers et développeurs au Guardian
Page 45: Faire le pont entre designers et développeurs au Guardian

4 à 16 colonnes de 60px

Gouttières : 20px

Marges externes :

< 480px : 10px

>= 480px : 20px

Page 46: Faire le pont entre designers et développeurs au Guardian

Une colonne, une gouttière…Ça fait combien en pixels ?

@kaelig

Page 47: Faire le pont entre designers et développeurs au Guardian

.element { width: 220px; } @media (min-width: 56.25em) { .element { width: 540px; } }

3 colonnes par défaut, puis 7 colonnes sur desktop

Page 48: Faire le pont entre designers et développeurs au Guardian

https://github.com/guardian/guss-grid-system @kaelig

Page 49: Faire le pont entre designers et développeurs au Guardian

.element { width: gs-span(3); } @include mq(desktop) { .element { width: gs-span(7); } }

3 colonnes par défaut, puis 7 colonnes sur desktop

Page 50: Faire le pont entre designers et développeurs au Guardian

Baser ses points de rupture sur la grille

@kaelig

Page 51: Faire le pont entre designers et développeurs au Guardian

Use break points to defend the integrity of your design instead of basing it off a set media size.

@kaelig

Ethan Marcotte @beep

Page 52: Faire le pont entre designers et développeurs au Guardian

$mq-breakpoints: (! mobile: gs-span(4) + $gs-gutter, // 320px! mobileLandscape: gs-span(6) + $gs-gutter, // 480px! phablet: gs-span(8) + $gs-gutter*2, // 660px! tablet: gs-span(9) + $gs-gutter*2, // 740px! desktop: gs-span(12) + $gs-gutter*2, // 980px! leftCol: gs-span(14) + $gs-gutter*2, // 1140px! wide: gs-span(16) + $gs-gutter*2, // 1300px!);!

@kaelig

Page 53: Faire le pont entre designers et développeurs au Guardian

• Les machines sont bonnes en math et nous évitent d’en faire

• Le tout est autre que la somme de ses parties (grille + breakpoints = ❤)

@kaelig

Ce que tu as appris

Page 54: Faire le pont entre designers et développeurs au Guardian
Page 55: Faire le pont entre designers et développeurs au Guardian

16px/20px normal14px/18px normal

14px/18px normal

14px/18px normal

14px/18px normal

16px/20px normal

32px/36px normal

32px/36px normal

text sans 12px/16px

text sans 12px/16px

20px/24px normal

20px/28px bolder

Page 56: Faire le pont entre designers et développeurs au Guardian

? ? ?

@kaelig

Page 57: Faire le pont entre designers et développeurs au Guardian
Page 58: Faire le pont entre designers et développeurs au Guardian
Page 59: Faire le pont entre designers et développeurs au Guardian

CSS

Sass

.element { font-size: 16px; line-height: 20px; font-family: "Guardian Egyptian Headline", Georgia, serif; font-weight: 900; }

.element { @include fs-header(1); }

Échelle typographique : exemple

Page 60: Faire le pont entre designers et développeurs au Guardian

16px/20px normal14px/18px normal

14px/18px normal

14px/18px normal

14px/18px normal

16px/20px normal

32px/36px normal

32px/36px normal

text sans 12px/16px

text sans 12px/16px

20px/24px normal

20px/28px bolder

Page 61: Faire le pont entre designers et développeurs au Guardian

Headline 2Headline 1

Headline 1

Headline 1

Headline 2

Headline 6

Headline 6

Text Sans 1

Text Sans 1

Headline 3

Header 3

Headline 1

Page 62: Faire le pont entre designers et développeurs au Guardian

Ce que tu as appris

• Quand aucune convention n’est partagée, on peut en créer une commune

• Inclure les éléments de design directement dans le code améliorent la cohérence du design

@kaelig

Page 63: Faire le pont entre designers et développeurs au Guardian

Prototype

Idée Test

@kaelig

Page 64: Faire le pont entre designers et développeurs au Guardian

Prototype

Idée Test

@kaelig

Élémentsdu design

Page 65: Faire le pont entre designers et développeurs au Guardian

Prototype

Idée Test

@kaelig

Élémentsdu design

Élémentsdu design

Page 66: Faire le pont entre designers et développeurs au Guardian

Prototype

Idée Test

@kaelig

Élémentsdu design

Élémentsdu design

Élémentsdu design

Page 67: Faire le pont entre designers et développeurs au Guardian

Éléments dudesign

@kaelig

Prototype

Idée Test

Page 68: Faire le pont entre designers et développeurs au Guardian

Faites le pont entreles designers

et les développeurs

Credits: Mars Climate Orbiter 2 — By NASA/JPL/Corby Waste [Public domain], via Wikimedia Commons — http://commons.wikimedia.org/wiki/File

%3AMars_Climate_Orbiter_2.jpg Rocket — NASA/Getty Images

Hipster — Cámara espía — https://flic.kr/p/cXMuEd Mug — slavik_V — https://flic.kr/p/9WgM9D

swiss style grid sample — Filipe Varela — https://flic.kr/p/4xLDb1 Gene Wilburn — A Splash of Colour — https://flic.kr/p/5VK8kv

Glasses designed by Okan Benn from the Noun Project Document designed by Jamison Wieser from the Noun Project

Edward Snowden — THE GUARDIAN/AFP/Getty Images

@kaelig