Tag - affordancetrompeuse

Entries feed - Comments feed

Sunday 16 July 2023

Affordance trompeuse : le design

Ici nous parlerons de l'anglicisme qui a récemment bouleversé l'organisation de nos projets informatiques, et pas le fameux germanisme du dit Sein. Pas besoin de philosopher sur l'être pour savoir dans le cas présent qu'on est passé à côté de quelque chose. Surtout qu'à la place de cet être, on se rapproche du néant. Mais trêve d’existentialisme, le design est aujourd'hui synonyme de conception, on peut tout designer, tout concevoir, il suffit de faire appel aux bons designers, dont l'arme principale va être la facilitation graphique, ou le maquettage visuel. Ceci est doublé d'un autre mouvement, celui de la mise en avant de l'apparence, car dans le monde moderne, peu importe le fond, si la forme n'est pas séduisante, l'autre ne découvrira pas le contenu. Même si c'est le travail de l'autre de découvrir et d'acquérir le dit contenu. De là à dire que le professionnel moderne se comporte en amateur ? C'est une question que l'on va laisser pudiquement en suspens. Le designer est donc devenu la personne incontournable de toutes les étapes préalables à la réalisation, voire même selon certains indispensable à l'étape de l'assurance qualité, car qui d'autre qu'un designer peut être capable de contrôler la mise en œuvre d'un design ? Mais laissons cette fantaisie reposer tranquillement en prenant un pas en arrière.

Qu'est-ce que la conception ? Pourquoi avons-nous besoin de concevoir ? D'analyser ? Est-ce que ne ça ne ferait pas partie des notions que l'Agile a rendu caduque ? Le principe de la conception est de travailler au niveau du concept, de l'idée, de la représentation mentale d'une chose. Imaginer quelque chose c'est d'abord concevoir l'image de cette chose. Difficile de collaborer directement sur une représentation mentale, il faut en effet pouvoir la communiquer aux autres. La conception est aussi par extension le résultat de la transmission de cette représentation mentale, par des mots, par des schémas, par des sons... par tout ce qui peut susciter la recréation de cette représentation mentale.

Au mot design on associe traditionnellement la notion de visuel, souvent non fonctionnel, c'est-à-dire qui ne participe pas directement au fonctionnement de la chose. Est-on dans le vrai ou ne serait-ce qu'une déformation ? Demandons à la businessophonie : premier recensement en 1350–1400 ; de l'anglais moyen designen, du latin dēsignāre “marquer (d'une manière distinctive) / représenter / dessiner”. Si le verbe anglais to design a en effet dérivé vers l'activité de conception, voire de planification, il n'en est pas de même du verbe passé de mode to conceive, qui lui a gardé sa proximité avec to imagine. Ce rapprochement avec la planification et cet éloignement avec les représentations mentales font que ce design moderne est plus proche du dessin en tant que tel que comme vecteur de concepts. Si tout dans les phases amont à la réalisation se réduit au design, à des piles de dessins anonymes sans idées ou fonctions sous-jacentes, alors il n'y a plus de conception.

Peux-t-on concevoir sans représentation graphique, sans dessin ? C'est tellement difficile que les débats sur la schématisation dans l'informatique, souvent pour exprimer les concepts sous forme de modèles, sont permanents ces (au moins) soixante dernières années. Et il faut constater qu'arriver à un bon schéma demande très souvent un peu de compétences en design.


Vous pouvez trouver le reste de la série sous l'article d'introduction.

Sunday 4 June 2023

Affordance trompeuse : la refactorisation

Une affordance trompeuse assez légère, presque anecdotique, mais qui faisait parti de la liste d'origine de cette série.

Parlons refactorisation, ou plutôt parlons de l'abus de l'usage du terme. De nos jours, toute modification de code sans perspective d'évolution fonctionnelle est régulièrement appelée refactorisation, parce qu'il est connu qu'il y a eu une écriture initiale en des temps immémoriaux, et qu'il n'advient subséquemment qu'une suite sans fin de refactorisations pour l'amener vers la fameuse qualité. D'ailleurs Ward Cunningham n'a-t-il pas parlé lui-même de la refactorisation comme outil de remboursement de la dette technique ? Il le fait, a raison, parce que c'est Ward, il en a le droit.

Faisons un petit tour par l'origine du terme factorisation : il nous vient des mathématiques, plus précisément de l'algèbre, et il signifie l'opposé du terme développement. Coïncidence ? Beauté d'un vocabulaire spécifique à un domaine ? Poésie de l'informatique ? Sans rentrer dans les détails de la distributivité, on peut donner quelques exemples accessibles : 35 + 45 = 5 x (7 + 9), le 5 a été mis en facteur ; 18 + 24 = 3 × (6 + 8) = 6 × (3 + 4) = 2 × (9 + 12). Toutes ces formes sont strictement équivalentes, elles représentent le même nombre. Cela fonctionne aussi en l'exprimant sous la forme d'un dérivé de l'algèbre nouvelle : (a + b)² = a² + b² + 2 × a × b, cette forme factorisée à gauche, et développée à droite, est tellement remarquable qu'elle fait partie de la famille des identités remarquables. Remarquable non ? Bref, l'intérêt du principe de factorisation c'est que cela fonctionne, quelles que soient les valeurs auxquelles ont l'applique, car c'est le principe même de mise en facteur qui est rigoureusement prouvé.

Les anglophones sont donc partis sur cette thématique d'effectuer une nouvelle mise en facteur du code, d'abord afin de le compacifier et d'éviter les doublons, puis pour désigner toute opération de restructuration que l'on n'a pas vraiment besoin de tester pour savoir qu'elle ne changera pas le comportement du logiciel. Et il leur ont donné le nom de refactoring, non pas en référence à l'usine factory, encore moins à la fabrication to manufacture et à l'usinage to machine, mais bien à la mise en facteur to factor. Mais ça, les québecois sont complètement passés à côté en proposant réusinage, sans doute pour se caler sur les français proposant le cache.

Les techniques de refactorisation, qui par nature garantissent l'absence de modification du comportement, ne peuvent donc être que très précisément définies et en nombre relativement restreint. Et pourtant le terme est devenu synoyme avec le temps de n'importe quelle opération de retravail du code. Qui va s'en plaindre me direz-vous, à part quelques puristes sycophantes comme moi-même ? Dans ce cas précis, c'est une personne que nous avons déjà rencontré dans cette série sur les affordances trompeuses, en la personne de Martin Fowler. Le livre Refactoring : improving the design of existing code écrit par celui-ci est sorti en 1999, et a grandement contribué à faire connaître ces techniques, et est considéré par certains comme la bible sur la refactorisation. Oui, le même Martin Fowler qui a détruit toute la valeur de la métaphore de la dette technique, se plaint du mésusage du terme refactoring dans cet article de 2004. On peut y lire :

