L'écran du programmeur

Il ne faut à mon avis jamais négliger l’importance d’un bon écran pour un programmeur. C’est le genre d’affirmation qui aura sans doute un goût d’évidence pour beaucoup de personnes dans l’informatique, peut-être moins pour les autres, mais il semble en tout cas que c’est le genre de règle que personne ou presque ne suit. Combien d’entreprises estiment qu’un écran d’entrée de gamme, qu’un 19″ est suffisant pour n’importe quel développeur ? Depuis que j’ai eu la chance de travailler avec un écran de 24″ au bureau, ce qui pourrait passer pour un luxe me semble aujourd’hui le minimum acceptable, et un critère dans l’évaluation du sérieux d’une entreprise.

Si vous êtes un bricoleur du dimanche, lorsque vous avez besoin d’outillage, il est vraisemblable que l’entrée de gamme soit suffisante, et même adaptée. Pour un professionnel tel qu’un électricien ou un plombier, ce matériel est son outil de travail : il est impensable d’utiliser de l’entrée de gamme, il lui faut du matériel de pro, celui qui est solide, de qualité et en conséquence, cher. Il lui faut le haut du rayon. Toute autre gamme sera inadaptée, car ces outils ne lui permettront pas de travailler correctement.

Il en va de même pour un programmeur. Son écran est son outil de travail. Le programmeur n’est certes pas un professionnel de l’image et n’a donc pas besoin d’un écran à 2500€ avec un rendu de couleurs qui tient compte du temps de chauffe. Mais un 19″ n’est pas suffisant pour autant. Qu’une entreprise fasse travailler ses développeurs avec quoi que ce soit de moins de 22″ est même très révélateur : c’est considérer qu’ils peuvent se contenter d’outils de bricoleur du dimanche.

Pourquoi cela, pourquoi ce parallèle avec la plomberie ? Un écran est un écran, et on n’use pas un écran comme on use un tournevis ou un coupe-tuyau. Serait-ce un simple caprice consistant à estimer que la taille et le prix de la machine doivent être à la mesure de son égo ? Évidemment pas, d’autant que vu à quel point les écrans de très bonne qualité sont devenus abordables, il en faudrait plus pour flatter l’ego d’un programmeur. :-)

Tout d’abord un écran plus grand permet d’afficher plus grand : cela signifie moins de fatigue oculaire et donc une plus grande capacité de travail. Comme dans beaucoup de métiers (malheureusement serais-je tenté d’ajouter) un programmeur passe la journée devant un écran, à réaliser des tâches qui demandent une forte concentration. Réduire toute source de fatigue périphérique permet de mieux se focaliser sur sa tache.

Ensuite un écran plus grand permet d’afficher simultanément plus de choses, notamment plus d’applications. Un programmeur passe typiquement sa journée à manipuler un nombre élevé d’entre elles: son éditeur, le programme qu’il est en train de développer, la sortie ou les logs du programme, l’outil de debug, le terminal (quand ce n’est pas une demi douzaine d’instances de ce dernier), l’explorateur de fichiers, la documentation, le navigateur web… Il ne travaille bien entendu pas avec tous en même temps, ce qui serait d’ailleurs contre productif étant donné que l’on se concentre mieux sur une chose à la fois, mais couramment avec deux ou trois en parallèle. Suivre à la fois éditeur, programme, sortie et debug est classique par exemple. Plus l’écran est grand, plus il permet de mettre ces applications côte à côte et moins il est nécessaire de jongler entre les fenêtres de ces programmes.

Enfin un écran plus grand permet d’afficher plus de texte. Parmi tous l’éditeur est sans doute l’outil que le programmeur utilise le plus, puisque son travail consiste en résumé à y écrire, mais aussi lire, du code. Bien qu’il soit de bonne pratique de travailler sur du code concis – fonctions courtes, fichiers courts – il n’est pas rare de travailler sur des fichiers de quelques centaines de lignes. Un tel fichier ne peut être affiché dans son intégralité, et ce serait vain du fait de la quantité trop importante d’informations assenée. Afficher une partie conséquente du fichier permet néanmoins de donner du contexte visuel facilitant la localisation d’éléments et d’éviter de devoir défiler en permanence. De plus quelque soit le projet, pour une tâche donnée, il est courant de devoir manipuler simultanément au moins deux et souvent trois fichiers différents, quand ce n’est pas beaucoup plus. Avec un grand écran il est possible d’afficher simultanément plusieurs fichiers tout en gardant ce contexte visuel. Il n’est alors plus nécessaire de jongler entre ces fichiers à chaque fois que l’on cherche une information, mais simplement de déplacer le regard.

Même le plus doué des jongleurs de raccourcis clavier avec une configuration de gestionnaire de fenêtre soignée aux petits oignons ne tient pas la comparaison en terme de vitesse face à quelqu’un à qui il suffit de déplacer le regard.

