1 points par GN⁺ 5 시간 전 | 1 commentaires | Partager sur WhatsApp
  • Les outils d’IA ont amélioré la productivité des développeurs et les capacités des équipes, mais la qualité et la stabilité des logiciels ne se sont pas améliorées à la même hauteur, au point que les utilisateurs s’attendent d’abord à une expérience dégradée après une mise à jour
  • Authentifications FaceID répétées dans une app bancaire, vol du focus par Slack, échec d’une demande de garantie LG, bugs de l’infodivertissement automobile : des bugs du quotidien perturbent la finance, le travail, le support client et la conduite
  • Contrairement à une époque plus simple, de nouvelles abstractions, des frameworks frontend et une complexité d’infrastructure accumulée se sont ajoutés, et, combinés à des attentes plus élevées en matière d’expérience utilisateur, rendent les systèmes de plus en plus fragiles
  • Même avec les derniers modèles et un budget de tokens suffisant, améliorer la stabilité se remarque peu dans les KPI ou les présentations ; les entreprises privilégient donc les nouvelles fonctionnalités et les refontes plutôt que les corrections de bugs
  • Pendant que les entreprises accumulent une dette IA, les développeurs indépendants peuvent tenter de créer des logiciels autrefois hors de portée, et le rejet de macOS et de Windows pourrait s’étendre à l’amélioration des logiciels du quotidien

Une expérience utilisateur qui se dégrade même à l’ère de l’IA

  • En pleine frénésie autour de l’IA, les entreprises consomment excessivement des tokens pour sécuriser leur valeur sur le marché avant que tout ne soit automatisé
    • Les progrès des modèles, les licenciements successifs de programmeurs et les prévisions selon lesquelles l’IA écrira 100 % du code d’ici la fin de l’année alimentent l’anxiété
  • L’ère des agents promet une productivité et une qualité supérieures
    • Les nouveaux outils ont déjà changé la manière de créer et d’utiliser les logiciels
    • Les dirigeants demandent plus de livrables à leurs équipes, et le niveau moyen des équipes logicielles a peut-être atteint un tout autre palier
  • Pourtant, dans les produits réels, la stabilité de base n’est souvent même pas assurée
    • Une app bancaire demande en moyenne trois connexions FaceID avant l’apparition de l’écran de validation 3D Secure
    • Slack sur macOS, lancé tardivement, vole le focus à Ghostty et envoie dans un chat de groupe la commande git pull que l’on tapait dans le terminal
    • La demande de garantie d’un réfrigérateur LG a échoué à l’étape finale d’envoi d’un formulaire multiétape rempli de nombreux champs, et il a fallu ouvrir la console JavaScript pour comprendre l’erreur
    • Après une mise à jour, le système d’infodivertissement d’une voiture redémarrait à chaque trajet ; le son des clignotants disparaissait, la radio s’ouvrait à la place de Google Maps et les interactions à l’écran accusaient 1 à 2 secondes de latence
    • Les bugs automobiles vont au-delà d’un simple problème d’UX et nuisent même à la concentration au volant
  • Le PM de l’équipe chargée de la refonte de l’OS automobile célébrait le résultat sur LinkedIn, tandis que les utilisateurs continuaient à se battre avec le produit
  • Ces équipes utilisent probablement les derniers modèles avec un budget de tokens confortable, et les LLM peuvent eux aussi, quand on leur en donne l’occasion, exceller dans la correction de bugs

