per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance...

53
Un Approccio Frameworkless per Sviluppare la tua Single Page Application

Transcript of per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance...

Page 1: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Un Approccio Frameworkless per Sviluppare la tua Single Page Application

Page 2: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Antonio Dell’Ava

frontend developerbackground in interaction design

loves cycling

Page 3: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

OUR

ideato e extrategy ora sono Flowing: una community inclusiva di persone che condividono passione per l’innovazione e bisogno costante di evoluzione. Abbiamo cocreato insieme questa nuova realtà, e insieme a chi condivide i nostri valori continuiamo a farla crescere giorno per giorno.

PEOPLE

Page 4: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

https://github.com/frameworkless-movement/

Page 5: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Peace & Love...non odiamo i framework

Page 6: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Prendere decisioni tecniche ≠ Usare il framework più di moda

Page 7: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Interfacce Application

Frontend

Page 8: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti
Page 9: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Non FunctionalRequirements

Sviluppo del Progetto

UX Business Needs

Page 10: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Non Functional Requirements

quanto durerà il software?

in quanto tempo deve essere appreso?

qual è il “ritmo” dell’interazione?

da chi deve essere utilizzato? che competenze ha?

Page 11: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Come legarli al progetto?Design System

Page 12: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Errate aspettative

“Per fare il design system devo avere una pattern library”

“Il design system è UX”

Page 13: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

The true story“ho una letteratura di interfacce che rispecchia i n.f.r., abbiamo lavorato per avere un linguaggio comune, quindi un vocabolario dei componenti mi sarà utile”

Page 14: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

14

Design SystemPattern Percettivi → Style Guide

margini

tipografiapalette di colori

navigazione

iconografia

form

layout

CTA

principi di design

governance

parametri e regole d’uso comuni

linguaggio condiviso

Pattern Funzionali → Componenti

Page 15: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

1. Principi2. Parametri e regole d’uso comuni3. Governance4. Pattern5. Pattern Library

Processo

Page 16: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Design System: Principi

➔ 3..5 frasi

➔ tutto il team coinvolto

➔ Esempio errato:“completezza e piacevolezza”

➔ Esempio corretto:“Seguire le seguenti priorità: prima completezza delle

informazioni di contesto poi piacevolezza estetica”

➔ la “prova del 9” è chiedersi “il contrario del mio principio potrebbe essere

valido per un altro design system?”

Page 17: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Design System: Parametri e regole d’uso comuni

Integrato

Restrittivo

Modulare

Flessibile

Page 18: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Design System: Governance

➔ Quale è il team? Livello di delega?

➔ Quali sono gli strumenti?

➔ Come si rendono visibili i risultati? Canali?

➔ Quali sono i riti?

Page 19: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Design System: Design Pattern

➔ [def] una soluzione progettuale

riusabile per un problema ricorrente

➔ Come? Processo induttivo da

UI+User journey a Design Pattern

http://bradfrost.com/blog/post/interface-inventory/

Page 20: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Interface inventory

http://bradfrost.com/blog/post/interface-inventory/

➔ fa emergere quanto un pattern è centrale nella consegna

di valore

Page 21: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

1. Visualizzare il flusso

http://bradfrost.com/blog/post/interface-inventory/

➔ stampare un flusso di

interfaccia

➔ taggare i componenti

in funzione dello

scopo che hanno

Page 22: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

2. Definire il Pattern e la Struttura

http://bradfrost.com/blog/post/interface-inventory/

si ritagliano e si

raggruppano elementi

simili definendo la

specificità e i contenuti

Page 23: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

3. Battezzare e documentare il pattern e varianti

http://bradfrost.com/blog/post/interface-inventory/

Page 24: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Pattern Library?

Page 25: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Framework==

una pattern librarypronta

Page 26: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

26

Design SystemPattern Percettivi → Style Guide

Variabili(custom?)

principi di design

governance

parametri e regole d’uso comuni

