Joel on Software

Joel on Software Joël à propos de logiciel

 

La Conception d'Interface Utilisateur pour les Programmeurs
Chapitre 1
Chapitre 2
Chapitre 3
Chapitre 4
Chapitre 5
Chapitre 6
Chapitre 7
Chapitre 8
Chapitre 9

D'autres articles de "Joel on Software" en Français

D'autres articles de "Joel on Software" en Anglais

Contacter l'auteur (En Anglais uniquement)

 

La Conception d'Interface Utilisateur pour les Programmeurs
Chapitre 1: Avoir le Contrôle de Votre Environnement Vous Rend Heureux


Par Joël Spolsky
Traduit par Jean-Marc Dubois
Vérifié par Ziad Wakim
Le 10 avril 2000

La majorité des programmeurs purs et durs que je connais déteste programmer une interface utilisateur (IU). Je trouve ça surprenant car, pour moi, programmer une IU est facile, simple… et distrayant.

C'est facile parce qu'il n'y a généralement pas besoin d'algorithme plus complexe que centrer un rectangle sur un autre. C'est simple parce que si vous faites une erreur, vous la voyez et la corrigez immédiatement. C'est distrayant, parce que le fruit de votre travail est immédiatement visible. Vous avez la sensation de sculpter le programme de vos mains.

Je pense que la plupart des programmeurs ont peur de programmer une IU parce qu'ils craignent de concevoir une IU. Pour eux, la conception d'une IU c'est comme la conception graphique : un processus mystérieux dans lequel s'engagent des créatifs tout de noir vêtus, avec d'intéressants piercings et buvant des expressos à longueur de journées, pour produire un matériau artistique au look hyper cool. Les programmeurs se voient avec un esprit logique et analytique : forts en raisonnement mais sans jugement artistique. Donc ils pensent qu'ils ne peuvent pas faire de la conception d'IU.

En fait, je trouve la conception d'IU plutôt facile et plutôt logique. Ce n'est pas une chose mystérieuse pour laquelle il faut sortir des Beaux-Arts et avoir un penchant pour les cheveux violets. Il y a une manière rationnelle d'aborder les interfaces utilisateur, à l'aide de quelques règles simples et logiques, que vous pouvez utiliser partout pour améliorer les interfaces des programmes que vous réalisez.

Je ne vais pas vous livrer le "traité du zen et de la conception d'IU". Ce n'est pas un art, ce n'est pas du bouddhisme, ce ne sont que quelques règles. Une manière de penser logiquement et méthodiquement. Ce livre est conçu pour les programmeurs. Je considère que vous n'avez pas besoin que j'explique comment faire une barre de menu, mais vous avez besoin de réfléchir à ce que vous allez mettre dans cette barre de menu (ou si vous allez seulement en mettre une). Le premier axiome que je vais vous appendre est la base de toute bonne conception d'IU, et il n'est pas le moins du monde difficile à apprendre.

Mon premier vrai boulot était dans une grande boulangerie industrielle. La boulangerie était conçue pour six chaînes de production de pain. Il y avait une pétrisseuse pour deux chaînes. Chaque pétrisseuse produisait des boules de pâte de 180 kg, qui partaient à droite ou à gauche :

Enfin... c'était conçu comme ça. En réalité, la pétrisseuse C n'était pas encore construite, ni les chaînes 3 et 5. Donc c'était disposé comme ceci :

Le lecteur attentif se demande déjà comment la pâte allait de la pétrisseuse B à la chaîne 6. Eh bien, c'est là qu'intervenait le p'tit Joël. Mon boulot était d'être posté à gauche de la pétrisseuse B, de récupérer l'énorme boule de 180 kg de pâte qui dégoulinait de la pétrisseuse dans une cuve à roulettes, de faire rouler la cuve jusqu'à la chaîne de production 6, et, à l'aide d'une sorte de treuil, de soulever la pâte jusque sur la chaîne 6. Je devais faire cette opération toutes les dix minutes, de 22 heures à 4 heures.

Il y avait d'autres difficultés. La chaîne 6 ne pouvait pas gérer 180 kg de pâte en une seule fois, aussi devais-je la découper en 10 morceaux à l'aide d'un couteau géant. Je ne veux même pas détailler à quel point c'était absurde et dur.

