49
Code utilisable Usable Software Design Johan Martinsson, développeur indépendant (BEEBUZZINESS) Margaux Perrin, UX designer (Sogilis) @JOHAN_ALPS @MARGAUXLERGO 1

Usable software design - code utilisable

Embed Size (px)

Citation preview

Page 1: Usable software design - code utilisable

Code utilisable Usable Software Design Johan Martinsson, développeur indépendant (BEEBUZZINESS)Margaux Perrin, UX designer (Sogilis)

@JOHAN_ALPS @MARGAUXLERGO1

Page 2: Usable software design - code utilisable

Comment créer les meilleures réussites business ?

A l’aide de code bien fait

A l’aide d’expériences

utilisateurs bien pensées

@JOHAN_ALPS @MARGAUXLERGO2

Page 3: Usable software design - code utilisable

Nous sommes tous des concepteurs·trices d’expérience utilisateur

@JOHAN_ALPS @MARGAUXLERGO

La clé : connaître ses utilisateurs·trices : leurs besoins, leurs problèmes Interviews Observation d’activité Tests utilisateurs Questionnaires de satisfaction

A l’échelle du code :

The user of software design is the developer

Alexandru Bolboaca

3

Page 4: Usable software design - code utilisable

Ce n’est pas la faute de l’utilisateur·trice, c’est la faute du design

Source : http://www.lsd-mag.com/blog/design-inconfortable/@JOHAN_ALPS

@MARGAUXLERGO4

Page 5: Usable software design - code utilisable

Identifier les besoins : do-goals vs be-goals

@JOHAN_ALPS @MARGAUXLERGO

Hassenzahl, 2003 : les gens perçoivent les produits interactifs selon deux dimensions :

Qualités pragmatiques

Qualités hédoniques

Capacité à soutenir l’accomplissement de « do-goals »Exemples de do-goals : passer un appel, acheter un livre…

Capacité à soutenir l’accomplissement de « be-goals »Exemples de be-goals : être compétent, être en relation avec les autres, être autonome…

La satisfaction des besoins psychologiques est au cœur de l’UX

Hassenzahl, M. (2003). The thing and I: understanding the relationship between user and product. In M.Blythe, C. Overbeeke, A. F. Monk, & P. C. Wright (Eds.), Funology: From Usability to Enjoyment (pp. 31-42). Dordrecht: Kluwer Academic Publishers. 5

Page 6: Usable software design - code utilisable

Do-goals vs Be-goals

@JOHAN_ALPS @MARGAUXLERGO

Besoin de…

Communiquer ? S’éclairer ? Se déplacer ?

Ou plutôt… Relationnel ? Autonomie, sécurité ? Stimulation, réalisation de soi ?

6

Page 7: Usable software design - code utilisable

Dans le cadre du développement

@JOHAN_ALPS @MARGAUXLERGO

Do-goals : développer sur du code existant (enrichir, débugger…) Be-goals : ?

Lallemand, C. (2015). Towards Consolidated Methods for the Design and Evaluation of User Experience. (Doctoral dissertation). University of Luxembourg. https://publicaAons.uni.lu/handle/10993/21463

Satisfaction de ces BE-goals : salarié·e·s et patron·ne·s content·e·s

7

Page 8: Usable software design - code utilisable

Grille d’évaluation

@JOHAN_ALPS @MARGAUXLERGO

Nielson (1999) : L’utilisabilité se définit à travers 5 composantes

Bastien & Scapin (1993) : 8 critères ergonomiques pour évaluer une interface homme-machine

Nielsen, J. (1994). Usability Engineering. Morgan Kaufmann Publishers. Bastien C. & Scapin D. (1993). Critères Ergonomiques pour l’Évaluation d’Interfaces Utilisateurs (version 2.1), INRIA, Technical report N° 156

8

Page 9: Usable software design - code utilisable

Identifier les problèmes de design

@JOHAN_ALPS @MARGAUXLERGO9

Page 10: Usable software design - code utilisable

Code review

@JOHAN_ALPS @MARGAUXLERGO

Analyser ce qu’on n’aime pas

10

Page 11: Usable software design - code utilisable

Interviews

Qu’est ce qui était difficile dans le dernier sprint ? Quelle partie du code était difficile à comprendre ? Où as-tu eu peur d’introduire une régression ?