Je réalise que je suis sans doute en train de mener un combat perdu d'avance, mais je veux préserver la précision de la définition de la refactorisation. Il peut y avoir d'autres bonnes techniques pour restructurer, mais elles sont différentes. J'aimerais que nous soyons tous au clair sur ce que cela signifie quand nous utilisons ce mot.

Ah Martin, si seulement tu savais !


Vous pouvez trouver le reste de la série sous l'article d'introduction.

Sunday 9 April 2023

Affordance trompeuse : les bonnes pratiques

À travers la porte-fenêtre je vois le ciel bleu et le Soleil briller ; et pourtant, le terrain est glissant. Les bonnes pratiques sont devenues en effet une coquille d'abalone, un outil chamanique nécessaire, et jugé souvent suffisant, qui va magiquement mettre de l'ordre dans votre vie professionnelle. Qui n'a jamais vu ces petits prospectus promettant l'argent, la chance, le bonheur, les bonnes pratiques et le retour de l'être aimé ?

Dans l'imaginaire des entreprises il existe deux catégories : le bon professionel et le mauvais professionel. Le mauvais professionel pratique son métier, alors que le bon professionel pratique son métier, mais bien, parce qu'il a les bonnes pratiques. C'est la différence primaire entre les deux catégories, et, quelque part, c'est l'évidence même. Qui souhaite réellement être mauvais ? Qui ne veut pas bien exercer son métier ? Personne ! L'avidité de bonnes pratiques devient une démonstration de professionalisme, un marqueur du rayonnement de sa posture par rapport au fameux état de l'art. On ne peut blâmer les gens pour leur bonne pratique volonté, et il doit y avoir quand même quelque chose derrière ces mots, de moins magique, moins incantatoire.

Dave Snowden a créé en 1999 le cadre conceptuel Cynefin sur les épaules des géants, c'est-à-dire en suivant les bonnes pratiques de la recherche de ces domaines scientifiques. Dans ce cadre conceptuel, il définit cinq contextes décisionnels : clair, compliqué, complexe, chaotique et... confus. Le contexte décisionnel clair est caractérisé par une situation stable, et des relations de cause à effet simples ; dans un tel cadre, on peut déterminer quelles sont les meilleures pratiques. Pas les bonnes pratiques, les meilleures. Parce qu'entre deux façons de faire, deux façons d'agir, deux façons de modifier le contexte, comme les relations de cause à effet sont connues, alors ont peut déterminer quelle est la meilleure des deux. Dans le contexte décisionnel compliqué, la situation est connue, mais les relations de cause à effet ne sont pas immédiatement accessibles : il n'y a pas une bonne réponse immédiate, et encore moins une meilleure. On peut néanmoins dans un tel contexte décisionnel analyser plus finement la situation, avoir une évaluation prospective des prises de décision possible, et éventuellement arriver à cataloguer un certain nombre de prises de décisions types en fonction de l'analyse affinée : on entre ici dans le domaine des bonnes pratiques. Ce ne sont pas les meilleures pratiques dans le sens où l'on n'a pas la certitude de ne pas avoir mieux quelque part (sinon on serait dans le domaine clair), mais néanmoins le domaine est suffisamment connu pour dire que dans ce contexte, c'est pas pire (bitte comme disent les germains) de faire de comme ça mon petit bonhomme.

La foule qui est arrivée jusqu'ici s'exclamera que les bonnes pratiques existent donc bien et que je pinaille. Bien sur que non, aucune foule n'étant arrivée jusque là. Le problème ne se situe pas dans l'existence des bonnes pratiques, mais dans la croyance que d'en recevoir une liste va nous faire entrer dans le cénacle de l'expertise. Une bonne pratique a des conditions d'applicabilité, des limitations, des effets secondaires. Une bonne pratique s'active après une phase de diagnostic. Une bonne pratique c'est un médicament intellectuel.

Une bonne pratique, ça n'est pas automatique.


Vous pouvez trouver le reste de la série sous l'article d'introduction.

Saturday 4 March 2023

Affordance trompeuse : informaticien

 Ingénieur informaticien, je suis ingénieur informaticien, j'aime les ordinateurs, Windows 98 

Cette comptine a peut-être bercé vos jeunes années, et construit chez vous cette image de l'informaticien, si proche de la machine qu'il en est à la limite des troubles du spectre autistique. Il est souvent vu comme un codeur ou pire, comme la personne qui sait y faire avec ces choses-là, désignant par cette expression ce nouvel espace ésotérique de la cyberfantasy, qui va vraisemblablement dominer le monde avec ses IA, un monde résolument incompréhensible et qui fait peur... enfin tous les machins avec de l'électricité et des boutons en somme.

L'informaticien ne serait là-dedans qu'un vague initié, gravissant les premières marches le rapprochant sans jamais pouvoir l'atteindre du prochain GADLU ? Comme nous l'avions vu dans LA DATA, normalement non, il n'y a pas de magie dans l'informatique, mais tentons un autre prisme que cette définition institutionnelle. Prenons par exemple l'excellent Que sais-je sobrement intitulé  L'informatique  par Pierre Mathelot de 1969. Année éro... intéressante dans le sens où elle nous a laissé le temps de nous éloigner de la mécanographie pour vraiment entrer dans l'ère de l'ordinateur. Que nous dit Pierre ?

L'informatique peut être définie comme la science du traitement logique et automatique du support des connaissances et des communications humaines, à savoir : l'information. Ce qui veut dire que l'informatique comprend tout à la fois et de manière indissociable, les moyens du traitement et leur fonctionnement, les méthodes de traitement, et l'étude des domaines d'application.

Puis plus loin.