Quand la complexité et les KPI évincent la qualité

  • Il y a toujours eu des bugs dans les logiciels, et la nostalgie d’une époque macOS Snow Leopard parfaitement stable relève aussi d’une mémoire sélective
    • Si les logiciels d’autrefois étaient meilleurs, c’est surtout parce qu’ils étaient bien plus simples qu’aujourd’hui
    • Depuis, de nouvelles abstractions, des frameworks frontend et davantage de complexité d’infrastructure se sont ajoutés
    • Les attentes en matière d’expérience utilisateur ont continué à monter, mais l’ensemble du système est devenu encore plus fragile
  • Les mises à jour de macOS et des apps qui en dépendent inspirent désormais plus d’inquiétude que d’attente, les utilisateurs anticipant d’abord la possibilité qu’une nouvelle version soit pire que la précédente
  • Le problème n’est pas tant l’IA elle-même que la manière dont on choisit de la prioriser
    • L’infrastructure GPU a donné aux développeurs des capacités puissantes, mais elle n’est pas suffisamment utilisée pour produire de meilleurs logiciels
    • Les éditeurs de logiciels fonctionnent depuis longtemps autour des KPI, et les gains de stabilité ne se reflètent pas forcément directement dans les chiffres
    • Un plan consistant à arrêter pendant un trimestre les nouvelles fonctionnalités et les refontes pour se concentrer uniquement sur les corrections de bugs a du mal à briller dans une présentation
  • Tant que ces priorités ne changent pas, la baisse de qualité des logiciels ne pourra que se poursuivre

Une opportunité ouverte aux développeurs indépendants

  • Pendant que les entreprises s’enfoncent collectivement dans une dette IA, les développeurs indépendants obtiennent l’occasion de créer des logiciels qui auraient autrefois dépassé leurs capacités
  • Les attentes envers Android Auto dans les voitures ou le site web de LG sont faibles, mais le mécontentement accumulé face à l’état actuel des choses peut devenir un moteur pour améliorer les logiciels du quotidien
    • Un mouvement de rejet face à l’état actuel de macOS et de Windows est déjà apparu
    • Il y a de l’espoir que cette dynamique s’étende à l’ensemble de la stack logicielle