Alexandru Bolboaca

@JOHAN_ALPS @MARGAUXLERGO11

Page 12: Usable software design - code utilisable

Tests utilisateurs

@JOHAN_ALPS @MARGAUXLERGO

Observer quelqu’un qui commence une story

12

Page 13: Usable software design - code utilisable

@JOHAN_ALPS @MARGAUXLERGO

Exemples…

13

Page 14: Usable software design - code utilisable

Incitation

@JOHAN_ALPS @MARGAUXLERGO

Autonomie Vie courante

Design de poignées de portes : pousser ou tirer ? USB : dans quel sens ?

Moyens mis en œuvre pour amener les utilisateurs·trices à effectuer des actions spécifiques, mécanismes faisant connaître aux utilisateurs·trices les alternatives

14

Page 15: Usable software design - code utilisable

Incitation

@JOHAN_ALPS @MARGAUXLERGO

Écrans

Voyage SNCF

Moyens mis en œuvre pour amener les utilisateurs·trices à effectuer des actions spécifiques, mécanismes faisant connaître aux utilisateurs·trices les alternatives

Autonomie

15

Page 16: Usable software design - code utilisable

Incitation

@JOHAN_ALPS @MARGAUXLERGO

Code

Moyens mis en œuvre pour amener les utilisateurs·trices à effectuer des actions spécifiques, mécanismes faisant connaître aux utilisateurs·trices les alternatives

Autonomie

16

Page 17: Usable software design - code utilisable

Homogénéité et cohérence

@JOHAN_ALPS @MARGAUXLERGO

Vie courante

Source : http://lesmoyensgrands.over-blog.com

Exercice de maternel

Choix de conception conservés pour des contextes identiques, et différents pour des contextes différents

Autonomie

17

Page 18: Usable software design - code utilisable

Homogénéité et cohérence

@JOHAN_ALPS @MARGAUXLERGO

Écrans

Facebook

Choix de conception conservés pour des contextes identiques, et différents pour des contextes différents

Autonomie

18

Page 19: Usable software design - code utilisable

Homogénéité et cohérence

@JOHAN_ALPS @MARGAUXLERGO

Code

Choix de conception conservés pour des contextes identiques, et différents pour des contextes différents

Autonomie

- Alexandru Bolboaca

19

Page 20: Usable software design - code utilisable

Compatibilité

@JOHAN_ALPS @MARGAUXLERGO

Interface adaptée aux caractéristiques des utilisateurs·trices, au contexte, aux tâches

Source : http://www.designferia.com/meubles-design-chambre-enfant-lola

Vie courante

Autonomie

20

Page 21: Usable software design - code utilisable

Wordpress : Visuel ou Texte

Compatibilité

@JOHAN_ALPS @MARGAUXLERGO

Interface adaptée aux caractéristiques des utilisateurs·trices, au contexte, aux tâches

Écrans

msPaint Adobe Photoshop

Autonomie

21

Page 22: Usable software design - code utilisable

Compatibilité

@JOHAN_ALPS @MARGAUXLERGO

Interface adaptée aux caractéristiques des utilisateurs·trices, au contexte, aux tâches

Code Autonomie

22

Page 23: Usable software design - code utilisable

Lisibilité

@JOHAN_ALPS @MARGAUXLERGO

Caractéristiques lexicales de présentation des informations

Vie courante

Compétence

23

Page 24: Usable software design - code utilisable

Lisibilité

@JOHAN_ALPS @MARGAUXLERGO

Caractéristiques lexicales de présentation des informations

Écrans

Bonnes pratiques :

Taille de police : min = 12pt, normal = 16pt

Taille des lignes : 45-75 caractères (best = 66) espaces compris

Interlignes : 1,5x la taille de la police ; entre 2 paragraphes : 1,5x l’interligne

Contraste : différence de contraste entre couleur du texte et couleur du fond : 70%

Wikipédia Wikiwand

Compétence

24

Page 25: Usable software design - code utilisable

Lisibilité

@JOHAN_ALPS @MARGAUXLERGO

Caractéristiques lexicales de présentation des informations

Code Compétence

25

Page 26: Usable software design - code utilisable

Lisibilité