Les machines ont conduit à la création de nouvelles catégories de professionels. On peut distinguer cinq catégories : 

  • les perforateurs et les opérateurs (niveaux voisins de celui de l'ouvrier spécialisé) qui assurent la perforation des cartes et des bandes et le fonctionnement des divers organes de la machine ;
  • les programmeurs (niveau voisin de celui de l'étudiant en propédeutique) qui, comme leur nom l'indique, écrivent les programmes ;
  • les analystes et les chercheurs (niveaux voisins de celui des étudiants diplômés des universités et des grandes écoles) qui pour mission de concevoir les organigrammes et d'élaborer et maintenir les outils de base que sont les systèmes et les langages.

A la vérité, le métier d'informaticien (pour utiliser une dénomination plus générale) s'introduit de façon complémentaire dans tous les domaines où des hommes, aujourd'hui, doivent penser leurs problèmes, en les confrontant aux méthodes et aux moyens nouveaux qui leur sont offerts, et dont nous avons parlé au chapitre précédent.

Si le mot  information  n'apparaît pas en tant que tel dans  analystes et chercheurs , la trame sous-jacente est bien là, tellement évidente qu'elle n'est pas rappelée : l'informaticien travaille sur tout le spectre de l'information qui va de la conception jusqu'au matériel ; l'information support de la connaissance et des communications. Ce point étant éclairci, il reste comme d'habitude des problèmes aux interfaces, aux frontières : le DATA ANALYST est-il avant l'information, et ne serait donc pas un informaticien ? Ou ne pourrait-on pas considérer que le DATA ANALYST d'aujourd'hui ne travaille déjà plus sur des données mais directement sur de l'information ?


Vous pouvez trouver le reste de la série sous l'article d'introduction.

Tuesday 27 December 2022

Affordance trompeuse : la Cyber

Notre monde est complètement cyber : cybermafia, cyberporn, cybersécurité, cybertrafic de drogue, cyberécologie, cybermarchands d'arme ; il était donc logique que les ESN et autres cabinets de conseil (ce qui n'a rien à voir avec la petite bibliothèque dans vos toilettes) s'engouffrent dans la brèche.

D'où vient ce mot à consonnance anglophone, qu'on prononcera d'ailleurs volontiers saille-beurre ? La première réponse est que cela vient de cybernétique, et tout de suite, cela sonne moins anglophone. La première vie de ce mot vient de Ampère, oui, le même que celui de l'intensité du courant électrique. Ampère écrivait dans la seconde partie de son Essai sur la philosophie des sciences :

Les relations de peuple à peuple, étudiées dans les deux sciences précédentes, ne sont que la moindre partie des objets sur lesquels doit veiller un bon gouvernement ; le maintien de l'ordre public, l'exécution des lois, la juste répartition des impôts, le choix des hommes qu'il doit employer, et tout ce qui peut contribuer à l'amélioration de l'ordre social, réclament à chaque instant son attention. Sans cesse il a à choisir entre diverses mesures celle qui est la plus propre à atteindre le but ; et ce n'est que par l'étude approfondie et comparée des divers éléments que lui fournit, pour ce choix, la connaissance de tout ce qui est relatif à la nation qu'il régit, à son caractère, ses mœurs, ses opinions, son histoire, sa religion, ses moyens d'existence et de prospérité, son organisation et ses lois, qu'il peut se faire des règles générales de conduite, qui le guident dans chaque cas particulier. Ce n'est donc qu'après toutes les sciences qui s'occupent de ces divers objets qu'on doit placer ici celle dont il est question et que je nomme Cybernétique, du mot χυϐερνετιχή, qui, pris d'abord, dans une acceptation restreinte, pour l'art de gouverner un vaisseau, reçut, chez les grecs même, la signification, tout autrement étendue, de l'art de gouverner en général.

En deuxième lettre de ce χυϐερνετιχή on reconnaît bien sûr un upsilon, qui en majuscule s'écrit ϒ, et qui en fonction du contexte se prononcera u ou y, ou v. Ou f. C'est important le contexte. Le kappa initial a pour translitération la lettre k, mais, il est arrivé pour le grec ancien d'avoir la lettre c à la place : "cyber", "kuber", c'est du pareil au même, juste une histoire de cartographie entre alphabets.

Plus tard et de manière indépendante apparaît dans les années 40 le mot cybernetics dans Cybernetics: or Control and Communication in the Animal and the Machine de Norbert Wiener :

Nous avons décidé d'appeler l'ensemble du domaine de la théorie du contrôle et de la communication, que ce soit chez la machine ou chez l'animal, par le nom de "Cybernétique", que nous formons du grec "χυβερνήτης" ou "timonier". En choisissant ce terme, nous souhaitons reconnaître que le premier article significatif sur les mécanismes de rétroaction est un article sur les gouverneurs, qui a été publié par Clerk Maxwell en 1868, et que "gouverneur" est dérivé d'une corruption latine de χυβερνήτης. Nous souhaitons également faire référence au fait que les moteurs d'assistance de direction d'un navire sont en effet l'une des formes les plus anciennes et les mieux développées de mécanismes de rétroaction.

We have decided to call the entire field of control and communication theory, whether in the machine or in the animal, by the name "Cybernetics", which we form from the Greek "χυβερνήτης" or "steersman". In choosing this term, we wish to recognize that the first significant paper on feedback mechanisms is an article on governors, which was published by Clerk Maxwell in 1868, and that "governor" is derived from a Latin corruption of χυβερνήτης. We also wish to refer to the fact that the steering engines of a ship are indeed one of the earliest and best-developed forms of feedback mechanisms.

C'est le retour du fameux Kubernetes ou timonier / pilote ; et le passage par le latin nous apprend que kuber- et gouver- c'est le même combat. On voit donc que dans le monde scientifique, le cyber / kuber c'est une question de gouvernance, voire de pilotage. Pour une entreprise de conseil, la cyber devrait donc s'incarner dans les prestations de conseil opérationnel et de gestion du changement. La cybersécurité, quel rapport avec la choucroute ?

Arrive 1982 et la nouvelle Burning Chrome par William Gibson.

That meant we were clearing fiberoptic lines with the cybernetic equivalent of a fire siren, but in the simulation matrix we seemed to rush straight for Chrome's data base.

L'équivalent cybernétique d'une alarme à incendie ? C'est ce qu'on appelle un signal tout simplement, rien de bien compliqué. Sauf si "cybernetic" est utilisé de façon trompeuse, ou que l'auteur utilise son droit d'artiste à jeter des mots au hasard. Mais est-ce vraiment un hasard ? Qu'en dit l'auteur ? Il s'est justement exprimé à ce sujet en 2013, et on peut voir l'extrait significatif ici, où il parle de son arène, du monde dans lequel allaient se passer ses histoires de science-fiction, à une époque où on délaissait le "space opera".

J'ai commencé à entendre parler de personnes qui connectaient des ordinateurs à distance avec des téléphones et parce que, heureusement, je ne connaissais absolument rien aux ordinateurs, j'ai été capable de mélanger tout ça et d'avoir cette vague vision de mon arène pour laquelle j'avais alors besoin d'un nom qui claque. Dataspace ça n'allait pas marcher et Infospace non plus mais Cyberspace... ça sonnait comme si cela signifiait quelque chose ou que cela pourrait signifier quelque chose... mais alors que je le regardais écrit au feutre rouge sur mon bloc-notes, tout mon plaisir était de savoir que cela ne signifiait absolument rien.

I started hearing about people who connected home computers distantly via telephones and because fortunately I knew absolutely nothing about computers I was able to sort of mush that all together and get this vague vision of my arena which I then needed a really hot name for. Dataspace wouldn't work and Infospace wouldn't work but Cyberspace... it sounded like it meant something or it might mean something but as I stared at it in red sharpie on a yellow legal pad my whole delight was that I knew it meant absolutely nothing.

Nous voilà rassuré, la Cyber, dérivée de la popularité du cyberespace de Gibson, vient donc d'une ignorance totale à la fois du monde du numérique mais aussi de la racine cyber- / kuber-. On peut parler d'ignorance², et remercier les cyberdivinités d'avoir échappé au Dataspace.

L'utilisation courante de la Cyber dans les ESN et autres cabinets de conseil est donc très "sale" (ou "commerciale" si vous ne parlez pas le "French for entrepreneurs") et dérivée non pas du produit des sciences concernées vendues par ces entreprises, mais du renouveau de la science-fiction des années 80 aux states.


Vous pouvez trouver le reste de la série sous l'article d'introduction.

Wednesday 29 December 2021

Affordance trompeuse : l'anglais est universel

Dans certains domaines, et en particulier celui du logiciel (on ne parle pas ici d'informatique, cf. LA DATA), l'impérialisme anglais a fait son chemin. La croyance répandue est qu'en écrivant le code et les commentaires intégralement en anglais, non seulement ceux-ci deviendraient universellement compréhensibles par tous les codeurs, mais le résultat obtenu serait intrinsèquement meilleur, car non pollué par les affres de sa langue maternelle qui est plus éloignée des langages de programmation.

Cette foi en l'anglais comme seule langue de communication est une partie du credo de ceux qui ont élevé le codage à un niveau religieux, et, forcément, qui rentrent dans l'évangélisation. Ceci n'est pas un problème en tant que tel, le monde du logiciel (et encore plus côté matériel) est peuplé de fanatiques qui s'entrecroisent et s'invectivent au nom d'une rationalité qui a été foulée des doigts boudinés depuis bien longtemps, et remplacée le plus souvent par du FUD (qui n'est malheureusement pas une affordance trompeuse). Revenons au sujet.

Un programme informatique est une œuvre littéraire triple : elle parle d'un sujet dit "métier" à une double audience, d'un côté des programmeurs et de l'autre des interpréteurs de code (qu'ils soient compilateurs ou machines virtuelles)(et, ce, sans aller jusqu'à la programmation lettrée au sens de Knuth). On peut sortir de la réflexion les interpréteurs de code : ils ont leur propre langage (C, BASIC, Logo, Java, JavaScript, Brainfuck, Ladder, SCXML... : à chaque jour son langage), qui n'est pas l'anglais.

Rentrons dans le sujet par le "métier". Imaginons l'écriture d'un programme pour l'assistance à l'arbitrage de l'escrime : le français est la langue officielle au niveau international, et au niveau national, on utilise une langue locale. Prenons le judo : le japonais est la langue officielle au niveau international et très souvent au niveau national, en utilisant une transcription romane pour l'écrit. Prenons une autre discipline sportive : le droit. En France, le droit n'est ni de type romano-germanique ni de type common law. Dans ce petit éventail d'exemples, il n'y a rien de naturel, rien d'évident à imposer une traduction vers l'anglais. Celle-ci pénalise deux publics : ceux qui connaissent le "métier" n'auront de cesse de chercher le terme d'origine, et ceux le connaissant peu se verront freinés dans leur acquisition de connaissance par cet intermédiaire qui les coupe des références. On peut d'ailleurs considérer que ces traductions du "métier" sont un facteur primaire de dette technique.

Venons-en à la communication entre programmeurs : on se plait volontiers à penser un ensemble homogène de coders / doers / makers où tout le monde va se comprendre intuitivement parce que c'est de l'informatique ma bonne dame. Comment imaginer une homogénéité dans une population qui ne cesse de rejeter l'informatique au profit du codage et des guerres de clocher (cf. supra) ? Une population qui refuse de conceptualiser et ne veut voir que des outils ?

En supposant que l'on souhaite réellement transmettre de la connaissance à ses collègues codeurs, et pas juste les laisser avec du code destiné aux machines, que fait-on quand on n'a pas la certitude que l'autre est sur la même longueur d'onde ? Va-t-on chercher à être plus explicite, ou au contraire, va-t-on rajouter une surcouche sur le message que l'on souhaite passer ? Dans une langue que l'on va moins maîtriser ? Dans les faits, c'est le deuxième cas qui se produit le plus souvent. Dans combien de programmes dont aucun non-francophone ne lira jamais le code, ces écrits ne sont compréhensibles que par une traduction mot à mot ? Et quand bien même, quand les codeurs ne font pas la différence entre une stack et un heap, entre une layer et un module, entre un service et une API, quand les mots sont vidés de leur sens pour ne plus être que les étiquettes composant la folksonomie d'une chapelle, alors cet anglais forcé n'est plus que le clou fermant le cercueil de la transmission de connaissance.


Vous pouvez trouver le reste de la série sous l'article d'introduction.

Saturday 25 September 2021

Affordance trompeuse : API

Une API est une interface (i.e. la frontière entre deux choses) utilisée dans l'action de programmer des applications. On décrit la liste des opérations disponibles, avec pour chacune ce dont on a besoin, et ce qu'on aura en retour. Pour les informaticiens et en version longue, ça se passe du côté de C'est le printemps, bientôt les API vont éclore, sinon restez ici.

Analogie dans le monde du spectacle :

  • L'opération "donner un concert" demande des artistes et des instruments, et permet d'obtenir en retour un concert
  • L'opération "donner un encore" demande des artistes en tenue décontractée et des instruments, et permet d'obtenir en retour un encore

La tromperie est dans le fait d'utiliser le terme API pour désigner l'exécution de l'opération. En langage courant :

  • "Je suis allé à donner un concert hier soir, c'était génial ! On était très près de la scène pour le donner un encore, un grand moment de communion !"
  • "Venez tous à la pendaison de crémaillère pour fêter l'emménagement dans notre nouvelle signature d'un acte de vente !"

Ou en faisant la confusion dans l'autre sens :

  • "J'ai été déçu par cette interprétation à la Philarmonie, trop de fausses notes dans la partition."
  • "On a une grosse fuite d'eau, c'est un vice caché du schéma de plomberie"

Pour les informaticiens utilisant API en ce sens, allez leur demander la différence entre GPL et LGPL, la tromperie deviendra limpide. Ils ne pourront pas se baser sur Wikipedia étant donné que les pages françaises et anglaises sur la LGPL font l'impasse sur le terme "interface", qui est la clef de voûte de cette différence.


Vous pouvez trouver le reste de la série sous l'article d'introduction.

Sunday 2 May 2021

Affordance trompeuse : dette technique

Depuis quelques années, le vocable "dette technique" est à la mode. Dans le langage commun du développeur, ce terme est synonyme de tout ce qui ne lui plaît pas dans le code, et que le méchant management ne lui laisse pas changer. Les causes d'insatisfactions sont nombreuses, ceci allant du non-respect des "bonnes pratiques" jusqu'au #cépamoderne en passant par la volonté de faire de la compta en virgule flottante. Pourquoi ce nom de dette technique ? On se verra répondre que si on ne le fait pas (sous-entendu, le bien), alors on le paiera plus tard. Soit. Mais selon quelles modalités ? Est-ce grave de payer plus tard si cela est sans frais ? La modernité dans la tech ayant une durée de vie de six mois, est-ce qu'il ne vaudrait pas mieux attendre ? Devant une telle définition de la dette technique, on est effectivement tenté de répondre avec une locution à peu près aussi définie : un tiens vaut mieux que deux tu l'auras.

On peut se demander si cette expression est arrivée à être diffusée uniquement sur sa proposition de "boîte à contrariétés". La réponse est évidemment non, sinon on ne serait pas dans la série des affordances trompeuses. Presque vingt ans après avoir créé cette métaphore, Ward Cunningham l'explique très bien dans cette courte vidéo. Celle-ci n'ayant pas de sous-titres français, et devant l'absurdité de regarder une image mouvante pour ce qui tient en quelques lignes, je vous en propose ici une transcription traduite.

J'ai commencé à m'intéresser à la façon dont les métaphores influencent notre façon de penser après la lecture de "Metaphors We Live By" de George Lakoff et Mark Johnson. Une idée importante est que nous raisonnons par analogie avec les métaphores qui sont entrées dans notre langage.

 

J'ai inventé la métaphore de la dette pour expliquer la refactorisation que nous faisions sur le produit WyCash. C'était un produit développé en Digitalk Smalltalk et il était important pour moi que nous reflétions les connaissances acquises à propos de l'application au cours du temps, en modifiant le programme pour qu'il ait l'air d'avoir été écrit comme si nous avions eu cette connaissance depuis le début, et comme si c'était la façon naturelle de le faire en Smalltalk.

 

L'explication que j'ai donné à mon chef, et on parle de logiciel dans le domaine de la finance, était une analogie financière que j'ai appelée la métaphore de la dette, qui dit que si l'on échoue à aligner notre programme avec ce que l'on a compris de la bonne façon de penser nos objets financiers, alors nous allions continuellement buter sur cette divergence, et que cela nous ralentirait de la même manière que de payer les intérêts d'un emprunt.

 

En empruntant de l'argent vous pouvez faire des choses plus vite que sans, mais jusqu'au remboursement complet, vous payez des intérêts. Je pensais qu'emprunter de l'argent était une bonne idée. Je pensais que se dépêcher de sortir le logiciel pour avoir de l'expérience avec était une bonne idée mais, évidemment, vous devez finalement revenir en arrière et, à mesure que vous apprenez des choses sur ce logiciel, vous allez rembourser cette dette en refactorisant le programme pour refléter cette expérience acquise.

 

Je pense que dans de nombreux cas les gens se dépêchent de sortir le logiciel et n'y réintègrent pas cet apprentissage, et par analogie, ont emprunté de l'argent sans avoir l'intention de le rembourser. Il va sans dire que si vous faites ça avec votre carte de crédit, à la fin toutes vos rentrées d'argent partent dans les intérêts, et votre pouvoir d'achat est nul.

 

Dans le même ordre d'idées, si vous développez un programme pendant longtemps en ne faisant qu'ajouter des fonctionnalités, et que jamais vous ne le réorganisez pour refléter votre compréhension de ces fonctionnalités, alors il arrivera un moment où il n'y aura plus de cohésion dans le programme, les efforts pour travailler dessus prendront de plus en plus de temps. En d'autres termes, les intérêts occuperont toutes vos rentrées et vous ne progresserez plus.

 

Beaucoup de personnes, tout du moins de bloggueurs, ont expliqué la métaphore de la dette en, je pense, la confondant avec l'idée que l'on peut écrire vite-fait du code avec l'intention de faire mieux plus tard, et que ceci était la première cause d'endettement. Je ne suis jamais pour écrire du code vite-fait, je suis pour écrire du code qui reflète votre compréhension présente d'un problème, même si cette compréhension est incomplète.

 

Si vous souhaitez vous endetter en développant un logiciel que vous ne comprenez pas complètement, alors il est sage de faire un logiciel qui reflète au mieux votre compréhension. Quand le temps de la refactorisation arrive, cela permet de voir clairement ce que vous pensiez alors et ainsi de rendre plus facile la transformation en ce que vous pensez désormais.

 

En d'autres termes, cette métaphore de la dette, ou de la capacité à rembourser la dette, pour qu'elle puisse fonctionner pour vous, dépend de votre capacité à écrire du code suffisamment propre pour pouvoir être refactorisé une fois que vous aurez compris le problème.

 

Je pense que c'est une bonne méthodologie qui est au cœur de l'eXtreme Programming. La métaphore de la dette est une des nombreuses explications au fait que l'eXtreme Programming fonctionne.

La dette technique actuelle est donc une version allégée, fade et sans réel intérêt, de la métaphore de la dette de Cunningham, qui est, elle, une justification de l'amélioration continue appliquée au développement logiciel, en partant du principe que si l'on n'a pas la compréhension nécessaire pour finir la conception, on peut quand même développer le logiciel (en s'endettant), à condition de revenir sur cette conception une fois que cette compréhension est acquise (remboursement de la dette). La métaphore de la dette est une question de gestion de la connaissance.


Vous pouvez trouver le reste de la série sous l'article d'introduction.

Wednesday 28 April 2021

Affordance trompeuse : la qualité

La "qualité" est un grand mème des programmeurs, qui n'est jamais trop loin de son compagnon "modernité". Les grincheux me reprocheront ici normalement d'ergoter sans raison, parce que la qualité c'est le bien, et le bien doit être encouragé. C'est justement là que se situe la tromperie.

Comme il nous est rappelé dans le TLFi, la qualité est premièrement une caractéristique de nature, bonne ou mauvaise, d'une chose ou d'une personne. Bonne ou mauvaise. Parler de qualité n'est pas parler ni du bien ni du mal, parler de qualité n'est pas parler de moralité d'une chose, mais de sa caractérisation par rapport à sa nature, à son être.

Le travail de programmation n'implique d'ailleurs qu'à la marge ce travail de caractérisation. Par contre, il est important pour le programmeur d'arriver à produire quelque chose de conforme à la caractérisation attendue, aux qualités attendues. Ceci est l'activité d'assurance qualité. Et quand cette assurance qualité conclut à un résultat positif, alors on peut dire qu'on est en face d'un logiciel "de qualité", c'est-à-dire qu'il se comporte comme on le souhaite, ou plus précisément, conformément aux souhaits exprimés. Dans la pratique, cela revient à démontrer que l'on répond aux exigences, soit par une preuve formelle, soit par des tests. Bon, ne nous voilons pas la face, ça fait bien longtemps que l'industrie a fait une croix sur les preuves formelles, ça demande beaucoup trop de travail et personne n'a trouvé de belles photos dans les banques d'images pour mettre ça en diapositives dans des conférences inspirantes.

Est-ce que le fait que Facebook continue de me bombarder de photos de chats, après dix ans d'expression continue de mon désintérêt voire mon aversion envers cette pratique cruelle de garder en captivité des OGM carnivores, en fait un logiciel de mauvaise qualité ? On ne peut répondre correctement à cette question qu'en ayant connaissance du comportement attendu par ses concepteurs. Contrairement à l'utilisation courante du terme, la qualité en informatique est pensée, décidée, en un mot, conçue : ça n'est pas une projection de valeurs morales sur le produit ou le service.


Vous pouvez trouver le reste de la série sous l'article d'introduction.

Sunday 24 January 2021

Affordance trompeuse : le data center

Après quelques aller-retours ces 40 ou 50 dernières années, le data center est à nouveau à la mode, en particulier parce qu'il se doit d'être vert. Le data center est en effet aujourd'hui le lieu où se matérialise le cloud computing. Data ? Computing ? Cela vous rappelle évidemment l'affordance trompeuse LA DATA ! Autant LA DATA est trompeur en français, autant data center l'est dans sa langue d'origine, et on peut légitimement se demander si cela a toujours été le cas. Le Web est (comme souvent) assez pauvre sur l'origine des termes informatiques, mais en cherchant un peu, on arrive relativement vite sur le cas des World Data Center créés en 1957. L'histoire de leur établissement peut être découverte dans The Origins and Principles of the World Data Center System, dont provient l'extrait ci-dessous :

At its decisive meeting in Brussels in 1955, when the Soviet Union officially unveiled its IGY programs, CSAGI set up a special Committee on the Availability of Data. This Committee recommended that data centers be set up in different countries as depositories and dissemination points for IGY data. The data would be collected and made available to any scientists without condition except for the cost of reproduction and mailing. The Committee recommended that CSAGI publish guides to the depositories and the types of data available from each. These World Data Centers would be more than passive depositories. They would actively supply data and provide the necessary facilities for data analysis.

Lors de sa réunion décisive à Bruxelles en 1955, lorsque l'Union soviétique dévoila officiellement ses programmes pour l'Année Géophysique Internationale (IGY), le Comité Spécial de l’Année Géophysique Internationale (CSAGI) a mis en place un comité spécial sur la disponibilité des données. Ce comité a recommandé que des centres de données soient créés dans différents pays en tant que dépositaires et points de diffusion des données de l'IGY. Les données seraient collectées et mises à la disposition de tous les scientifiques sans condition, à l'exception des frais de reproduction et d'envoi. Le comité a recommandé que le CSAGI publie des guides sur les dépositaires et les types de données disponibles pour chacun. Ces centres mondiaux de données seraient plus que des dépositaires passifs. Ils fourniraient activement des données et fourniraient les installations nécessaires pour l'analyse des données.

Ne nous méprenons pas, on parle déjà à l'époque d'automatisation du traitement des données, et de données numériques (sur cartes perforées), voire des premiers computer facilities : nous étions toujours en plein dans l'ère de la mécanographie. Le terme de data center est très probablement arrivé avant, mais à la fin des années 50, il paraît assez clair que quand on parle de ces data center, c'est pour désigner une stratégie proactive de centralisation des données dans un dépôt défini et géré par des sachant, afin de pouvoir les mettre en valeur. Le premier sujet tourne autour de la non-perte des données et de leur partage, un but proéminent après le succès relatif de la deuxième Année Polaire Internationale (API).

Rien de cela dans le data center d'aujourd'hui, qui n'est plus qu'un bâtiment connecté à Internet, bien refroidi, et rempli de serveurs, quelles que soient leurs utilisations.


Vous pouvez trouver le reste de la série sous l'article d'introduction.

Friday 8 January 2021

Affordance trompeuse : le cache

Selon un usage entériné par la commission d’enrichissement de la langue française dans le journal officiel en 2007, nous sommes censés parler du cache quand on évoque cet espace mémoire temporaire.

Le terme anglais est apparu avec le System/360 d’IBM pour le Model 85 commercialisé en 1968 (un modèle très flower power donc), soit la même année que CICS. Voici ce qu’on pouvait trouver dans Structural Aspects of the System/360 Model 85 II: The Cache pour cette année vraiment révolutionnaire à tout point de vue :

The storage hierarchy consists of a 1.04-microsecond main storage and a small, fast store called a cache, which is integrated into the CPU. The cache is not addressable by a program, but rather is used to hold the contents of those portions of main storage that are currently being used.

The term cache is synonymous with high-speed buffer, as used in other Model 85 documentation.

Ce terme cache est donc utilisé pour désigner un lieu où l’on peut mettre de l’information, et ce lieu n’est pas visible par tous. En français, cela s’appelle une cache ou une cachette. A contrario, un cache est quelque chose qui va masquer, et certainement pas un contenant.

L'utilisation du masculin pour cache va donc à l'encontre du sens français de cache. Et d'ailleurs, d'où vient ce mot anglais cache ? Selon Lexico, du verbe français cacher, verbe qu'on peut appliquer à la cache, ou au cache : balle au centre :-)


Vous pouvez trouver le reste de la série sous l'article d'introduction.

Cet article a déjà été publié sous une autre forme ici.

Saturday 2 January 2021

Affordance trompeuse : GitOps

Dans la lignée de la revalorisation du travail des opérateurs est née la mouvance GitOps, à savoir les relations particulières entre les opérateurs et les connards (traduction littérale de git). En fait pas vraiment, comme le disent les créateurs de GitOps (Weaveworks) dans leur article de 2017, GitOps consiste en la mise en œuvre d'une approche déclarative pour décrire ce que l'on souhaite dans son système, puis de détecter les changements, et d'agir en conséquence en fonction des changements demandés. Vous aurez bien évidemment reconnu l'approche CFEngine de 1993, en un peu moins puissant, dans le sens où en GitOps les différences sont évaluées cible par cible, et pas de manière systémique ; ici on parle de cible d'outillage de déploiement et pas cible finale.

Est-ce que Git est important là-dedans ? L'article nous dit que oui, dans le sens où Git permet d'avoir gratuitement la revue de code, les commentaires dans les fichiers de configuration, de lier les engagements (commit) aux tickets et de gérer les demandes de récupérations d'engagements (pull request). La réponse est donc non, dans le sens où aucune de ces choses n'est spécifique à Git en particulier, les quatre premiers points étant standards à tous les gestionnaires de versions, et le cinquième étant indépendant du gestionnaire de version mais facile à mettre en œuvre dans les gestionnaires distribués de versions.

Ce qui compte donc dans GitOps n'est donc pas Git, mais l'approche déclarative et versionnée, celle qu'on tente de mettre en œuvre depuis plus de vingt ans, et qui est cassée à chaque fois qu'un produit devient à la mode et qui ne sait être configuré qu'en mode impératif (ou pour parler en termes d'affordances trompeuses, par API). Il se trouve que les créateurs sont partis du gestionnaire de source du moment, sans chercher à utiliser ses spécificités, on prend celui utilisé par les développeurs. Et pour Ops… les opérateurs sont des anonymes, tout va bien de ce côté, on peut le rajouter dans n'importe terme :-)

Certains rétorqueront que l'article séminal a été mis à jour, et que si, Git est bien indispensable. Mais ce que cette mise à jour fait vraiment est de montrer en quoi le modèle actuel du Continuous Deployment (ou CD, pas le disque optique) basé sur un enchaînement de scripts impératifs n'est pas réconciliable avec l'approche déclarative, qui elle travaille à deux niveaux : l'expression du changement dans l'exigence, et la mesure de l'écart entre l'exigence et ce qui est en place. L'approche CD traditionnelle (dite du pipeline, ou en Français de la Tech, du pipeline) s'arrête au moment où l'on propage le changement demandé, et ne comporte pas la boucle de rétroaction qui vient après la mesure de l'écart (qui n'est d'ailleurs pas systématiquement faite). On reste donc bien sur les principes de CFEngine, et Git dans l'affaire n'est qu'un accessoire à ces principes, même s'il se trouve techniquement au milieu de cette mise en œuvre particulière.


Vous pouvez trouver le reste de la série sous l'article d'introduction.

Wednesday 30 December 2020

Affordance trompeuse : API as a Product

En Français de la Tech, l'expression API as a Product est appelée un worst of : elle représente tout ce que l'on souhaite éviter en termes de communication technique.

Pour API c'est assez simple, le terme est apparu à la fin des années 60 pour désigner un contrat d'interface stable et documenté afin de pouvoir utiliser des routines communes. L'acronyme se décompose en Application Program Interface puis a dérivé en Application Programming Interface, soulignant l'importance de la documentation dans l'API. Les deux destinataires d'une API étant le programmeur, pour qu'il puisse écrire du code utilisant les routines communes, et le compilateur qui va vérifier le respect du contrat et écrire le code machine permettant l'appel aux routines. D'autres interfaces existent évidemment, les ABI, SPI, etc… la spécificité des API étant dans le AP, le programmeur d'applications, l'humain qui va être le premier consommateur de cette nourriture.

Pour Product c'est assez simple aussi : en informatique, produit s'oppose directement à service distribué. Le produit c'est ce que l'on installe sur ses propres ressources de calcul, et qu'on utilise sans avoir besoin de la présence d'un tiers (avec le bémol des contrôles de licence à distance).

API as a Product devrait donc être en toute logique… un contrat d'interface permettant de construire un produit ? Un produit permettant de construire et documenter des contrats d'interface ? Que nenni. API as a Product est en fait un raccourci de treating API as a Product c'est-à-dire, pour les fournisseurs de services distribués, de ne pas considérer l'API comme l'interface exposée une fois qu'on a mis en place le service, mais de traiter l'API comme si c'était un produit, en y apportant la même démarche d'analyse, de conception et de commercialisation. Est-ce que cela signifie que l'API devient de ce fait un produit ? Absolument pas, on se situe dans une reformulation de l'approche top-down, selon laquelle on commence par regarder ce que l'on souhaite exposer, pour finir par regarder comment on va le mettre en œuvre, et qui s'oppose à la démarche bottom-up qui est, elle, purement technique.

Jusqu'ici, à part pour l'omission en apparence dérisoire de treating, nous ne sommes pas en présence d'une affordance trompeuse. Pourtant, entre l'apparition du terme fin 2015 et son utilisation aujourd'hui, cette omission s'est avérée fatale : on parle aujourd'hui de boutiques d'API (vu que ce sont des produits), de places de marché d'API (vu que ce sont des produits), de documentation d'API (et plus de la partie documentation de l'API), de rentabilité d'API (vu que ce sont des produits), des données de l'API (vu que l'API n'est plus une interface). Le raccourci de treating API as a Product en API as a Product a fait que le message qui est diffusé est qu'on ne vend plus l'accès à un service distribué, mais à un contrat d'interface, contrat qui par définition n'a qu'une valeur secondaire, celle de faciliter le travail du programmeur pour accéder à ce qui apporte la valeur primaire : la routine mise en commun. C'est dans la perte de ce petit mot treating que l'on est entré dans la tromperie.


Vous pouvez trouver le reste de la série sous l'article d'introduction.

Tuesday 29 December 2020

Affordance trompeuse : REST API, RESTful

Les noms REST API et RESTful invitent au voyage dans le monde des architectures post-Web. Roy Fielding, le seul créateur de REST le dit d'ailleurs explicitement : REST est un style d'architecture qui n'a de sens que dans un système hypermédia distribué. Sans ressources capables de référencer d'autres ressource (hypermédia), sans système qui implique d'avoir de multiples unités de calculs distinctes (distribué), l'architecture retenue pour construire une application ne peut pas suivre un style qui correspond à REST. Et dans ces deux aspects, hypermédia et distribué, étant donné que l'aspect distribué a été traité ad nauseam pendant un demi-siècle, le facteur discriminant est en conséquence l'hypermédia.

L'approche RESTful se concentre sur la mise en place des REST API, et considère que la prise en compte de l'hypermédia est quelque chose d'optionnel, car difficile à mettre en œuvre pour le besoin réel. Comme REST impose l'hypermédia en tant que sujet primaire de réflexion, justement parce que c'est le sujet difficile qui permet de répondre à des besoins auxquels les autres styles d'architecture ne répondent pas, alors on peut en déduire que les termes REST API et RESTful sont représentatifs d'une mouvance NoREST. On trouve un marqueur fort chez les partisans du NoREST : la mise en avant d'un seul format d'échange de données, format qui n'est pas hypermédia, le JSON.


Vous pouvez trouver le reste de la série sous l'article d'introduction.

Monday 28 December 2020

Affordance trompeuse : codeur

Le monde de l'informatique s'est créé quand la machine électronique est devenue programmable, quand on pouvait changer son fonctionnement sans passer par une nouvelle étape de fabrication matérielle. Très logiquement, les personnes maîtrisant la création de ces programmes (activité qui nécessite de passer par des étapes d'architecture logicielle, d'analyse, de conception et d'écriture de code) ont été appelées programmers. A contrario, des termes péjoratifs sont apparus pour désigner ceux qui ne méritaient pas cette appellation, comme code grinder (moulin à code), ou code monkey (pisseur de code). La différence entre les deux est que le terme programmer garde dans tous ses usages la notion de travail intellectuel, alors que quand il s'agit de réduire la chose à un simple travail mécanique, ce sont code et coder qui sont utilisés.

Quand, afin de transmettre ses principes, l'informatique pioche son vocabulaire dans les arts mécaniques devenus traditionnels , c'est une bonne idée. Quand les programmeurs réduisent leur travail au codage, ça n'en est plus une.


Vous pouvez trouver le reste de la série sous l'article d'introduction.

Saturday 26 December 2020

Affordance trompeuse : les frameworks Web MVC

À la fin des années 70, Trygve Reenskaug fait face au problème de la gestion d'un nombre important de données dans une application, et cherche un modèle de programmation qui rende l'application maintenable. On parlera de la maintenabilité dans un autre article, c'est une autre affordance trompeuse. Il arrive après plusieurs itérations et en collaboration au Model View Controller. Rétrospectivement il regrette ce nom de Controller qui n'est pas assez expressif pour le rôle joué.

Le MVC est organisé en une hiérarchie de couples Vue (ce que voit l'utilisateur) - Contrôleur (ce qui reçoit les entrées de l'utilisateur), avec des Modèles sous-jacent (le monde manipulé), la communication entre les Modèles et les Vues se fait dans une approche Observateur / Observé. Si vous enlevez un de ces éléments, vous n'avez plus de MVC. Et pourtant, un article paru sur InfoWorld en 1999 a réussi à populariser le fait que le Model 2 de Sun Microsystems pour Java EE (à l'époque J2EE) était une approche MVC pour le Web : pas de couples Vue - Contrôleur, pas d'organisation hiérarchique ni des Vues ni des Contrôleurs, pas communication Observateur / Observé, pas de support de l'hypermédia, le Model 2 n'était en fait ni MVC ni vraiment Web.

Le MVC se retrouvait réduit à l'état d'une triade vidée de sa substance, un vague Separation of Concerns sans objectif ni raison d'être, et c'est cette vision qui a perduré et a été reprise par la suite dans les frameworks dits Web (Struts, Spring MVC, Django, Symfony, etc…). Cette affordance trompeuse nous suit depuis bien longtemps, voir cet article de 2006 sur la partie dite Web, ou cet article de 2004 où comment cette fausse interprétation du MVC vient polluer la compréhension des vrais frameworks MVC.


Vous pouvez trouver le reste de la série sous l'article d'introduction.

Thursday 24 December 2020

Affordance trompeuse : LA DATA

En 1874 Émile Baudot crée un code sur 5 bits pour la télétransmission afin d'être plus efficace que le code Morse. Ce codage permet de représenter les lettres majuscules, les chiffres, la ponctuation… c'est le début du monde de LA DATA. Un point fascinant du monde de LA DATA est ce besoin de REVENIR A DES MAJUSCULES SANS ACCENTS POUR S'EXPRIMER. Le monde de LA DATA EST UN MONDE BRUYANT.

La mode autour de ce vocabulaire est très intéressante, car elle montre deux points de vue différents entre la francophonie et les outres (outre-Manche, outre-Atlantique). L'idée principale convoyée par les dénominations anglaises est toujours celle du calcul : dans computing science, le premier mot a la même racine latine que le mot français computer, c'est-à-dire computare, calculer. Dans software engineering, le premier mot a été créé en opposition au hardware, au matériel : on continue de parler de l'outil, toujours pas des données.

En vocabulaire anglais, il est donc nécessaire de remettre en avant la donnée, ou comme on dit en Français de la Tech, de remettre en avant LA DATA. En vocabulaire français par contre, on va parler d'informatique, et ce depuis le début de la diffusion des ordinateurs dans les années 60 (qui ne sont que des calculateurs pour le coup), c'est-à-dire de la science du traitement rationnel, notamment par machines automatiques, de l'information considérée comme le support des connaissances humaines et des communications dans les domaines technique, économique et social.

Cela fait donc plus d'un demi-siècle qu'en vocabulaire français on a considéré que LA DATA était la partie fondamentale de notre activité, et qu'en deuxième position arrivait la problématique du calcul automatisé. L'utilisation sans réserve de LA DATA dans nos contrées est donc un indicateur fort de l'inculture informatique de nos entreprises, en particulier dans la French Tech.


Vous pouvez trouver le reste de la série sous l'article d'introduction.

Affordance trompeuse : JSON

JSON est un format de texte bien connu, et format privilégié des amateurs de l'approche NoREST. Ce format, très simple, est défini dans la RFC 8259 de l'IETF ou encore ECMA-404 de l'ECMA, qui spécifie que l'acronyme signifie "JavaScript Object Notation". On pourrait donc s'attendre à ce qu'on puisse décrire en JSON un objet au sens JavaScript, à savoir quelque chose avec un état et un comportement, des propriétés et des méthodes. Juste après, la spécification précise que JSON est un format d'échange de données, on comprend donc que la partie "comportement" ne fera pas partie de JSON. On pourrait du coup s'attendre à ce que les types de données scalaires JavaScript standards soient supportés dans JSON. Ce n'est pourtant pas le cas, seuls les nombres et les chaînes de caractères sont décrits et, par le tour de passe-passe d'utilisation de mots-clefs, on ajoute les booléens. Au final, le JavaScript dans JSON est l'équivalent de Git dans GitOps : un tube néon qui va mettre en valeur le nom.


Vous pouvez trouver le reste de la série sous l'article d'introduction.

Affordance et programmeurs, une histoire de noms

Affordance est un néologisme créé par le psychologue James J. Gibson dans les années 60 pour désigner ce que l'environnement a à nous offrir. A la fin des années 80, ce terme prend un sens complémentaire, avec la notion de perception de cette offre. Par exemple avec l'iPhone, Apple a introduit la possibilité de zoomer avec un mouvement de pincement effectué digitalement (c'est-à-dire avec les doigts) sur l'écran : dans la désignation des années 60, cette possibilité est une affordance, dans celle des années 80, c'est une affordance cachée. On parlait aussi de fausses affordances, comme par exemple quand un bouton est présent mais rien n'est câblé derrière. Dans les années 2010, une nouvelle utilisation du terme est apparue, au singulier cette fois, où l'affordance de quelque chose est sa qualité à proposer des affordances visibles.

Cette notion est clef dans les interactions homme-machine, spécialement pendant la phase de découverte de l'interface, de la surface qui sépare l'humain de l'informatique. Une fois l'interface connue, assimilée, la personne travaille par raccourcis, par accélérateurs et ce besoin d'affordances visibles diminue. On pourrait donc penser que ce concept d'affordance va être clef pour les informaticiens, qui vont avoir à cœur de le mettre en pratique dans l'organisation de leur travail. C'est un peu le cas, mais avec une subtilité : les informaticiens aiment aller au-delà de l'affordance, ni affordance visible, ni affordance cachée, ni fausse affordance, mais avec l'affordance trompeuse, celle qui donne à croire qu'on a une certaine affordance, mais qui propose en fait tout autre chose.

Ceci se pratique essentiellement à travers la démarche de dénomination, élément essentiel de toute communication. Certains diront que le vocabulaire est nécessairement mouvant dans le temps, et que le nom des choses est ce que la masse en fait. Il n'en reste pas moins que ceux qui connaissent le sens d'origine du vocabulaire ne peuvent que se sentir attaqués et trahis, dans une démarche certes victimaire, mais pour laquelle on peut ressentir une certaine empathie en toute bienveillance. Et passé ce point de détail, dans toute démarche scientifique, et l'informatique aspire à s'en approcher, il est important de ne pas effacer le passé en se servant du vocabulaire comme d'un palimpseste.


Cet article sert de point d'entrée à la série "Affordances trompeuses", il sera mis à jour au fur et à mesure avec les différentes entrées.

  1. JSON
  2. LA DATA
  3. Les frameworks Web MVC
  4. Codeur
  5. REST API, RESTful
  6. API as a Product
  7. GitOps
  8. Dette technique
  9. La qualité
  10. Les bonnes pratiques
  11. La refactorisation
  12. Le cache
  13. Le data center
  14. API
  15. L'anglais est universel
  16. La Cyber
  17. Informaticien
  18. Le design
  19. Les batchs
  20. Le digital
  21. La recette
  22. Open Source
  23. Observable