1 commentaires

 
GN⁺ 5 시간 전
Avis sur Hacker News
  • Avant, on faisait les mises à jour en attendant avec impatience les nouvelles fonctionnalités gratuites, et on allait même regarder ce qui changeait dans Fedora Workstation 45 ; désormais, les mises à jour des téléphones, des TV, des voitures et des systèmes d’exploitation non Linux suscitent d’abord de la crainte
    On redoute l’ajout de nouvelles fonctions non désirées et de connexions vers l’extérieur ; macOS, par exemple, a depuis longtemps fait perdre toute attente positive, avec ses petites bordures transparentes qu’il faut trouver pour redimensionner les fenêtres
    Windows 11 semblait utiliser des dark patterns consistant, après une mise à jour de sécurité, à reproposer des fonctionnalités de connexion indésirables ou des fonctions d’IA

    • Désormais, quand je vois l’icône « mise à jour en attente », je me demande d’abord ce qui va être cassé cette fois-ci
      À l’exception des jeux vidéo, je déteste presque toutes les mises à jour logicielles ; même pour Dead By Daylight, le seul réconfort est que l’incompétence du studio Behaviour reste cantonnée à l’intérieur du jeu
    • Les logiciels dont les mises à jour ne font pas peur sont les logiciels libres et open source (FOSS)
      Les logiciels propriétaires ne sont plus conçus pour les utilisateurs, alors que certains FOSS les mettent encore au premier plan
    • Les mises à jour de sécurité cumulatives de Windows elles-mêmes n’incluent pas de nouvelles fonctionnalités du système d’exploitation et, dans l’édition Pro, il était au moins possible autrefois d’ignorer les mises à jour de qualité et de fonctionnalités
      À la place, Microsoft distribue des « expériences connectées » via des paquets Store/AppX mis à jour automatiquement, puis lance l’OOBE au redémarrage après un correctif pour reproposer ou activer des fonctionnalités
      Ce n’est pas techniquement lié à la mise à jour de sécurité, mais cela reste un dark pattern qui méprise l’utilisateur
  • Ces outils, combinés à la culture « move fast and break things » de la Silicon Valley, ont relevé les attentes de la direction vis-à-vis de la production des équipes, et devoir y répondre est ce qu’il y a de plus pénible

  • On peut produire du logiciel rapidement, mais il faut davantage de temps pour être sûr qu’il est correct
    Avec la génération de code par IA, un ingénieur expérimenté peut parfois faire en une heure ce qui lui prenait autrefois une semaine, mais cela ne réduit pas le temps de vérification de l’exactitude
    Beaucoup de développeurs ne retiennent que le gain de vitesse de génération et ignorent le coût nécessaire pour vérifier la stabilité, les performances et l’absence de défauts ; cela dit, la baisse de qualité des logiciels grand public existait déjà avant l’IA

    • À qualité égale, passer d’une semaine à une heure relève presque d’un cas extrême idéal ; en général, cela ressemble plutôt à faire en une heure ce qui aurait pris deux ou trois heures
      L’effet varie énormément selon la tâche, ne se met pas à l’échelle linéairement dans les projets longs et, parfois, l’IA crée au contraire des retards plus importants
      Si l’on ignore la qualité, on peut aller incroyablement vite, mais même sans IA, ne pas se soucier de la qualité permet d’aller bien plus vite
    • Ce qui donne confiance, ce n’est pas la durée de développement, mais la durée pendant laquelle le logiciel a fonctionné en conditions réelles
      Même après un très long développement, le fait qu’il ait correctement fonctionné pendant trois mois sur le terrain est plus fiable ; il faut donc publier tôt et souvent
  • La qualité logicielle a toujours dépendu des incitations du marché, et l’IA ne crée pas automatiquement une motivation à produire des logiciels robustes
    Le marché récompense le choix d’un produit Microsoft tout-en-un plutôt que d’applications qui ne cassent pas à chaque mise à jour ou d’un assemblage de plusieurs solutions indépendantes
    Autrefois, on ne pouvait simplement pas faire cela par manque de puissance informatique et de connaissances ; désormais, l’industrie semble avoir trouvé les conditions minimales pour qu’un logiciel tienne à peine debout et la limite des petits désagréments que les utilisateurs accepteront

    • Reste à savoir si maintenir tout le monde juste au bord du départ ou du préjudice est vraiment un point d’équilibre souhaitable pour la société
    • Quand la complétude et l’exactitude atteignent la fourchette des 90 à 99 %, la courbe des coûts grimpe asymptotiquement, au point que l’investissement ne vaut plus la peine du point de vue du profit
      Des logiciels complets et corrects ne sont produits que lorsque le risque de responsabilité juridique lié aux défauts est élevé
    • Je me demande où se situe le véritable point de rupture à partir duquel les gens, après avoir continué à consommer malgré la baisse de qualité, diront : « ça suffit »
  • Wayland dans KDE Plasma dispose d’un réglage global qui contrôle quelles fenêtres peuvent prendre le focus, et il fonctionne très bien
    Cette fonction me manque chaque fois que j’utilise un Mac de travail ou un PC Windows ; la documentation se trouve dans la section « Focus stealing prevention » : https://docs.kde.org/trunk_kf6/en/kwin/kcontrol/windowbehavi...

    • La façon la plus sûre d’éviter les logiciels qui se dégradent est de passer au FOSS et à Linux/KDE
      C’est comme si Windows 7 avait continué à s’améliorer lentement en ajoutant une maturité utile
      NixOS a un vieux problème de chargement de bibliothèques en n² qui ralentit le lancement des programmes GUI, mais même sur un mini-PC N100, tout se lance en environ une seconde, et il gère sans accroc un moniteur 4K 240 Hz HDR
      Surtout, l’ordinateur fait uniquement ce qu’on lui demande
    • Ce n’est pas tant que macOS n’aurait pas de fonction de prévention du vol de focus ; on dirait plutôt que ses concepteurs n’ont pas imaginé la situation où le lancement d’une application prend du retard
      Si l’utilisateur attend puis effectue une autre saisie, cela peut être le signe qu’il ne souhaite plus donner le focus à cette application, mais la conception semble ne partir que du scénario optimiste où l’application s’ouvre immédiatement
    • Ce qu’il y a de plus pénible dans la technologie actuelle, c’est l’imprévisibilité de l’interface, qui change au moment où l’utilisateur s’apprête à appuyer
      Les mots suggérés du clavier tactile changent juste avant que le doigt ne touche l’écran, et dans iOS Liquid Glass ou des web apps instables, même les boutons se déplacent
      Les pop-ups et les sollicitations du type « aimez-vous cette application ? » débordent aussi de partout
      Le vol de focus sous Windows était déjà un problème en 1995, et les changements soudains répétés toutes les 100 ms stimulent en permanence le réflexe de sursaut musculaire et le système limbique, au point de faire trembler le corps au bout de quelques heures
      Il faut arrêter les stimuli façon machine à sous et les métriques d’engagement qui visent le nombre de clics, et permettre aux gens de se concentrer sur leur travail
    • C’est une excellente fonction, mais il existe actuellement un bug qui bloque de manière trop agressive dès que le niveau de prévention est supérieur à « Low » : https://bugs.kde.org/show_bug.cgi?id=509990
    • Sous Windows, Slack se charge en arrière-plan et, une fois prêt, se contente de faire clignoter son icône dans la barre des tâches ; il ne vole donc pas le focus de l’application en cours tant que l’utilisateur ne bascule pas lui-même dessus
  • Lorsque l’utilisateur saisit du texte ou interagit avec l’interface, le debounce contre le vol de focus devrait être le comportement par défaut afin qu’aucune autre application ne puisse jamais prendre le focus
    Même avec des pop-ups, des sons ou une icône qui clignote, une application sans rapport avec la tâche en cours ne doit pas intercepter la saisie
    Il ne devrait pas être nécessaire de demander une exception au motif que la connexion a réussi après avoir appuyé sur le bouton de connexion, comme avec Cisco AnyConnect ; de même qu’on ne tolérerait pas qu’une application de terminal s’empare de STDIN, il ne faut pas l’autoriser non plus dans une GUI

    • Il n’existe pratiquement aucune situation où l’on souhaite qu’une application prenne automatiquement le focus, et pourtant ce comportement est activé par défaut et se produit sans cesse, ce qui est incompréhensible
    • macOS peut aussi laisser une application nouvellement ouverte hors focus, et cela se produit de manière cohérente quand un ordinateur portable n’a pas été redémarré depuis longtemps
      C’est peut-être un bug, mais si l’utilisateur a cliqué sur une autre fenêtre avant la fin du lancement de l’application, cela pourrait au contraire être une fonctionnalité appropriée
    • Comme la file d’événements du système d’exploitation fonctionne à travers les processus et les fenêtres, il est difficile de simplement appliquer un debounce à ce comportement
      On peut éviter de donner le focus aux nouvelles fenêtres, comme avec X11, mais ce n’est peut-être pas le comportement souhaité par la plupart des utilisateurs
    • Les pop-ups, alertes sonores et icônes clignotantes sont déjà des interruptions assez pénibles, et la concentration de l’utilisateur est encore plus précieuse
  • Le problème n’a jamais été, au fond, le fait d’écrire du code, mais le processus consistant à fabriquer quelque chose avec soin et rigueur
    Le développement logiciel a progressé pendant longtemps en accumulant des habitudes, des garde-fous et des structures éprouvées, mais désormais on se contente de décrire un problème, puis de déployer des résultats générés trop vite, sans les examiner correctement, au point de ne plus savoir ce qu’on a mis en production
    Comme les meubles artisanaux remplacés par des produits d’usine dont on ne sait plus qui a fabriqué quelle partie et qui ne durent pas, le logiciel est lui aussi arrivé au stade de l’assemblage et du déploiement sans compréhension
    La médiocrité va s’accumuler, mais cela pourrait aussi être le début d’un cycle où l’on se remet à réfléchir sérieusement à la façon de bien fabriquer les choses

    • L’affaire NPM left-pad date déjà d’il y a dix ans, les attaques de chaîne d’approvisionnement et les discussions sur les SBOM existent depuis longtemps, et SourceForge a même intégré des logiciels publicitaires dans des fichiers de distribution
      Si l’on ne relit pas le code, confier du code à l’IA n’est pas particulièrement pire que d’exécuter PIP ou NPM install sans vérification
  • C’est parce que le postulat selon lequel le codage est résolu est lui-même faux que le logiciel continue de se dégrader

    • Le codage est peut-être résolu, mais ce n’était pas le goulot d’étranglement au départ
      Le codage est bon marché depuis longtemps, et les entreprises l’ont externalisé auprès de la main-d’œuvre la moins chère, mais identifier les problèmes et concevoir des solutions relève d’une autre compétence
      Le code est une dette plus qu’un actif, il faut donc n’en écrire que le minimum nécessaire pour résoudre le vrai problème, et cela exige des ingénieurs
      Une fois qu’on a relu les sorties de l’IA et corrigé les erreurs, le temps passé est similaire à celui d’une écriture directe, donc cela n’aide pas beaucoup au travail
    • Le vrai problème n’est pas que le codage soit résolu, mais qu’on le croie
  • Je suis d’accord pour dire que les logiciels se dégradent, mais on ne peut pas tout mettre sur le dos de l’IA
    Les échecs de diffusion TV en streaming, les erreurs 500 dans les navigateurs et les écrans bleus sur les écrans tactiles publics existaient déjà auparavant
    Outre le fait que le nombre de programmeurs a augmenté de façon exponentielle, au point que la moitié ont seulement quelques années d’expérience ou moins, les exercices d’algorithmes monothread ne suffisent pas à gérer des systèmes distribués, le CQRS, l’event sourcing, l’auditabilité et l’idempotence
    De plus, lorsque des responsables produit non techniques (PO) prennent le contrôle du cycle de vie et poussent à implémenter uniquement le chemin nominal du MVP, les bugs et les réécritures futures sont garantis
    Les langages sont devenus plus accessibles aux débutants, passant de C++ à Java, JavaScript et Python, mais le travail est devenu plus complexe avec les systèmes distribués interentreprises, le fonctionnement 24 h/24, des millions d’utilisateurs, la sécurité et le machine learning

    • Une fois le MVP terminé, il est comme par magie considéré comme un produit lancé, et au moment où l’équipe comprend comment l’améliorer, la direction rebat l’organisation
      Pendant que les promotions de dirigeants et les fusions de départements sont présentées comme de « bonnes nouvelles », la continuité de l’amélioration du produit disparaît
    • Le product-manager-centrisme et l’obsession du MVP sont une cause majeure de la baisse de qualité
      Il n’est pas nécessaire d’appliquer Agile littéralement et bêtement ; pour l’infrastructure comme pour les applications utilisateur, on peut planifier les fonctionnalités nécessaires dans 3, 6 ou 12 mois à partir des produits existants, des concurrents et de l’expérience de l’équipe
      Même quand on suit un GPS, on vérifie l’itinéraire complet et les trois prochaines étapes ; Agile ne signifie pas qu’on ne commence à réfléchir à l’étape suivante qu’une fois la précédente terminée
    • En rendant la programmation assez simple pour que tout le monde puisse en faire, on a effectivement permis à n’importe qui d’en faire
    • Uncle Bob risque lui aussi de devenir une partie du problème maintenant qu’il adopte pleinement l’IA
    • L’IA n’est peut-être pas la cause de la baisse de qualité, mais elle accélère le déclin
      Si une machine fabrique des lits 150 % plus vite mais avec un taux de défaut de 70 %, on obtient en même temps davantage de produits défectueux, la disparition de l’expertise en menuiserie, et une baisse de la motivation et de l’utilité des artisans
      Même si la machine s’améliore un jour, c’est comme si, entre-temps, d’innombrables personnes devaient dormir dans des lits médiocres
  • Les LLM ne peuvent pas lire et comprendre une base de code entière d’un seul coup, puis prendre des décisions à partir de cette compréhension
    La partie difficile de la programmation n’est pas une fonction ou une classe isolée, mais la manière dont elles interagissent au sein d’un vaste système, et la taille des logiciels est fondamentalement supérieure à la fenêtre de contexte des LLM
    Même si la fenêtre de contexte s’agrandit, cela ne signifie pas qu’ils accumulent une compréhension comme les humains ; on ne peut donc pas dire que l’IA ait résolu le codage
    Elle est utile pour les nouveaux projets, mais créer rapidement de nouveaux logiciels a toujours été plus facile que de travailler sur du vieux code