Développeurs déficients visuels : nos possibilités et difficultés - RMLL 2014

  • Titre : Développeurs déficients visuels : nos possibilités et difficultés - RMLL 2014
  • Intervenants : Shérab et Irina Lambla
  • Lieu : Montpellier
  • Date : 10 juillet 2014
  • Durée : 35 minutes
  • Média : Lien vers la vidéo
  • Transcription

    Shérab : Je voulais raconter quelques trucs que je trouvais sympas dans ces RMLL, d'abord. Ce sont des révolutions en cours que je trouve chouettes. Il y en a une, c'est que, vous avez peut-être remarqué que les handicapés commencent à parler d'autre chose que d'accessibilité, et je trouve ça chouette, parce que finalement si on ne parlait que de ça, il y aurait un côté un peu, alors c'est bien, mais c'est un peu stigmatisant. Et le complémentaire, on a pu observer à la conférence d'avant, qu'il y a des non-handicapés qui parlent d'accessibilité. Et ça aussi c'est cool, je trouve.

    Et la prochaine révolution que j'espère, c'est que les handicapés se mettent de plus en plus à devenir des développeurs. Et il y a plusieurs raisons pour lesquelles je trouverais ça chouette. D'abord parce que finalement ce sont les mieux placés pour savoir ce dont ils ont besoin. Souvent c'est nous qui avons les difficultés, donc si on a la compétence pour les résoudre, c'est nous qui pouvons vraiment faire les outils peut-être les plus adaptés. Ensuite parce que, si on y arrive, ça veut dire qu'on va devenir acteurs des solutions qu'on utilise, donc plus seulement des consommateurs mais des acteurs à part entière. Et moi je trouve que c'est complètement aligné avec la philosophie du libre, et avec, oui, finalement une société non consumériste, que je souhaite.

    Et aussi, parce que je trouve que parfois dans l'accessibilité il y a un côté, comment dire, genre on pourrait s'imaginer qu'il y a ceux qui la font, et il y a ceux pour qui on la fait. Et alors du coup, voilà, on fait de l'accessibilité parce que « vous comprenez, ces pauvres handicapés ». Bon ! Comme on l'a dit déjà dans les conférences sur le thème, c'est pas si simple puisqu'il y a des gens qui sont valides et qui peuvent en avoir besoin, soit parce qu'ils vieillissent, soit parce que les accidents de la vie font qu'ils en ont besoin. Ça c'est une première chose qui casse cette barrière, et une deuxième c'est que les principaux concernés fassent eux-mêmes l'accessibilité, et là on sera dans un monde où cette barrière n'existera plus.

    Donc maintenant, je vais vous raconter ce qu'on peut faire et ce qui est difficile, de mon point de vue de personne qui ne voit pas du tout. Et ensuite je pense qu'Irina fera la même chose pour les personnes qui voient mal.

    Donc déjà, en termes de ce qu'on développe, on va dire qu'on peut classer les applications en trois :

    1. les applications en ligne de commande, et les bibliothèques (librairies)

    2. les applications à interface graphique

    3. et les applications web.

    Quand on développe une application en ligne de commande, ce n'est pas mal parce qu'on peut tout tester. Donc ça c'est quelque part le cas idéal, mais même dans ce cas-là , il y a quand-même des choses qui sont difficiles.
    Par exemple, il y a des choses auxquelles on n'a pas accès, et c'est assez frustrant. Notamment, par exemple vous savez, il existe des débogueurs qui affichent les données de manière graphique. Par exemple des listes de listes de listes, on est capable de faire une représentation de ça, dans laquelle on peut se déplacer rapidement. Par exemple y a un truc qui s'appelle DDD, ça doit être "Data Display Debugger", ou un truc comme ça. Eh bien moi j'ai toujours été frustré de ne pas avoir accès à un truc comme ça, parce que finalement, même dans mes trucs en ligne de commande, quand j'ai des listes chaînées à déboguer, je pleure. Je suis sous GDB, et je vois des pointeurs, et ce n'est pas facile, quoi. Donc ça c'est le genre d'applications qui manquent.

    Ensuite, bien évidemment, quand on fait des applications avec interface graphique, on ne peut pas soi-même exactement se rendre compte de comment ça se passe. Donc que ce soit d'ailleurs sur ordinateur ou téléphone mobile, ce n'est pas un truc qu'on peut faire de manière complètement autonome. Il existe des solutions, un peu partielles, comme par exemple des environnements qui permettent de développer par contraintes. Donc on dit voilà, telle chose on aimerait l'afficher à tel endroit, on donne des poids aux contraintes, et en gros, en fonction de ces poids, le système se débrouille pour répartir les choses au mieux, mais ça ne vaudra quand même jamais la validation par un voyant.

    Et la même chose est vraie pour les applications web où c'est la galère. Déjà parce qu'on ne sait pas, on ne se rend pas compte si visuellement c'est bien ou pas. Mais même au-delà de ça, c'est beaucoup moins facile, pour nous, par exemple, de savoir, c'est quoi la propriété CSS à tel endroit du document. En fait c'est beaucoup moins facile pour nous que pour quelqu'un qui voit. Moi je ne connais pas d'équivalent à tout ce qui est Developer tools, en fait l'ex extension Firebug de Firefox, par exemple, on n'a pas l'équivalent. Et je me suis laissé dire que dans Chrome c'était même mieux. Et tout ça on ne l'a pas, donc c'est galère.

    Autre chose qui est difficile, c'est quand on fait du développement réseau, ou même toujours pour le développement web, quand on a par exemple un site web qui communique avec un autre web service et tout ça, on peut, souvent c'est facile avec un truc comme Ethereal (Wireshark) de regarder les flux. Hop, on se balade, on regarde tel flux, qu'est-ce qui s'est passé, on clique sur tel autre. Nous on n'a pas ça en fait. Donc on fait du TCPdump. Après il existe des programmes, qui savent reconstituer les flux. Mais franchement c'est tout sauf pratique. Donc pour le moment, ça c'est super dur.

    Un autre point, qui est difficile, je trouve, c'est tout ce qui a trait au travail collaboratif, parce que là on retombe dans tout ce qui est accessibilité du web, avec par exemple github, qui n'est, à mon sens, pas hyper accessible. C'est-à-dire que, dans une des présentations précédentes, cette après-midi, on a entendu qu'en fait forker un dépôt c'était juste un clic de souris, merger une branche c'était juste un clic de souris. Peut-être, mais quand on n'a pas de souris, eh bien non, ce n'est pas comme ça ! Donc ça c'est un peu galère !

    Idem les systèmes de gestion de tickets, à la Redmine et tout ça. Il commence à y avoir des interfaces en ligne de commande pour Redmine. Mais moi je trouve que globalement, même si c'est un peu accessible, j'ai vraiment l'impression que ça reste dur d'être aussi efficace que quelqu'un qui voit. C'est peut-être un film que je me fais, mais je pense que sur un projet où y a beaucoup de bugs, beaucoup de choses, c'est dur.

    Alors que par exemple, a contrario, je n'ai pas du tout cette impression pour la gestion d'e-mails avec Mutt, par exemple. J'ai l'impression que je suis aussi efficace, et parfois même plus, que quelqu'un qui voit. Alors peut-être je me fais des films, mais voilà. C'est un retour d'expérience, donc évidemment il y a une part de subjectivité.

    Autre outil à la mode qui est compliqué pour nous ce sont les pads, où on écrit à plusieurs. On est carrément sur le bord du chemin, avec ces trucs-là. En tout cas, moi j'en ai pas encore trouvé, que je pouvais utiliser de manière confortable.

    Sinon donc un autre point, ouais, je précise qu'il y a quand-même des choses qu'on peut faire, je veux dire tout ce qui est utiliser Emacs ça marche très bien, je ne voudrais pas avoir l'air de donner une impression sombre du tableau. Mais, finalement quand j'ai réfléchi à ce que je voulais raconter, ce qui m'est venu c'est surtout les trucs un peu compliqués, quoi.

    Sinon autre chose qui peut être difficile, c'est la documentation. Pour développer on a besoin d'accéder à de la documentation. Parfois c'est facile, quand elle est sous forme textuelle, peu importe le format, que ce soit du LaTeX, du TexInfo, du Markdown ou autre, c'est facile. Modulo, parfois la navigation dans la doc n'est pas toujours simple. Parfois, ce n'est pas facile quand ce sont des images, des choses graphiques, « on voit bien sur la figure que », non en fait ! S'il n'y a pas d'alternative on ne voit pas !

    J'ai aussi un peu remarqué qu'il y avait pas mal la mode des tutoriels vidéos. Et bien c'est frustrant, parce qu'on sent que non seulement on n'y a pas accès, mais en plus on sent que pour ceux qui y ont accès, ça va être super efficace, ça va leur donner en peu de temps beaucoup d'informations. Donc quelque part ça peut donner l'impression que ça creuse un peu le fossé. Ce n'est pas pour dire qu'il ne faut pas le faire ; c'est plutôt pour se demander ce qu'on peut trouver comme alternative pour que nous, on ne soit pas trop lésés.

    Et puis dans le même ordre d'idées, ça a un peu émergé là pendant les RMLL, enfin je m'en suis souvenu, les conférences, on ne suit pas, enfin c'est dur. Par exemple, les conférenciers souvent disent "on voit bien que ce code-là, est plus efficace que celui-là", eh bien , sans doute ! Donc là, ce sont peut-être des points où on peut améliorer les choses en fait. Si les personnes peuvent garder présent à l'esprit que tout le monde ne voit pas leurs slides, peut-être qu'elles auront naturellement la tendance à dire « on voit bien que la fonction », je ne sais pas moi, « unetelle est plus efficace parce que ceci ». Du coup on pourra mieux comprendre.

    Je voulais aussi parler de « accessibilité n'est pas efficacité ». C'est-à-dire que, parfois il y a des choses qui nous sont accessibles, mais où on n'est vraiment pas aussi efficaces que les autres. Je l'ai déjà un peu dit. Un autre exemple, ce sont les environnements, les EDI, les IDE plutôt, à la X-code mais on pourrait citer Eclipse, c'est pareil. Oui, certes, on y accède, mais le temps d'explorer les représentations graphiques à l'écran, c'est compliqué. Donc c'est vrai que dans ce contexte-là, sous Linux on est bien, parce que les choses souvent sont faites de façon assez modulaire, et on a envie d'encourager les gens à faire les choses de manière vraiment la plus modulaire possible, pour qu'on puisse au moins se créer des Front-end alternatifs et autres, et qu'on ne soit pas obligé d'utiliser tout un gros environnement d'une manière un peu mono-bloc.

    Qu'est-ce que j'ai d'autre à vous raconter ? Comme je viens de le dire, c'est vrai que c'est pratique quand c'est modulaire, néanmoins, souvent on est quand même obligés de bricoler pour accéder à des choses. Comme je le disais pour le web, moi j'ai participé au projet France Université Numérique, qui est une plate-forme de MOOCs. Quand je devais reproduire des bugs liés à l'interface web c'était vraiment compliqué, donc je me retrouvais à exécuter des gros curls, qui allaient simuler mes actions utilisateur, parce que je ne pouvais pas faire autrement. Donc, c'est quelque chose qui est assez compliqué. Je n'ai pas de réponse sur comment on peut simplifier ça, mais je partage un peu ça ici, pour que si il y en a qui ont des idées, ça les fasse émerger.

    Et donc voilà un peu plus ou moins, ce que moi j'avais à vous dire. Donc, je vais passer la parole à Irina. Pour qu'elle puisse à son tour... À moins que vous ayez envie de poser des questions maintenant, en fait je sais pas.

    Irina : Merci de me passer la parole. Je suis Irina Lambla, je suis malvoyante et j'essaie de développer un peu. J'ai testé différentes choses pendant mes études, ou comme ça, personnellement. J'ai remarqué que, effectivement tous les environnements, IDE, frameworks, tout ça, ce n'est souvent pas évident. Ou alors ce n'est pas accessible du tout, ou alors c'est un peu accessible, mais on n'arrive pas à se déplacer dans certaines choses, on est quand même obligé de cliquer à la souris pour se déplacer dans certaines zones par exemple. Et souvent aussi les couleurs ne peuvent pas être modifiées ou ne sont pas bien adaptées et donc, ça fait assez rapidement mal aux yeux quand on essaye de regarder pour chercher quelque chose.

    Donc, j'ai remarqué que souvent, quand on fait les choses en ligne de commande, ça passe beaucoup mieux, ou avec un traitement de texte. Par exemple, moi j'utilise Notepad++, et même si je ne vois pas bien, j'aime bien quand-même avoir la coloration syntaxique, parce que ça aide beaucoup. Surtout quand c'est du code que quelqu'un d'autre a fait, pour s'y retrouver. Ensuite, une fois que j'ai fait mes petits codes, je les compile en ligne de commande, je peux relire les erreurs, je peux récupérer la commande que j'ai faite juste avant, etc. Et en général, ça fonctionne plutôt bien !

    Par exemple, j'ai acheté un Arduino récemment, et il y a un IDE, comme ça, qu'on peut lancer pour les débutants où il suffit de cliquer sur des boutons pour lancer. Alors, premièrement au niveau synthèse vocale, ça ne fonctionne pas du tout. La synthèse vocale, c'est un logiciel qui va vocaliser ce qu'il y a à l'écran, et donc on pourra entendre là où on navigue, et quand il y a des infos qui changent. Donc, ça, il est complètement muet ! Et deuxièmement il y a un joli fond blanc. Alors il y a beaucoup de gens qui aiment bien, mais personnellement ça me fait mal aux yeux, donc j'ai laissé tomber. Alors, je me suis dit, il doit y avoir une autre solution, et en deux après-midis j'ai un peu fouillé. Sur Internet j'ai trouvé des tutoriels, et puis comme c'était des anciennes versions, j'ai dû un peu trifouiller dans les fichiers pour essayer de voir finalement quels fichiers ont changé, quelles lignes modifier pour que ça marche !

    Je suis aussi un peu allée sur IRC pour demander de l'aide, et ils ont été très gentils, ils m'ont aidé. Donc, par exemple ça, ça peut être une aide intéressante, quand on a besoin d'informations aussi. Et résultat, en deux après-midis, j'ai réussi à compiler mes programmes, donc à rajouter quelques lignes dans le code C, qu'il n'y a pas quand on passe par le logiciel, à modifier les chemins des bibliothèques qui ne se compilent pas ; je me suis fait une petite bibliothèque sympa, avec tout ce qu'il faut dedans. Et maintenant, je n'ai plus besoin de faire que 4 petites lignes de commandes, et hop ça marche. Je peux faire clignoter ma LED, ou n'importe, piloter des capteurs, etc, appuyer sur l'interrupteur, voilà.

    Donc pareil, si je veux faire des programmes, en C ou en Python. D'ailleurs j'ai remarqué que pour le Python c'est pratique, parce que dans Notepad++ il y a un raccourci clavier, on appuie sur une touche, et hop ça compile. Bon, parfois il faut rajouter un chemin parce qu'il ne trouve pas certains dossiers, mais c'est super !

    Effectivement pour le web, c'est un peu plus compliqué. Par exemple pour faire les CSS, moi je vois un peu le résultat, donc j'ai une idée, à peu près, de ce que ça donne. Mais premièrement c'est beaucoup plus long, parce que je dois me concentrer pour voir les détails. Et deuxièmement, effectivement il y a des choses que je ne vois pas. Par exemple, sur mon site, je pensais que c'était tout joli et tout ! Et puis finalement quelqu'un m'a dit : « Ah ton image, elle est vachement pixelisée », et je ne l'avais même pas remarqué ! Parce que je ne le vois pas. Pour moi ce sont des détails qui passent inaperçus. On m'a aussi dit : « Tiens, telle couleur, ça ne va pas ! », alors que moi je ne pensais pas que ça dérangeait, Moi, ce sont d'autres couleurs qui ne me vont pas ! Donc, chacun ses difficultés, finalement.

    Après effectivement, pour naviguer dans le code, c'est peut-être un peu plus long, parce que, on ne peut pas juste jeter un coup d’œil, et hop, mais ça va, comme la synthèse vocale lit rapidement, on peut quand même s'y retrouver assez facilement.

    Sous Linux, j'ai aussi utilisé Gedit, comme traitement de texte. Ça fonctionne aussi pas mal. On m'a dit qu'il y a aussi d'autres solutions. Souvent pour compiler d'ailleurs, ce sont les mêmes lignes de commande, sous Windows et sous Linux. Par exemple, pour Arduino, il n'y a presque rien qui change, il y a quelques chemins et puis comment on nomme les prises USB, mais sinon on s'y retrouve assez facilement. Donc ça c'est bien, c'est l'avantage de la ligne de commande.

    Ensuite, par rapport aux tutoriels, effectivement quand ce sont des tutoriels sur des pages web, ce n'est pas mal, on arrive à les lire. Mais bon souvent ce qui est embêtant, c'est que maintenant c'est la mode de rajouter plein de trucs. Alors on a de la pub, on a un petit rappel, on a des liens pour aller je sais pas où, on a des petits machins Twitter, Facebook, machin bidule truc, etc, des liens pour aller vers tous les chapitres, etc. Le temps qu'on arrive à retrouver le début de ce qu'on a envie de lire, parfois ce n'est pas pratique. Des fois on en a un peu marre de relire à chaque fois le même début de page ! Voilà !

    Ensuite il y a parfois des tutoriels PDF. Alors là ça dépend comment ils sont écrits. Il y a des PDF qui sont bien lisibles, il y a des PDF qui sont moyennement lisibles, par exemple les accents qui ne passent pas, ou les espaces qui sautent, ou on a l'impression que chaque mot est à la ligne, des choses comme ça, ce n'est pas pratique. Parfois, il y a des PDF qui sont carrément totalement illisibles !

    Et comme disait Shérab, les vidéos ce n'est pas évident. On peut écouter ce qui est dit, mais comme on ne voit pas ce qui est fait sur son ordinateur, c'est pas évident. Parfois aussi sur les tutoriels en page web, il y a aussi des images, alors, si l'image est là juste en illustration c'est bon, si par contre il faut aller regarder dans l'image, ça peut être long et ça peut-être difficile.

    Qu'est-ce que je pourrais encore expliquer ? Oui, je voulais parler encore, à propos de la ligne de commande. Donc sous Windows, le petit problème que j'ai c'est que je ne peux pas faire copier/coller tranquillement, je suis obligée de prendre la souris, de cliquer avec le clic droit, et de chercher coller, par exemple, pour mettre ma ligne de code, ça c'est un peu bof. Alors que sous Linux, on peut facilement faire copier/coller avec le raccourci, c'est quand-même mieux ! Voilà. Donc il est quelle heure ? Il est quarante-cinq. Moi souvent j'aime bien faire des copier/coller parce que retenir tout par cœur, ce n'est pas évident. Donc, il faut s'habituer au début à la façon dont le lecteur d'écran va lire le code, parce que je pense que si je vous faisais écouter, ça vous ferait bien rigoler ! Voilà. Qu'est-ce que je pourrais dire encore ? Est-ce que vous avez des questions ?

    Auditeur : Je me demandais comment se sont passées vos études d'informatique, en fait, par rapport au développement ?

    Irina : Je dirais, j'ai réussi au final à obtenir mes examens, avoir des notes pas trop mal, mais globalement ce n'était pas génial, enfin c'était difficile. Par exemple, si je parle de l'année où j'ai fait de l'informatique, il y avait des TP où on était censé apprendre à installer Linux, et le professeur ne savait pas qu'il existait des installations accessibles. Donc moi, pendant 4 heures, j'étais là et j'attendais que les autres fassent leur installation, moi j'étais assise là et j'avais rien à faire, ce n'était pas drôle. Après il m'a dit : « Je te donne un document, tu vas apprendre par cœur ce qu'il faut faire », ouais bon. Heureusement, il a oublié de me faire passer l'interro (interrogation), j'étais bien contente. Sinon, pour certains cours j'ai eu de la chance, il y a certains enseignants qui m'ont donné leurs cours. Donc j'ai pu les lire. Il y a eu aussi les cours de maths qui étaient difficiles, comme il y a plein de formules, ça ne passe pas trop au lecteur d'écran, j'ai dû regarder et il a fallu que je change les couleurs pour que ça ne me fasse pas mal aux yeux, etc.

    Ça dépend vraiment de qui on a comme professeur, s'il est d'accord de nous donner les documents, en quel format il a fait ses documents, s'il les a fait en PDF, parfois c'est lisible, parfois pas ! Parfois, c'est plein de schémas, par exemple les bases de données, ce sont des schémas avec des flèches, des cases, des trucs dans tous les sens. Là il faut quand-même du temps. Parfois on n'a carrément rien, alors, il faut essayer de recopier le cours du voisin, ou essayer de récupérer des feuilles écrites à la main où même quelqu'un qui voit n'arrive pas à lire ; et passer des week-ends à recopier les cours, parfois, c'est pas top. Parfois, on vous dit « mais allez à la bibliothèque, allez lire le bouquin ! ». Ouais. Alors, déjà rien que pour trouver quel bouquin c'est, à quelle page, ce n'est déjà pas évident, Après faut le scanner, etc. Ce n'est pas évident. Oui, Shérab, tu voulais apporter un complément ?

    Shérab : Oui, c'est pour dire qu'effectivement, si on regarde ce que font les aveugles dans la vie, il y en a peu qui font sciences, beaucoup vont en lettres parce que c'est plus facile, plus accessible. Donc, c'est vrai que si on veut des développeurs aveugles, il y a un travail en amont à faire sur l'accessibilité des cursus. Il y a des choses qui sont de l'ordre technique, rendre accessible un schéma, par exemple en informatique, les arbres, ça joue un rôle central ! Comment est-ce qu'on rend accessible un arbre ? Ce n'est pas compliqué, parce qu'il suffit, quelque part, d'en dessiner un en relief, et une fois qu'on connaît un arbre, on les connaît tous, on pourrait dire.

    Et il y a d'autres difficultés qui sont plus d'ordre politique, et non technique ! Irina parlait de livres, beaucoup de livres existent sous forme électronique, de plus en plus, et en fait on ne peut pas y accéder pour des raisons de copyright et autres. C'est souvent possible, par négociation avec l'auteur, d'obtenir des livres, ses manuscrits, en version par exemple LaTeX ou autre, mais ça reste quand même extrêmement artisanal ! C'est parce que le prof qu'on a connaît l'auteur ou autre, qu'on arrive a avoir les livres dont on a besoin. Les choses ne s'améliorent pas quand on fait de la recherche.

    Irina : Et souvent, quand on demande une transcription d'un bouquin, en général le temps qu'il est transcrit, on n'en a plus besoin, on est déjà passé à autre chose.

    Shérab : En tout cas, effectivement, souvent les gens qui développent, c'est quand-même des gens qui ont fait des études d'informatique. Il existe des gens qui ont appris le développement en autodidacte, mais c'est rare. Et du coup c'est vrai que pour donner accès au développement logiciel, l'un des prérequis c'est de donner accès au cursus. Et ça, c'est un gros travail, à la fois technique et, on va dire, beaucoup de sensibilisation.

    Irina : Voilà ! Moi, pendant mon année d'informatique, quand je ne comprenais pas quelque chose dans un cours, j'allais chercher un tutoriel, plutôt que d'essayer de lire le cours à moitié illisible, je me disais que ça irait plus vite. Donc, heureusement qu'il y a des tutoriels quand-même !

    Shérab : Il existe des gens qui croient que faire des ressources inaccessibles, ça les protège du piratage.

    Irina : Alors qu'en fait ce n'est pas vrai du tout.

    Shérab : Ce n'est pas vrai. Par exemple, j'ai suivi un cours là sur France Université Numérique, et donc, tous les transparents étaient sous forme de PDF images. J'ai demandé au prof pourquoi il avait fait ça. Il m'a dit c'est parce que, s'il y a des gens qui veulent me copier, ça sera plus dur pour eux, au moins ils devront taper tout le texte.

    Grognements du public.

    Irina : Voilà ! Il y a des professeurs aussi qui m'ont dit « je ne veux pas te donner mon cours, parce qu'il risque d'y avoir des fautes dedans ! Donc c'est mieux que je ne te donne rien du tout, plutôt que de risquer que quelqu'un me dise, ah tu as fait une faute là »