- J’ai vécu pendant plus d’un an avec un problème de race condition sur la recherche de Mintlify sans pouvoir l’améliorer, ce qui était agaçant.
- Bien que je sois le fondateur de Trieve, le fournisseur du moteur de recherche de Mintlify, mon statut de vendor ne me permettait pas d’accéder au code directement, donc je ne pouvais pas corriger le problème.
- Finalement, après avoir rejoint Mintlify, j’ai résolu en direct les problèmes d’annulation des requêtes de recherche et de synchronisation des résultats grâce à
AbortController. - J’ai mis l’accent sur l’avantage concret de l’open source, qui aurait permis de corriger immédiatement via une PR si le projet avait été ouvert.
- Corriger directement même un petit inconfort m’a fait ressentir une fois de plus le sentiment de satisfaction et l’importance d’améliorer le produit.
Récit d’un correctif réalisé après avoir rejoint l’équipe faute de pouvoir soumettre une PR
Un bug de recherche de Mintlify qui gênait depuis plus d’un an
- Dans la fonction de recherche de Mintlify, une race condition provoquait un traitement en double des requêtes, et des résultats de recherche erronés s’affichaient alors que l’utilisateur tapait.
- Je suis le fondateur de Trieve, le fournisseur externe du moteur de recherche utilisé par Mintlify, mais je n’avais pas d’accès au code pour le corriger directement.
- J’ai signalé le problème à plusieurs reprises dans un canal Slack partagé, mais il est resté en attente longtemps car la priorité était faible.
- Chaque fois que l’expérience de recherche de Trieve avait mauvaise figure sur Mintlify, je ressentais, en tant que fondateur, un poids sur ma fierté personnelle et sur l’image de la marque.
Rejoindre l’équipe pour résoudre directement
- En rejoignant Mintlify, j’ai pu accéder directement à la base de code.
- J’ai implémenté AbortController dans la fonction de recherche afin d’arrêter immédiatement les requêtes de recherche précédentes.
- Maintenant, à chaque frappe de l’utilisateur, seuls les résultats de la dernière recherche la plus récente sont pris en compte, ce qui garantit des résultats précis et à jour.
- La satisfaction de pouvoir corriger un problème qui gêne depuis si longtemps est très forte.
- Comme George Hotz, qui avait brièvement rejoint Twitter pour corriger la pop-up de connexion, je suis convaincu qu’il faut adopter une attitude de hackeur-entrepreneur qui consiste à résoudre les problèmes directement.
- Ce type d’expérience directe et concrète de résolution de problèmes oriente la carrière dans une meilleure direction.
La valeur concrète de l’open source
- À titre personnel, je préfère développer et utiliser des logiciels open source.
- Si le projet était open source, un développeur externe pouvait soumettre une Pull Request (PR) pour corriger des bugs ou améliorer des fonctionnalités.
- Si la fonction de recherche de Mintlify avait été open source, le problème persistant pendant un an aurait pu être résolu immédiatement via PR.
- Dans un modèle source fermé, une limite importante est que l’amélioration n’est possible qu’avec un accès au code.
- Je reconnais la valeur de l’attribution immédiate de droits en open source, tout en comprenant les différences de modèles économiques entre les entreprises.
Récompense de l’amélioration directe
- L’amélioration de la fluidité et de la réactivité de la recherche Mintlify vient précisément de cette correction.
- En corrigeant directement un petit bug qui me préoccuppait depuis longtemps, j’ai ressenti la satisfaction de contribuer à l’amélioration du produit.
- Grâce à cette expérience, j’ai compris qu’en corrigeant encore et encore de petits problèmes, même mineurs, le produit devient bien meilleur.
- Les petites corrections effectuées directement s’accumulent et améliorent de manière spectaculaire l’expérience utilisateur.
- Je veux continuer à construire de meilleurs produits grâce à cette accumulation de petites améliorations.
3 commentaires
Hahahaha, je vous respecte.
Développeur de haut niveau
Commentaires Hacker News
Mon compte Amazon avait autrefois été suspendu pour suspicion de fraude ; c’était un vieux compte, et j’avais supprimé l’adresse e-mail et le numéro de téléphone après plusieurs fuites de bases de données. Une fois embauché, j’ai contacté en interne la personne chargée de l’équipe anti-fraude d’Amazon et le déblocage a été réglé rapidement ; via le support client, ça n’avait servi à rien.
C’est ce qu’il y a de plus agaçant chez Amazon. Quand je trouve un produit sur Reddit ou dans d’autres avis, je tombe généralement sur un lien amazon.com. On me demande alors de basculer vers un compte en dollars US, puis pour commander je dois repasser sur le compte allemand/en euros. C’est beaucoup trop pénible. J’aimerais qu’on puisse simplement naviguer librement entre les régions, et ne changer de profil qu’au moment de commander. Ce serait bien aussi d’avoir une option pour acheter auprès d’un vendeur local.
Intéressant. J’ai encore un téléphone cassé reçu pendant mon onboarding chez Google ; en interne, personne ne s’en soucie. Il y avait bien un outil permettant de le corriger soi-même, mais avec aussi un message disant qu’on serait licencié si on l’utilisait sans autorisation.
J’ai aussi eu un compte Facebook impossible à débloquer pendant 9 mois, puis j’ai fini par travailler là-bas par hasard et il a été réactivé immédiatement.
J’aimerais vivre un moment épique comme ça dans ma vie.
J’aimerais bien avoir cette chance moi aussi ; si j’ai perdu mon compte Amazon, c’est parce qu’un des chiffres au début de mon numéro international avait été mal saisi. Du coup, je ne pouvais plus utiliser la vérification par SMS, et le téléphone avec l’app OTP venait justement de tomber en panne.
Si Google Maps veut m’embaucher pour n’afficher les distances qu’en km, mes coordonnées sont dans mon profil HN. Je crois avoir fait le changement de miles en km 500 fois en 20 ans. C’est absurde qu’une entreprise qui analyse autant ses utilisateurs rate un truc aussi basique.
Le fait de l’avoir fait 500 fois est vraiment absurde. Ça me fait imaginer un A/B test qui échoue faute d’engagement utilisateur. On dirait que j’ai passé 7 entretiens et soumis une PR pour en arriver là.
J’aimerais retrouver la personne qui a décidé que toute la carte devait passer en « mode taille réelle 1 cm = 1 cm » pendant tout le trajet et lui en coller une. C’est probablement la même qui a aussi décidé de laisser la voiture sortir de l’écran quand on zoome manuellement, puis de forcer le retour au zoom d’origine quand on appuie sur « recentrer ». Même les GPS de 2005 avaient déjà résolu ça.
Pendant un voyage au Mexique, même connecté, Google Flights repassait des dollars aux pesos à chaque ouverture d’onglet. On sent qu’ils n’en ont vraiment rien à faire.
Quand je travaillais chez Google il y a 10 ans, j’ai signalé ce problème via le formulaire de feedback interne et je n’ai jamais eu de réponse. Depuis, je signale ce bug chaque année via les retours Google Maps ; certaines années, je l’ai même envoyé deux fois. C’est devenu un bug vraiment honteux.
Je serais aussi intéressé par un job lié à gmaps ; pour les trajets de plus d’une heure, j’aimerais qu’il mette aussi en cache le chemin du retour à l’avance. Quand il n’y a plus de réseau, devoir mémoriser l’itinéraire devient vite pénible.
C’est amusant de voir une vieille blague devenir réalité. Il y a aussi une demande pour ajouter (encore) une marge à gauche ; lire du texte collé tout au bord de l’écran est un peu inconfortable.
En suivant les liens du billet, je suis tombé sur un cas où quelqu’un chez Apple a ajouté la suppression automatique des pass expirés, puis a quitté l’entreprise juste après. Maintenant, chaque fois que j’utilise cette fonction, je me dis que je devrais le remercier mentalement. C’était un vrai problème pénible.
Autant embaucher directement l’OP pour qu’il le corrige, non ?
Je n’aime pas beaucoup les sites qui gaspillent l’espace d’écran.
Moi, j’aime l’alignement à gauche ; pour moi, c’est là que le texte doit être.
Il explique avoir ajouté
AbortControllerà une fonction de recherche debounced afin d’annuler la requête précédente à chaque nouvelle saisie. Ce qui m’agace le plus, c’est quand un filtre ou une recherche s’applique alors qu’on n’a pas encore fini de taper ; j’aimerais que ça attende la fin complète de la saisie.Dans la recherche de logs Grafana, si on modifie un filtre de logs déjà appliqué, ils facturent une requête à chaque caractère changé. C’est le genre de chose qui m’a obligé à modifier mes habitudes d’usage de l’UX. On n’est pas facturé pour la chaîne recherchée, mais pour le nombre de caractères saisis.
Quand j’ai implémenté la recherche en temps réel sur mon blog, j’ai laissé toutes les suggestions de recherche précédentes se terminer avant d’envoyer une nouvelle requête. Ça m’a semblé une façon raisonnable de limiter la charge serveur tout en gardant une bonne réactivité.
Je déteste particulièrement ça sur les sites de réservation : les filtres sont dans une barre latérale à gauche, et si tout n’est pas visible à l’écran, chaque action fait remonter la page tout en haut, ça recharge, les filtres passent en lecture seule, et il faut attendre que tout soit fini avant de pouvoir enfin en ajouter un autre.
Un bon compromis, à mon avis, consiste à attendre quelques centaines de millisecondes après l’arrêt de la saisie avant d’envoyer la requête. Ou alors envoyer la requête tout de suite, mais ne pas afficher les résultats tant que l’utilisateur n’a pas cessé de taper.
Je déteste vraiment ce comportement. C’est comme un éditeur de code fancy qui émettrait une alerte à chaque lettre tapée. Si, au moment où j’écris
ipuisf, il affiche déjà « votre bloc if-then n’est pas fermé ! », c’est une réaction beaucoup trop nerveuse alors qu’on sait très bien que je suis encore en train d’écrire. Il vaut mieux attendre que ce soit terminé avant d’alerter ; dans la plupart des langages ou outils, je désactive ce genre de notifications en temps réel pour ne voir les erreurs qu’au build ou à l’exécution. LSP (Language Server Protocol) devrait se calmer.Le niveau de qualité logicielle est désormais si bas que, quand un bug nous dérange, il est presque plus simple de se faire embaucher pour le corriger soi-même. Ça me rappelle l’histoire du programmeur qui a réglé le problème de chargement de GTA 5 ; même avec tout l’argent de GTA 5, améliorer la qualité n’était pas simple.
Je vois ça non comme un problème de qualité, mais de priorités. Les entreprises choisissent d’abord ce que les équipes veulent faire plutôt que ce que veulent les utilisateurs. Il manque des tests avec de vrais utilisateurs et des expérimentations fondées sur les données. En réalité, cet exemple n’est pas tant la solution d’un problème qu’un aperçu du vrai problème. Il y a probablement des sujets bien plus utiles, mais une personne a simplement ajouté la fonctionnalité qu’elle voulait elle-même.
Les gens qui dépensaient beaucoup d’argent sur la carte de GTA:O ne se souciaient pas des temps de chargement. Moi, agacé, j’ai chronométré et réalisé que je passais plus de temps sur les écrans de chargement que dans les missions elles-mêmes, et j’ai fini par arrêter complètement le jeu.
Blague pour demander si c’est toi, la personne de ce mème internet.
Je trouve étrange que l’article ne parle pas du tout de la partie embauche. On a juste l’impression de « quelque chose m’agaçait, puis je l’ai corrigé parce que j’ai rejoint l’entreprise », donc il manque un élément central de l’histoire.
À l’inverse, j’ai déjà travaillé dans une entreprise où les juristes en propriété intellectuelle nous empêchaient de soumettre des PR à des projets open source. Malgré ça, si on détaillait précisément les entrées et le numéro de ligne du bug, on arrivait parfois à convaincre quelqu’un de le corriger directement. En gros, on fournissait des rapports QA gratuits plutôt que du code.
Ça me rappelle l’histoire presque légendaire de George Hotz, qui a brièvement rejoint Twitter en 2022 et a résolu le problème de la popup de connexion. Mais dans mon souvenir, ce n’est pas exactement ça : George Hotz disait qu’il pouvait « réparer la recherche », est presque reparti aussitôt, et n’a finalement supprimé la popup qu’en lot de consolation.
Je viens de retomber dans un mini-terrier de recherche sur George Hotz, les patent trolls et comma.ai. La société Comma.AI de George Hotz propose un « comma 3x » à 999 $, un smartphone avec connecteur OBD-II et un faisceau à 99 $, qui peut ajouter des fonctions de niveau Autopilot à la plupart des voitures fabriquées au cours des 10 dernières années, y compris des Tesla. Coût total : 1098 $, le tout en open source sur GitHub, avec même un accès
sshau véhicule. L’abonnement cloud optionnel coûte 10 $/mois (avec sa propre SIM) ou 24 $/mois (données cellulaires incluses par le vendeur). En revanche, il n’y a pas encore d’équivalent au Tesla Sentry Mode, et cela reste référencé dans issue #29912. Le Sentry Mode original de Tesla consomme 250 W — avec une batterie de 80 kWh, on passe de 80 % à 30 % en 7 jours — donc si openpilot consommait moins de 5 W, ce serait bien plus efficace.Dans mon souvenir, George Hotz s’était vanté d’avoir rejoint Twitter, n’y avait rien fait, puis était parti discrètement. C’était embarrassant, et largement de son propre fait.
Il dit avoir ensuite corrigé plus précisément le texte, tout en mettant hors ligne le blog lui-même à cause d’un bug Github Pages.
Si je me souviens bien, à la fin, il avait proposé à Elon de reconstruire entièrement Twitter.
Personnellement, j’ai même envisagé de postuler chez Discord juste pour envoyer une PR qui transformerait les énormes emojis en simple option à activer/désactiver. Je ne suis pas le seul à le vouloir ; tout mon serveur l’attend avec impatience.
Je ne sais pas si ça aide, mais moi j’évite temporairement le problème en ajoutant un point après l’emoji. Ce n’est pas utile pour les nouveaux utilisateurs, mais ça me dépanne.
Discord étant une app Electron, on pourrait en théorie le modifier via un mod côté client. En revanche, je ne sais pas quel est le risque de suspension de compte.
Il y a aussi un commentaire qui demande ce que cela veut dire exactement ; par exemple, il est précisé qu’il existe déjà une option pour désactiver la conversion automatique d’émoticônes comme
:).