@JOHAN_ALPS @MARGAUXLERGO

Caractéristiques lexicales de présentation des informations

Code Compétence

26

Page 27: Usable software design - code utilisable

Densité informationnelle

@JOHAN_ALPS @MARGAUXLERGO

Limiter le nombre d’informations présentées en même temps

Vie courante

Compétence

Tiens toi droite

Souris

Dis bonjour

Dis merci

Dis s’il te plait

Ne mets pas les coudes sur

la table

Propose ton aideNe mets pas

tes doigts dans ton nez

27

Page 28: Usable software design - code utilisable

Densité informationnelle

@JOHAN_ALPS @MARGAUXLERGO

Limiter le nombre d’informations présentées en même temps

Écrans

Cdiscount Google

Compétence

28

Page 29: Usable software design - code utilisable

Densité informationnelle

@JOHAN_ALPS @MARGAUXLERGO

Limiter le nombre d’informations présentées en même temps

Code Compétence

29

Réduire la duplication

Faire apparaître le métier

Page 30: Usable software design - code utilisable

Protection contre les erreurs

@JOHAN_ALPS @MARGAUXLERGO

Moyens pour détecter et prévenir les erreurs

Vie courante

Contrôle

30

Page 31: Usable software design - code utilisable

Protection contre les erreurs

@JOHAN_ALPS @MARGAUXLERGO

Moyens pour détecter et prévenir les erreurs

Écrans

Google Agenda

Suppression groupée dans Gmail

Contrôle

31

Page 32: Usable software design - code utilisable

Protection contre les erreurs

@JOHAN_ALPS @MARGAUXLERGO

Moyens pour corriger les erreurs

Code Contrôle

32

Encapsuler primitives

Page 33: Usable software design - code utilisable

Protection contre les erreurs

@JOHAN_ALPS @MARGAUXLERGO

Rendre impossible l’erreur

Code Contrôle

Paramètres obligatoires dans

le constructeur

33

Page 34: Usable software design - code utilisable

Feedback immédiat

@JOHAN_ALPS @MARGAUXLERGO

Réponse immédiate renseignant sur l’action accomplie et son résultat

Vie courante

Contrôle

34

Page 35: Usable software design - code utilisable

Feedback immédiat

@JOHAN_ALPS @MARGAUXLERGO

Réponse immédiate renseignant sur l’action accomplie et son résultat

Écrans

Amazon Cdiscount

Contrôle

35

Page 36: Usable software design - code utilisable

Feedback immédiat

@JOHAN_ALPS @MARGAUXLERGO

Réponse immédiate renseignant sur l’action accomplie et son résultat

Code

$ npm testExecuted 364 of 364 SUCCESS (2.663 secs)TOTAL: 364 SUCCESS

Contrôle

36

Page 37: Usable software design - code utilisable

Qualité des messages d’erreur

@JOHAN_ALPS @MARGAUXLERGO

Informations pertinentes et compréhensibles sur la nature de l’erreur et les actions à entreprendre

Vie courante

Source : http://www.forum-auto.com

Astra061 : Bonjour,En ce moment, ma voiture a un voyant qui s'allume et qui ne disparaît jamais. Il s'agit du voyant d'une voiture avec une clé. Savez vous où est ce que ça cloche ?Merci d'avance

JPR49 : bonjour,Défaut moteur. il y a un code à relever, Ce forum regorge de sujets concernant la lecture des codes.

valentin59 430 : Salut , voyant avec un clé et une voiture c'est pas l'alarme ?

td 100 : Surement une bougie de préchauffage HS si tu n'a rien remarqué comme symptômes. Néanmoins il devrait s'éteindre arrivé à 90°

Contrôle

37

Page 38: Usable software design - code utilisable

Qualité des messages d’erreur

@JOHAN_ALPS @MARGAUXLERGO

Informations pertinentes et compréhensibles sur la nature de l’erreur et les actions à entreprendre

Écrans

Google AirFrance

Contrôle

38

Page 39: Usable software design - code utilisable

Qualité des messages d’erreur

@JOHAN_ALPS @MARGAUXLERGO

Informations pertinentes et compréhensibles sur la nature de l’erreur et les actions à entreprendre

Code Contrôle

39

Page 40: Usable software design - code utilisable