En conclusion le coût d’un écran de taille décente, ou même de plusieurs d’entre eux, est vraiment risible devant le gain en productivité pour un programmeur qui doit passer l’essentiel de son temps dessus. Si vous n’êtes pas convaincu, je vous invite à lire d’autres arguments et exemples qui me donnent même l’impression d’être encore très modéré.

Le graphiste

Entre le jeu vidéo et le développement d’applications plus classiques j’ai eu l’occasion de travailler avec un certains nombre de graphistes, et de remarquer comme certains traits se retrouvent souvent chez cette espèce. Aujourd’hui j’ai envie de me faire plaisir, et de vous raconter : le graphiste.

À ceux qui ne me connaissent pas, mon métier est programmeur. Si vous ne situez pas ce que c’est, je vous renvoie à cette phrase d’un game-designer de Blizzard qui résumait la création d’un jeu vidéo :

Programmers make the game run, artists make it beautiful, but it is the designer’s job to make it fun.

Les programmeurs font marcher le jeu, les graphistes le rendent beau, mais c’est au game-designer de le rendre sympa.

En tant que programmeur, on peut être amené à beaucoup communiquer avec des graphistes, et c’est amusant car ce sont deux espèces qui n’ont pas la même apparence, pas la même culture, pas la même approche et qui ne parlent pas la même langue. :-)

Le graphiste se reconnaît d’abord à son allure. Alors que la tenue vestimentaire du programmeur évolue plutôt depuis le jean et teeshirt lorsqu’il est jeune diplômé, vers un habillement dit classique à l’approche de la trentaine, pantalon de ville et chemisette avec peut-être encore quelques référence à la culture geek, le graphiste au contraire est tout droit sorti d’une affiche publicitaire. Coupe de cheveux tendance, pantalon décontracté à la découpe moderne, attributs corporels divers : bracelets, piercings, éventuellement paire de chaussures hors du commun, etc. Attention, ce n’est pas du punk brutal : c’est plus subtil et sophistiqué, même si c’est parfois proche du personnage de jeux vidéos.

Ensuite le graphiste à besoin d’un environnement très particulier pour travailler. Outre la tablette graphique, on reconnaît sans hésitation son bureau à l’écosystème qui s’y est rapidement développé : affiches, Nintendo DS et boites de jeux vidéos, livres d’artworks, feuilles de brouillon avec des dessins esquissés (souvent de grande qualité), figurines et autres objets improbables en nombre et tailles variées (qui peuvent aller jusqu’au dragon de 30cm d’envergure posé sur l’écran). Le graphiste a en effet besoin d’une sollicitation visuelle importante pour être productif.

La salle du groupe de graphiste est normalement bruyante ; c’est ce qui la rend parfaitement incompatible avec l’environnement du programmeur. Le graphiste a besoin d’un flux continu de conversations pour pouvoir travailler. Séparez un graphiste de son groupe pour le mettre dans le bureau austère et silencieux (selon des critères de graphiste) des programmeurs et il va vite montrer des signes de dépression. Mettez au contraire un programmeur dans la salle des graphistes et il ne pourra tout simplement plus travailler du tout.

Le chef des graphistes se reconnaît à la taille de son écran. Son titre est D.A. : il est craint et respecté. Beaucoup rêvent d’être lui car c’est lui qui décide de l’orientation du style graphique, et c’est quand même plus sympa que de faire des textures d’herbe à longueur de journée.

Comme pour les chasseurs, en terme de talent, il y a le bon graphiste et le mauvais graphiste. Quand le bon graphiste vient vous poser une question tout en s’occupant les mains avec une feuille qui traîne sur votre bureau, la feuille termine au mur de votre bureau. Si par chance vous êtes un programmeur très sollicité par un bon graphiste, rapidement les autres programmeurs deviennent jaloux de votre mur. Quand le mauvais graphiste vient vous voir, vous vous retenez de lui expliquer que son animation de personnage qui court est complètement ratée parce que ça ne servirait à rien.

Le graphiste parle une langue différente. Le graphiste expérimenté utilisera sans pitié des termes techniques de typographie ou de composition. Dans un tel cas soit vous vous serez déjà documenté sur le sujet, soit vous aurez affaire à un graphiste pédagogique, soit vous serez largué. Le graphiste peu expérimenté mettra à peu près tout et n’importe quoi derrière une liste relativement courte de mots tels que « flou », « shader », « glow »… et vous aurez toutes les peines du monde à comprendre ce qu’il essaie de vous dire en graphiste. De temps en temps le graphiste essaiera de vous emprunter votre vocabulaire technique mais pour y mettre d’autre chose, et vous devrez penser à traduire.