linguaggio condiviso

Pattern Funzionali → Componenti

Framework(esteso?)

Page 27: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

IntegrabiliCSS only Integrati

Alcuni Esempi

https://github.com/troxler/awesome-css-frameworks

Page 28: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

È per forza un male usarli?

Page 29: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Pitfalls

Page 30: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

1. Tradeoff

Page 31: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

PRO CONTRO

Framework UI

Velocity SpecificitàDebito Tecnico

Page 32: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

https://martinfowler.com/bliki/TechnicalDebtQuadrant.html

Avventato Prudente

Scelta

Involontario

“Non abbiamo tempo per

progettare”

“Cosa è la UX?”“Ora sappiamo come

avremmo dovuto farlo”

“Preferiamo accelerare e siamo consapevoli delle

conseguenze”

Page 33: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

2. Il Software soddisfa i bisogni nel tempo

Page 34: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Tempo

Ciclo di Vita del Software

Page 35: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Tempo

Ciclo di Vita del Software

MVP FEATURE 1 FEATURE N

Page 36: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Tempo

Co

no

scen

za

Page 37: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Tempo

Ciclo di Vita del Software

MVP FEATURE 1 FEATURE N

Scelta Framework

Page 38: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

4. Il frameworknon toglie il costo di allineamento

Page 39: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Tempo

Ciclo di Vita del Software

MVP FEATURE 1 FEATURE N

Dis

alli

nea

men

to

Page 40: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Alternative

Page 41: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Possibili approcci

1. “Classico”: framework frontend

react/angular/vue + SCSS

2. WebComponents

Page 42: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Esempio di Web Component

https://github.com/adellava/simple-web-components-with-manipulation

1

2

3

4

5

6

7

Page 43: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Esempio Web Component

<html>

[...]

<body>

<mydesignsystem-input-currency

name="valore-bonifico" num="889271"

label="valore

bonifico"></mydesignsystem-input-curr

ency>

</body>

</html>

import InputCurrency from "./InputCurrency/InputCurrency";

window.customElements.define(

"mydesignsystem-input-currency", InputCurrency

);

Page 44: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Esempio Web Component

class InputCurrency extends HTMLElement {

static get observedAttributes () { [ // attributi osserbabili ] }

connectedCallback () {

// render

// bind events

}

attributeChangedCallback (name) { //... sync my template }

}

Page 45: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Esempio Web Component

const emitChangeValue = (element) => {

const event = new window.CustomEvent("value-change", {

detail: () => Number.parseFloat(element.value),

bubbles: true

});

element.dispatchEvent(event);

};

Page 46: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Caratteristiche

1. Costosa

2. Compatibilità

3. Prestazioni

4. Web Standard

Page 47: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Scelta Consapevole,come si fa?

Page 48: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

quanto deve durare il software?

specificità del design system

web components+ scss

react/vue/angular+ css only framework (es.

bulma)

react/vue/angular+ scss

framework UI end to end => es. material UI

framework UI end to end => es. material UI estesa con+ react/vue/angular componenti SCSS

Page 49: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

quanto deve durare il software?

specificità del design system

web components+ scss

react/vue/angular+ css only framework (es.

bulma)

react/vue/angular+ scss

framework UI end to end => es. material UI

framework UI end to end => es. material UI+ react/vue/angular componenti SCSS

Mia App

Page 50: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

quanto il componente è centrale nella consegna del valore?

specificità del componente

web components+ scss

react/angular/vue+

scss

framework UI end to end => es. material UI

react/vue/angular+

css only framework (es. bulma)UX da rivedere?

UX da rivedere?

Page 51: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Conclusioni

Page 52: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti
Page 53: per Sviluppare la tua Single Page Application Un Approccio ...principi di design governance parametri e regole d’uso comuni linguaggio condiviso Pattern Funzionali → Componenti

Antonio Dell’Ava@creativecaos

[email protected]