@JOHAN_ALPS @MARGAUXLERGO

Résumé Apprentissage et mémorabilité :

- Inciter en proposant les alternatives

- Homogénéité et cohérence dans l’écriture

- Rendre le code compatible avec les développeurs·ses, ou l’inverse !

Efficience :

- Lisibilité des nommages

- Brièveté & densité informationnelle :

factoriser le code

Autonomie

Compétence

@JOHAN_ALPS @MARGAUXLERGO

Erreurs :

- Rendre les erreurs impossibles

- Feedback immédiat : tests

- Qualité des messages d’erreur

Contrôle

40

Page 41: Usable software design - code utilisable

Satisfaction des besoins Réussite business

@JOHAN_ALPS @MARGAUXLERGO

BE-goals :Autono

mieCompét

enceContrôl

e

RendementLassitudeFrustrationConflitsdémission

41

Page 42: Usable software design - code utilisable

1. Code écrit pour être lu2. Facile de trouver où modifier le code3. Effet de bord minimal pour chaque modification 4. Simple ET rapide de valider une modification5. Code peu dupliqué

Le besoin avant la solution

Page 43: Usable software design - code utilisable

TDD et utilisabilité? TDD

◦ Given, When, Then◦ Affirmation

@JOHAN_ALPS @MARGAUXLERGO43

Essai & erreur◦ Modifier, Démarrer, click-click-click, Observer◦ Exploration

Page 44: Usable software design - code utilisable

TDD et utilisabilité?Resources.delete()

Broadcast()

resetCurrent()

toggleSelectionMode()

Delete()

Manager.fire()

Navigator.delete()

Code smell !Shot gun surgery

@JOHAN_ALPS @MARGAUXLERGO44

Page 45: Usable software design - code utilisable

TDD et utilisabilité?

Le TDD requiert une maitrise cognitive. Si on a pas cette maitrise on a un problème d’utilisabilité. TDD est un révélateur.

@JOHAN_ALPS @MARGAUXLERGO45

Page 46: Usable software design - code utilisable

Contraintes Physiques

◦ Constructeurs, objets, …

Culturels◦ Accords d’équipe: jamais null, ..

Sémantiques◦ La connaissance métier: DDD, le métier

dans le code

Logiques◦ ???

@JOHAN_ALPS @MARGAUXLERGO46

Physiques

Culturels Sémantiques

Logiques

Page 47: Usable software design - code utilisable

First Law of Programming

Lowering quality lengthens development time.

http://wiki.c2.com/?FirstLawOfProgramming

Page 48: Usable software design - code utilisable

Take home message Ce n’est pas la faute de l’utilisateur

Nous ne sommes pas notre utilisateur tester

Besoin avant solution

Coder « utilisable »

@JOHAN_ALPS @MARGAUXLERGO

Le business a besoin de code utilisable

48

Page 49: Usable software design - code utilisable

RessourcesRéférences scientifiques• Bolboaca A. (2016). Usable software design leanpub.com/usablesoftwaredesign• Norman D. (1988). The Design of Everyday Things• Van Boven, L., & Gilovich, T. (2003). To do or to have? That is the question. Journal of Personality and Social Psychology, 85, 1193–1202.• Hassenzahl, M. (2003). The thing and I: understanding the relationship between user and product. In M.Blythe, C. Overbeeke, A. F. Monk, & P.

C. Wright (Eds.), Funology: From Usability to Enjoyment (pp. 31-42). Dordrecht: Kluwer Academic Publishers.• Lallemand, C. (2015). Towards Consolidated Methods for the Design and Evaluation of User Experience. (Doctoral dissertation). University of

Luxembourg. https://publicaAons.uni.lu/handle/10993/21463• Nielsen, J. (1994). Usability Engineering. Morgan Kaufmann Publishers. • Bastien C. & Scapin D. (1993). Critères Ergonomiques pour l’Évaluation d’Interfaces Utilisateurs (version 2.1), INRIA, Technical report N° 156

Exemples vie courante • http://lesmoyensgrands.over-blog.com• http://www.lsd-mag.com/blog/design-inconfortable/• http://www.forum-auto.com [email protected]

martinsson-johan.blogspot.fr

@johan_alps

[email protected] margaux-perrin.com

@margauxlergo