Le graphiste est étranger à l’idée de système de gestion de versions. C’est normal qu’il ne connaisse pas : les outils de production ne sont pas son domaine de compétence. Mais là je ne dis pas qu’il ne connaît pas, j’insiste sur le fait qu’il y est étranger. Vous aurez beau lui expliquer le principe, le fait que ça permet de retrouver n’importe quelle version précédente d’un fichier pour lui éviter d’avoir à s’en préoccuper, lui montrer comment on s’en sert : vous trouverez régulièrement sur votre dépôt des fichiers texture_backup.png et texture_backup2.png. Vous verrez également fleurir des fichiers créés automatiquement tels que les thumbs.db de Windows, lorsque le graphiste aura tout ajouté automatiquement sans vérifier.

Le graphiste n’accorde d’ailleurs pas la moindre importance aux noms de fichiers et sera incapable de respecter toute règle de nommage quelle qu’elle soit. Le nom d’un fichier créé par ses soins est fonction de son inspiration du moment, et a de fortes chances de changer s’il doit un jour apporter une modification. Vous verrez donc facilement un fond.png à côté d’un background.jpeg et d’un bg_bleu.png, qui seront en fait la même ressource. Il faut être attentif. Souvent c’est votre projet lui même qui vous signalera les nouveautés, non pas parce que vous verrez de nouvelles choses apparaître, mais parce que vous verrez apparaître des choses qui ne marchent pas. Expliquez lui qu’il lui suffit de placer un objet nommé « mine » dans le monde pour avoir une mine créée à cet emplacement, et vous trouverez rapidement tout un tas de « Mine », « mines », « mine1 », « mine_bleue » et autres preuves de créativité. Oubliez l’idée d’essayer de lui expliquer que l’outil d’import ne peut pas deviner ce qu’il voulait faire : faire un outil d’import qui devine ce qu’il voulait faire vous prendra moins de temps. C’est la conclusion à laquelle je suis arrivé en voyant un de mes collègues essayer l’une, puis l’autre méthode.

Le graphiste n’accorde pas non plus d’importance à l’aspect technique. En cela que ce n’est pas son travail, je le soutiendrais entièrement, s’il avait des outils lui permettant de s’abstraire de cet aspect. Mais ce n’est pas le cas : ses outils lui permettent d’exporter dans un luxe possibilités de formats parmi lesquels le choix risque fort d’être arbitraire. Le graphiste vous sortira sans problème une photo en PNG, un aplat en JPEG, des images monochromes en RGBA et des textures dans des résolutions absolument obscènes aux limites techniques des cartes graphiques pour des éléments qui ne feront que quelques pixels à l’écran. Paradoxalement, il pourra vous enseigner malgré lui des détails techniques fort intéressants sur ces formats. C’est par exemple quand un graphiste m’a envoyé une image au format PNG de près de 1Mo pour moins de 500 par 500 pixels que j’ai découvert que ce format gérait les calques : le fichier contenait les dix versions de l’image…

La rigueur dans le positionnement des éléments est étonnamment fluctuante chez le graphiste. Lors de la création d’une interface un peu jolie par exemple, il appartient au graphiste de faire les différentes version d’un bouton (normal, appuyé, sélectionné…) ou d’une fenêtre (active, en arrière plan…) pour ne citer que ces éléments. Les différentes versions venant s’afficher au même endroit selon l’état de l’élément. Naturellement en tant que programmeur, il vous semblera évident que ces versions doivent être calées au pixel près. Si vous travaillez avec un graphiste qui fait des éléments de la même taille et correctement alignés, prenez en soin, c’est un spécimen rare.

Mais à l’inverse, si le graphiste imagine un élément textuel et vous propose un exemple réalisé avec Photoshop, que les astres vous protègent si vous n’avez pas les moyens techniques de reproduire le résultat exactement à l’identique ! L’affichage de texte est d’ailleurs un thème de désaccord très récurrent entre graphistes et programmeurs. Lorsque le graphiste doit imaginer un élément textuel, il se transforme en maquettiste : les images viennent s’agencer et s’aligner autour pour un résultat le plus esthétique possible. Malheureusement il oubliera immanquablement de tenir compte de l’aspect dynamique de ce texte, à l’instar de sa composition. Qu’il s’agisse d’un compteur et il vous proposera un exemple avec deux chiffres qui ne marchera plus avec un ou trois chiffres, ou pire, il vous dessinera des chiffres ne feront pas tous la même largeur, donnant un résultat atroce une fois animé. Qu’il s’agisse de mots, et vous pourrez lire dans ses yeux toute la frustration du monde lorsque vous lui rappellerez que dans la version allemande son texte sera trois fois plus long et ne rentrera pas dans l’espace qu’il a prévu.

Mais pour le coup, dans ce cas là vous pourrez pleurer avec lui d’en être réduits à faire un truc moche et aller noyer votre chagrin ensemble dans le pub en bas du bureau.