Les premiers jours j'étais bien sûr complètement nul. Cela me semblait impossible. Tous les os de mon corps me faisaient mal. J'avais des ampoules sur ampoules. Des parties de mon corps, dont j'ignorais jusque-là l'existence, me faisaient atrocement mal.

Au début je ne pouvais tout simplement pas approvisionner en pâte la chaîne 6 de manière continue. À chaque coupure du flot de pâte, il y avait un trou sur la chaîne "d'assemblage". Quand ce trou arrivait au four, celui-ci (utilisant une quantité fixe d'énergie pour cuire une petite portion de pâte) commençait à chauffer plus, et brûlait le pain. Parfois la chaîne 6 s'encrassait et la production s'arrêtait, mais la pétrisseuse continuait de produire de la pâte pour moi, et je courais le risque de ne pas avoir assez de cuves à roulettes pour stocker la pâte. Lorsque cela arrivait, je devais nettoyer et huiler le sol et laisser couler la pâte sur le sol pour la récupérer plus tard. Non pas que cela soit très efficace, parce qu'au bout de 30 minutes la pâte fermentait, ce qui n'était pas bon pour le pain. Si cela arrivait, il fallait en faire des boules de 5 kg à remettre une à la fois dans les pétrins suivants.

Après à peu près une semaine j'étais suffisamment rodé pour avoir, si mes souvenirs sont bons, deux minutes de repos à chaque cycle de 10 minutes. J'avais trouvé un rythme parfait et appris à faire sauter un pétrin à la pétrisseuse lorsque la chaîne de production s'arrêtait.

Et j'ai commencé à me demander pourquoi certains jours sont meilleurs que d'autres, comme on dit au Café du Commerce.

Un jour, alors que je réfléchissais à cela, je me suis aperçu que l'une des cuves à roulettes avait des roues déglinguées qui ne tournaient pas bien. Parfois cette cuve n'allait pas où je la poussais et fonçait dans des objets. C'était une petite frustration. Parfois, en tirant la chaîne pour soulever la cuve, je me râpais - un tout petit peu - avec une écharde en métal sur la chaîne. Une autre petite frustration. Parfois, comme je courrais avec une cuve vide pour attraper une émission de pâte sur le point de sortir de la pétrisseuse, je glissais sur une petite tache d'huile. Pas assez pour tomber, pensez-vous ! C'était juste une petite, toute petite frustration.

D'autres fois, je gagnais d'infimes victoires. J'ai appris à régler à la perfection la production de pâte : la nouvelle fournée arrivait quelques secondes avant que la précédente ne se termine. La pâte était aussi fraîche que possible, et donnait le meilleur pain. Certaines victoires étaient encore plus infimes : je repérais une petite boule de pâte qui avait sauté de la pétrisseuse jusque sur le mur, je la décrochais avec le couteau de peintre que j'avais toujours dans ma poche et je la jetais dans la poubelle. YESSSS ! Quand je découpais la pâte en morceau, c'était parfois vraiment parfait et facile. J'avais de courts instants de satisfaction, quand je maîtrisais le monde qui m'entourait, même d'un petit rien.

C'est comme ça que les jours s'écoulaient : une poignée de petites frustrations, et une poignée de petits succès. Mais ils s'additionnaient. Même quelque chose qui semble être une minuscule frustration sans conséquence, modifie votre humeur. Vos émotions ne tiennent pas compte de l'amplitude d'un événement, seule compte sa qualité.

Et j'ai commencé à comprendre que les jours où j'étais le plus content étaient les jours avec beaucoup de petits succès et peu de petites frustrations.

Des années plus tard, à l'université, j'ai découvert une importante théorie psychologique appelée "résignation acquise" et développée par le Dr Martin E. P. Seligman. Cette théorie, confortée par des années de recherche, dit qu'une dépression provient en grande partie d'un sentiment d'impuissance, de l'impression que vous ne pouvez pas contrôler votre environnement.

Plus vous avez l'impression que vous pouvez maîtriser votre environnement, et que ce que vous faites marche, plus vous êtes de bonne humeur. Si vous êtes frustrés, en colère, et hors de vous, c'est probablement parce qu'il est arrivé quelque chose que vous n'avez pas pu maîtriser : même quelque chose d'insignifiant. La barre d'espace de votre clavier ne marche pas correctement. Quand vous tapez, certains mots se retrouvent collés les uns aux autres. C'est frustrant car vous appuyez sur la barre d'espace et rien ne se passe. La clé de votre porte d'entrée ne marche pas bien. Quand vous essayez de la tourner, elle se coince. Une autre petite frustration. Ces choses s'additionnent ; chaque jour ce sont elles qui nous mettent de mauvaise humeur. Bien qu'elles semblent trop infimes pour qu'on s'y attarde (Quand je pense qu'il y a des gens qui meurent de faim en Afrique, pour l'amour de Dieu, je ne peux pas m'emporter pour une barre d'espace !), il n'en demeure pas moins qu'elles changent notre humeur.

Arrêtons-nous une minute et retournons aux ordinateurs.

Imaginons l'utilisateur expérimenté type de Windows : Pete. Quand vous réfléchissez à une interface utilisateur, il est plus facile d'avoir à l'esprit des utilisateurs imaginaires. Plus cet utilisateur imaginaire est réaliste, plus il vous sera facile de réfléchir à la manière dont il utilise votre produit. Pete est comptable chez un éditeur technique, et utilise Windows, depuis 6 ans au bureau et depuis peu à la maison. Il a de bonnes compétences et en connaît les aspects techniques. Il installe lui-même ses logiciels, il lit PC Magazine, et il a déjà programmé des macros Word simples pour aider les secrétaires de son entreprise à envoyer les factures. Il est en train de s'équiper d'un accès internet par le câble. Pete n'a jamais utilisé de Macintosh. "C'est trop cher," dit-il. "Vous avez un PC à 700 MHz avec 128 Mo de RAM pour le prix de..." D'accord, Pete. On a compris.

Un jour Gena, la copine de Pete, lui demande de l'aider avec son ordinateur. En ce moment, Gena a un iBook, parce qu'elle aime son boîtier translucide. Pete s'assoit et tente d'utiliser le Macintosh. Il se sent rapidement frustré. "Je hais cette chose", dit-il. Il parvient enfin à aider Gena, mais il est renfrogné et de mauvaise humeur. "Les Macintosh ont une interface vraiment trop tordue."

Tordue ? De quoi parle-t-il ? Tout le monde sait que les Macintosh ont une interface utilisateur parfaite, n'est-ce pas ? Le paradigme même de la simplicité d'utilisation.

Voilà comment j'explique ce mystère.

Sur un Macintosh, pour déplacer une fenêtre, il suffit de faire glisser n'importe quel bord de la fenêtre avec la souris. Avec Windows, vous devez faire glisser la barre de titre. Si vous faites glisser un bord, vous redimensionnez la fenêtre. Quand Pete aidait Gena, il a essayé d'agrandir une fenêtre en faisant glisser le bord droit. Toute la fenêtre a bougé a lieu de s'agrandir comme il s'y attendait : et une frustration.

Avec Windows, quand une boîte de message s'ouvre, vous pouvez taper entrée ou la barre d'espace pour fermer la boîte. Sur un Mac, la barre d'espace n'a aucun effet. Un clic de souris est généralement nécessaire. Quand Pete voyait des alertes, il tentait de les fermer en utilisant la barre d'espace, comme il fait inconsciemment depuis ces six dernières années. La première fois, rien ne s'est passé. Sans même s'en rendre compte, Pete a enfoncé la barre d'espace plus fort, car il a imaginé que le Mac n'avait tout simplement pas enregistré sa frappe. En fait si, mais il l'a ignorée ! Pour finir, il a utilisé la souris. Une autre petite frustration.

Pete a aussi pris l'habitude d'utiliser Alt+F4 pour fermer une fenêtre. Sur un Mac, Alt-F4 change le volume. À un moment donné, Pete a voulu cliquer l'icône d'Internet Explorer sur le bureau, alors qu'elle était en partie cachée par une autre fenêtre. Donc il a appuyé sur Alt-F4 pour fermer la fenêtre et, sans attendre, double-cliqué là où aurait dû se trouver l'icône. La combinaison Alt-F4 a augmenté le volume de l'ordinateur, et n'a pas fermé la fenêtre. Ainsi son double-clic a-t-il été fait sur le bouton d'aide dans la barre d'outils de la fenêtre qu'il voulait fermer. Une fenêtre d'aide s'est donc immédiatement ouverte, et il s'est alors retrouvé avec deux fenêtres à fermer.

Encore une petite frustration. Oui, mais qui s'additionne aux autres. À la fin de la journée, Pete est renfrogné et en colère. Quand il essaye de contrôler les choses, elles ne réagissent pas. La barre d'espace et la combinaison de touches Alt-F4 ne marchent pas - à tous égards il semble que ces touches sont cassées. La fenêtre ne lui obéit pas quand il essaie de l'agrandir, mais lui joue un tour en se déplaçant. Une bien méchante fenêtre. Même si tout cela est inconscient, la sensation subtile que les choses restent immaîtrisables, se transforme en impuissance, qui devient de la mauvaise humeur. "J'aime mon ordinateur," dit Pete. "Je l'ai réglé pour qu'il marche exactement comme je le veux. Mais ces Macs sont stupides et durs à utiliser. C'est un entraînement à la frustration. Si Apple avait travaillé sur MacOS pendant toutes ces années, au lieu de perdre son temps avec le Newton, leur système ne serait pas un tel bins."

C'est vrai, Pete. Nous comprenons mieux. Ses sentiments naissent bien que le Macintosh soit réellement facile à utiliser - pour des utilisateurs de Mac. La touche que vous devez appuyer pour fermer une fenêtre est choisie de manière arbitraire. Les programmeurs de Microsoft, qui ont semble-t-il copié l'interface Mac, ont vraisemblablement pensé qu'ils ajoutaient une nouvelle fonctionnalité agréable en permettant de redimensionner la fenêtre en tirant sur n'importe quel bord. Les programmeurs de MacOS 8.0 ont vraisemblablement pensé qu'ils ajoutaient une nouvelle fonctionnalité agréable en vous permettant de faire glisser la fenêtre à partir de n'importe quel bord.

La majorité des guerres de tranchées que l'on lit sur les interfaces utilisateur se concentre sur des choses sans intérêt. Windows est mieux parce qu'il propose plusieurs façons de redimensionner les fenêtres. Et alors ? C'est sans intérêt. L'intérêt est : est-ce que l'IU réagit à l'utilisateur de la manière dont l'utilisateur s'y attend ? Si ce n'est pas le cas, l'utilisateur va se sentir impuissant et sans contrôle, tout comme je me sentais quand les roulettes de la cuve de pâte ne tournaient pas vers où je poussais et fonçaient dans le mur. Bing !

L'IU est primordiale car elle affecte les sentiments, les émotions et l'humeur de vos utilisateurs. Si l'IU est mauvaise et que l'utilisateur sent qu'il ne peut pas maîtriser votre programme, il va véritablement être malheureux, et il va en tenir responsable votre programme. Si l'IU est agréable et que tout fonctionne comme l'utilisateur imagine que ça marche, il sera joyeux à chaque petit objectif maîtrisé. Hé, j'ai découvert un cédérom ! Il marche ! Joli programme ! Waouuuuuu !

Pour rendre les gens heureux, vous devez leur donner la sensation qu'ils maîtrisent leur environnement. Pour cela, vous avez besoin d'interpréter correctement leurs actions. L'interface doit réagir comme ils s'attendent à la voir réagir.

D'où l'axiome principal de la conception :

Une interface utilisateur est bien conçue quand le programme se comporte exactement comme l'utilisateur le pensait.

Comme l'a dit Hillel, tout le reste n'est que commentaire. Toutes les autres règles pour réussir la conception d’une IU ne sont que des corollaires.



> Chapitre 2

Cet article est paru en version originale anglaise sous le titre User Interface Design for Programmers Chapter 1: Controlling Your Environment Makes You Happy  

Joël Spolsky est le fondateur de Fog Creek Software, une petite société éditrice de logiciel située à New York. Il est diplômé de l'Université de Yale et a travaillé comme programmeur et manager chez Microsoft, Viacom et Juno.


Le contenu de ces pages représentent l'opinion d'une personne.
Contenu protégé par le copyright ©1999-2005 par Joël Spolsky. Tous droits réservés.

FogBUGZ | CityDesk | Fog Creek Software | Joel Spolsky