Quand tu es pauvre, que la canicule met un couvercle sur tout tes mouvements, tu ne bouges plus que par la pensée. Tu regardes des trucs où les gens font ce que tu peux pas faire.
Puis, tu t'étends sur le sol pour pomper le 30°C de froid que tu peux choper, et tu t'aperçois qu'à force de pas bouger vivre de la fiction des autres, tu peux plus empêcher les pensées de sortir, tu ne plus t'empêcher d'exister.
C'est chiant.
La pauvreté c'est un elixir. Ça te coupe de l'influence des autres. Ça a des cotés chiants. Ça des cotés sympas. T'as plus d'informaticiens à qui causer, tu dois causer à des non professionnel, sans jargon.
Genre ma femme.
Des fois, j'essaie de lui faire comprendre ma frustration avec les informaticiens.
Disons que la majorité des informaticiens que je rencontre sont pas ma tasse de thé, du fait de leur préjugés sur ce qui fait du bon code et des bons codeurs.
Que ça se termine en débat ésotérique et technique alors que le problème est profondément humain est social, donc culturel. Yep, au sens de François Villon ou Public Ennemy : du viscéral.
J'ai été formé à concevoir des microprocesseurs. Des sous merde de CPU de la précédente génération justes à bonnes à terminer dans les imprimantes. (Information amusante, ce sont les procs que j'ai étudié qui aujourd'hui sont en pénurie, les 22-28nm à conception planaire qui sont aujourd'hui appelé des micro-processeurs, donc je suis de manière amusante en compréhension de cette pénurie qui ne touche pas les ARMv4+, x86_64 et M1 dont les vulnérabilités de conceptions (SPECTRE & co) font que ces CPU vont être probablement écartées du marché des microprocesseurs).
Je peux vous garantir que savoir comme un ordinateur marche est absolument pas requis pour devenir un gourou, ou surtout un codeur vénéré. Je dirais même que c'est un frein.
Pourtant, je crois que c'est une erreur. M'enfin. Ce n'est pas mon propos.
Mon propos c'est la haine des informaticiens pour l'informatique appliquée, la mesure, la validation rigoureuse de la mesure. Bref, la science.
La question est ce que X est mieux que Y (qui est 85% du temps de discussion dans le métier) ne se résout JAMAIS par, les tenants de X font un prototype, ceux de Y un autre, et FIGHT, que le meilleur gagne, qu'on sorte un test de Student sur des séries de mesures comparatives et qu'on fasse un post mortem basé sur les résultats et les coûts opérationnels entre acteurs.
Non, des barbus s'assoient autour d'une table avec une bière, rarement des opérateurs, mais des sages parmi les sages et discutent de ce qui importent, les uns le « time to market », d'autres le « cloud », certains l'« open data », le vocabulaire contrôlé et les impacts pour la société, et la humhum-ocratie (RFC 7282) fait son rôle. Oui, ce fonctionnement de « philosophe » qui copie Platon & co est étrangement un truc en informatique. Vos bases distribuées sont basées sur un texte de Platon concernant des philosophes qui dînent mais n'ont pas assez de fourchettes. C'est ... pas le plus fou des trucs.
Sérieusement, c'est littéralement aussi ridiculement illogique et prétentieux que les dialogues de socrates dans le banquet : c'est de la philosophie.
L'informatique moderne reprend des philosophes antiques les plus connus pour leurs jésuitismes (actuellement, le manuel des jésuites pour gagner des arguments de mauvaises foi dans les débats que l'on retrouve dans l'« art d'avoir toujours raison » est inspiré des manœuvres dilatoires que Socrates usait pour ridiculiser ses adversaires qu'il appelait les sophistes (dont Protagoras)).
Je suis helléniste aussi (j'ai appris le grec ancien toussa) et j'adore ceux que Socrate appelle sophistes pour être honnête. On trouve des gens comme Démocrites (le premier à parler d'atome), Périclès (kof), Épicure (Détournons nous des Dieux qui n'ont aucune bienveillance et profitons de la seule richesse sur terre que sont nos amis), Protagoras (l'Homme est la mesure de toute chose (les décisions absolues à la 10 commandements c'est de la merde)). Vous allez pas me croire, mais je vois dans mon opposition à l'informatique moderne, mon opposition à la philosophie, ou plutôt j'aime pas les philosophes/informaticiens modernes car ils aiment ni la science, ni les ordinateurs, ni l'Humain qui est la mesure de toute chose.
Donc, revenu à ma vie de pauvre je dois tenter d'expliquer simplement à ma femme ce qui ne va pas.
Je lui dis : imagine que c'est du ménage, ce que nous parents aux foyers (par alternance) avons goûté.
Les données, c'est comme des choses dont on a besoin pour effectuer une tâche, un couteau, c'est comme une fonction, un outil qui sert à trancher, un filtre une passoire. Les données, c'est comme quand on fait le repas, on chaîne les postes d'épluchage, préparation ... avec les outils pour faire la recette.
Pour effectuer une recette, on organise la cuisine pour que les aliments (données) les plus courants soient les plus facilement accessibles, on essaie de ne pas courir la planète pour avoir ce qu'il faut, et on tente de les avoir sous la main : si je dois aller chercher les patates au jardin pour une purée que ma fille attends dans 40 minutes : ça va pas le faire.
Autrement dit un élément important de la cuisine comme en informatique est de délivrer le résultat du traitement en temps et en heure, sans se ruiner, d'une manière réaliste qui n'engendre pas un bordel sans nom à la maison.
C'est une question d'originalité contrainte par le budget, la place, l'équipement et l'expérience. Ma femme et moi savons faire du pain, et plus nous travaillons à en faire, meilleur nous sommes.
Cette analogie de la cuisine familiale me convient parfaitement, car elle permet d'expliquer les choses importantes de l'informatique appliquée.
Voyez vous quand j'ai été formé à l'informatique en physique on avait le C, le fortran un peu de C++, matlab, spice ... de l'assembleur et pas mal d'architecture différente (MIPS, PowerPC, x86, sparc64, M68K...) dans les labos, et les CPU de ma jeunesse (68K, Z80, 6502) que j'avais programmé étaient devenues ... des micro contrôleurs. Une CPU de mon temps ne mourrait pas, elle devenait un micro processeur/contrôleur.
Comme il était pas facile de tout couvrir avec une dotation mince en heure d'informatique, MAIS que l'outil était primordiale (les cartes d'acquisition de données étant devenues omniprésentes) nos professeurs se focalisaient sur l'essentiel (pour eux) : les structures de données et la performance.
Mais aussi la mémoire et le coût en accès.
Un registre c'est l'établi. Le cache L1 ce qui est à portée de main, L2 c'est le truc au fond d'un tiroir, la mémoire c'est dans la maison, et ainsi de suite. C'est très important de se souvenir que l'ordinateur pagine la mémoire par *très* petite tranche (hors TLB) de 4K. Quand la données est pas trouvée en mémoire, l'ordi génère de très coûteuses exceptions (les pages faults) que le mmap sur-utilisé amplifie. Bref, on tente de mettre les données les plus souvent requêtées en relation proche en mémoire les unes des autres de manière compact.
Ce qui me navre, c'est que j'ai aucun collègue avec qui quand on conçoit des logiciels pour me soutenir à tenter d'organiser notre code pour planifier ces problèmes. Eux ils sont dans la stratosphère abstraites où des gremlins magiques résoudraient ces problèmes à coup de prédictions, d'intelligence artificielle et autre. Quand je leur dit que leur gremlins ne réagencent pas les données mais que les traitements et donc que ça a moins d'impact, je touche du doigt ma profonde solitude dans ce métier.
J'ai appris le C K&R à coup de pointeurs, tableaux, listes chaînées, tableaux circulaires et on laissait les arbres binaires, heap, priority queues aux informaticiens. Notre boulot c'était le « big data » : ingurgiter des séries temporelles pour en sortir des infos comme mesurer les points d'inflexions, les pentes ....
C'était aussi de lancer des milliers de simulations dans des espaces de phases pour en obtenir des chiffres simples comme juste un graphique projetant les valeurs importantes sur une courbe. Une simple courbe, et ultimement son interprétation qui va se résumer à une valeur.
Typiquement, notre formation consistait à apprendre à distiller de la données indépendamment des langages, des architectures, des domaines de la physiques (haute énergie, physique des matériaux, physique statistique, quantique....) et pourtant notre formation était tout sauf abstraite.
Elle consistait à bâtir à travers les TP une intuition de la donnée, de sa vitesse d'accès et de ses limitations. Et cette formation est aujourd'hui ... disparue.
Je me vois comme non un ingénieur, mais un ouvrier qui a son CAP. Comme un cuisinier, un boulanger, un menuisier. Sans ma formation, je ne saurais rien faire, mais ma formation n'apprenais pas à créer elle ne levait que des freins techniques sur la chose la plus importante : LA DONNÉE et son traitement de masse efficace. Et l'information, c'est le petit chiffre ou fait que tu obtiens à la fin qui importe. En fait, une fois que la donnée est traitée, validée, confirmée on peut l'effacer car ce n'est que du bruit et garder la seule chose de valeur : l'information qu'on a apprise.
Un peu comme la réaction de Maillard du cuistot, monter une sauce au beurre, panifier ... des choses dures à découvrir seul et nécessaire pour obtenir des résultats, pour devenir en capacité à construire. C'est comme les aliments qui disparaissent. Ce n'est pas le processus de cuisiner qui est important, c'est juste le plat à la fin qui importe.
L'informatique appliquée ce n'est pas qu'apprendre de la technique, c'est aussi apprendre une hygiène de pratique, une rigueur bordélique dont le praticien créant ses outils devient la norme et resté concentré sur la production.
Comme quand on cuisine pour toute la famille toute l'année on bâti une intuition de comment travailler efficacement, à pas cher, nourrir tout le monde en temps et en heure. C'est pas une « vocation ». C'est un truc qu'on sait faire avec des gestes pratiques.
Genre, toujours commencer et terminer avec la cuisine propre. Ça permet d'éviter les erreurs.
De la même manière je trouve sain de pouvoir démarrer mes journées au travail en informatique en allumant l'ordinateur. J'ai connu des boîtes où il y avait tellement d'outils à avoir en fonctionnement pour savoir où tu en étais (tableaux de bord, revue de code, VPN ...) que partir de rien impliquait 30 minutes à 1 heures selon les projets à juste commencer de travailler pour savoir où l'on en était. C'est nawak en terme de charge mémorielle et intellectuelle.
La propreté c'est aussi d'utiliser l'espace au mieux et de bien ranger les choses, un peu par « catégorie » comme s'en gausse les experts bibliothéco-mystiques du métier, mais surtout par confort.
Évidemment que les épices sont mieux « ensembles » pour les trouver. Pas forcément triées, juste côte à côte ...
Les périssables qui aiment pas la lumière aussi (patate, oignon, échalotte)...
Les outils dont j'use le plus fréquemment (couteau d'ordinaire, épluche légume, couteau de découpe) sont sur l'établi que je laisse dégagé le plus possible.
Je prépare mon travaille en fonction des temps de chaque choses.
En informatique, l'expérience permet d'obtenir la même chose.
Un répertoire avec les scripts qui permettent de faire des tâches triviales personnalisé pour mon usage (recherche de chaînes de caractères dans les dépôts, visualisation des différences...). Bref, mon ordinateur au travail est un peu comme mon établi. Il correspond à ma pratique, à l'argent que j'ai ou pas et il est minimaliste, et personnalisé à mes usages, ma pratique.
Si une chose doit l'emporter sur toute chose dans les débats sur les outils pour moi, c'est le confort de l'utilisateur, et aucun utilisateur n'a la même notion de confort car il n'a pas forcément la même spécialisation, les mêmes handicaps ou au contraire sur sensibilité. Par contre, l'informatique moderne nous oblige à être beaucoup d'utilisateurs distincts.
Si un codeur n'est pas un spécialiste de base de données, c'est dur d'être codeur sans avoir à toucher aux bases de données. Donc, on a aussi besoin tel un cuisinier qui fait des desserts et use d'outil de pâtissier d'autres outils.
Et de même que comme ma cuisine est petite je me contente d'outil peu encombrant (exit les robots, vive les outils mécaniques) et facile à mettre en œuvre, et bien en informatique j'aime bien des outils simples robustes faciles à prendre en main une fois que l'on a pratiqué. Oui, j'aime mes shell d'OS, de base de données, mes éditeurs de textes minimalistes et mes lignes de commandes.
C'est MA pratique. Je ne l'évangélise pas car elle n'a de sens que vis à vis de mon expérience.
De même, je ne pense pas que les outils que j'utilise sont les meilleurs et qu'il faut les imposer.
Tenez, j'ai acheté un spiraleur récemment, car faire le pain soit à la main, soit au robot à main c'est éprouvant. En fait, je vais le revendre car ... il pétrit très mal. Heureusement que je sais faire le pain sans, car sinon j'aurais pas su que ce robot est une merde. On peut faire du pain sans l'outil que tout les boulangers pros ont. Par contre, ma farine, c'est de la farine de froment (que les minotiers appellent blé alors que ce n'est pas du blé) de minotier type 65 conforme à la loi 1997 sur la baguette française de tradition. Pourquoi ? Parce que c'est le facteur qui apporte le plus de changement dans la panification. Et c'est bien de comprendre ce qui est important. Et quand j'aura la maille, je me pétera un bon spiraleur, car c'est quand même vachement pratique.
De même en informatique, il y a des choses que seule la pratique répétée, remettre l'ouvrage des centaines de fois sur l'établi apprend.
Comme gérer les versions c'est bien. Mais, les outils de gestion de versions sont parfois comme mon spiraleur : merdiques. Il faut savoir ne pas surinvestir dans l'apprentissage du robot, mais apprendre à se concentrer sur le résultat final : bien gérer ses versions. Ça peut se faire sans outils (même si c'est éprouvant), à l'ancienne, en faisant des archives, bien nommées, déposées à des endroits connus bien documentés.
Bref, je suis solitaire dans ma pratique de l'informatique, et isolé car j'ai refusé d'être un philosophe. Néanmoins, je me suis fait des codes persos dont je suis fier qui me permettent quand je sors de l'entreprise de m'en foutre. Comme un employé mc do qui invite ses potes en faisant ses beignets de lentilles corail au basilic thaï et aux épices et qui regarde la cuisine qu'il pratique au travail distincte de celle de la maison. Au travail, et bien, je dois admettre qu'en général, ma philosophie c'est vivons heureux vivons cachés.
Le dogmatisme intellectuel qui y règne et dégénère en bataille d'école de pensée basée sur des concepts qui n'ont aucune application pratique prouvée ne m'intéresse pas. Malheureusement, en entreprise, ce n'est pas du code que l'on produit, mais du discours.
Pour une ligne de code il n'est pas rare de devoir envoyer des 10 aines de mails pour expliquer pourquoi il y a un bug à corriger, pourquoi laisser un trou de sécu n'est pas une bonne idée, pourquoi ce serait bien de l'intégrer à la prochaine publication, pourquoi cette tâche qui ne rapporte pas d'argent doit être faîte, écrire LES patchs avec un titre et la description de ce que ça fait (ce qui dans ce cas fait partie de l'hygiène) ...
Je pense que j'ai dans mes derniers postes atteints le facteur 10000 entre le nombre de caractères nécessaire à faire un patch (doc amendée, titre et descriptif inclus) comparé à toute les arguties pour faire le job.
Disons qu'une fois qu'on a compris qu'en entreprise on est plus un codeur, mais un philosophe ça passe mieux. Mais parfois, on rêve quand même de faire de l'informatique.
No comments:
Post a Comment