Title: Lettre n°19 — 13 avril 2026
Date: 2026-04-13 09:00
Category: Newsletter
JsonLD:  <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BlogPosting", "name": "Lettre n°19", "description": "Lettre de veille technologique en développement logiciel", "image": [ "https://www.craftletter.fr/images/craftletter.svg" ], "datePublished": "Mon Apr 13 2026 09:00:00 GMT+0200 (Coordinated Universal Time)", "author": { "@type": "Person", "name": "Pascal Le Merrer", "url": "https://www.linkedin.com/in/pascal-le-merrer/" } } </script>
<img class="logo" alt="Logo Craft Letter" src="{static}/images/craftletter.svg">

## Maestro

[Maestro](https://github.com/mobile-dev-inc/Maestro)🇬🇧 est un framework de tests E2E, pour les navigateurs et applications mobiles.
Il est open source, contrairement à l’IDE visuel associé, qui peut servir à l’écriture et l’exécution des tests.

La description des tests se fait en YAML. Maestro attend la disponibilité des éléments d’interface utilisateur sans qu’on lui demande explicitement, et relance automatiquement les tests qui échouent.

Comme souvent avec ce genre d’outil, une offre cloud payante est proposée.

## Passer de 40 à 4 minutes pour l’exécution des tests

Ariel Juodziukynas explique comme son équipe a [divisé par 10 le temps d’exécution d’une suite de 10 000 tests](https://www.fastruby.io/blog/speed-up-tests-from-40-to-4-minutes.html)🇬🇧. Même s’il parle de Ruby, la démarche générale serait valide avec un autre langage.

Ariel liste les impacts positifs de ces changements sur l’expérience développeur, ainsi que la réduction des coûts qui en a découlé. Il aurait pu mentionner l’impact environnemental de ces améliorations.

La première étape a été la mise à jour de la version de Ruby&nbsp;; elle a été suivie par le changement du test runner. Ces points ont déjà apporté des améliorations pour un effort minime.

 Ensuite, beaucoup de factories ont été remplacées par des fixtures, qui ont l’avantage d’être réutilisables d’un test à l’autre bien qu’elles comportent quelques limitations.

L’étape suivante a consisté à identifier puis corriger les tests les plus lents.

C’est alors qu’ils ont effectué le changement le plus compliqué&nbsp;: paralléliser l’exécution des tests. Un prérequis à cela est de s’assurer que les tests peuvent être exécutés dans un ordre aléatoire. C’est seulement si cette condition est remplie que l’on peut activer la parallélisation, qui doit être gérée par le test runner.

Il leur a fallu alors gérer des problèmes d’accès concurrents à des ressources, comme deux tests qui veulent modifier simultanément un même fichier. Cette étape a été la plus compliquée. 

## Devenir un pro de Vim

[VIM_GYM](https://www.vimgym.app/)🇬🇧 est un jeu en ligne pour apprendre les raccourcis clavier de Vim. Il propose des challenges (modifier un extrait de code) à accomplir le plus rapidement possible, en solo ou contre des adversaires.

## Apache Superset
[Apache Superset](https://superset.apache.org)🇬🇧 est une plateforme de visualisation et d’exploration de données. Il comporte un éditeur visuel pour créer des dashboards, alimentés par une base de données. Il fournit des drivers pour 80 sources de données différentes, mais les fonctionnalités supportées varient. 

*Le bouton getting started dans la page d’accueil est cassé, mais celui du haut fonctionne.*

Cet outil me rappelle [Metabase](https://www.metabase.com/)🇬🇧. 

Un moyen de gagner du temps sur un projet est de rendre autonomes les équipes qui utilisent ces dashboards au quotidien. Elles peuvent créer leurs propres requêtes pour afficher les métriques qui les intéressent, sans passer par l’équipe de développement, qui est soulagée de cette charge. Mais cela va introduire de la rigidité&nbsp;: les développeurs ne pourront plus faire évoluer le modèle de données sans impacter les requêtes écrites par les autres équipes. Si ce problème n’est pas géré, la structure  de la base de données peut devenir incohérente avec celles des données qu’elle stocke. Exemple vécu&nbsp;: pas moyen d’ajouter un état pour dire qu’un paiement est annulé, et le distinguer d’un paiement qui a échoué.

## Les fonctionnalités de Sqlite dont vous ignorez (peut-être) l’existence

[Sqlite supporte des fonctionnalités](https://slicker.me/sqlite/features.htm)🇬🇧 comme le JSON, les colonnes générées, la recherche full-text, le typage strict, les logs Write Ahead (qui améliorent la concurrence et les performances), les expressions de table communes (CTE) et les fonctions de fenêtrage (window functions).

[Les CTE](https://learnsql.fr/blog/sql-ctes-une-vue-d-ensemble-complete-des-expressions-de-table-communes/)🇫🇷 sont une fonctionnalité récente de SQL, qui permet de décomposer les requêtes complexes sans stocker de données intermédiaires dans la base. Elles sont plus faciles à lire et interpréter que les sous-requêtes.

[Les fonctions de fenêtrage](https://learnsql.fr/blog/que-sont-les-fonctions-sql-window/)🇫🇷 sont des fonctions qui effectuent des calculs sur l’ensemble des lignes liées à la ligne courante.

## Utiliser PostgreSQL pour tout

Je vous parle régulièrement de PostgreSQL, car cette base open source est devenue au fil des ans la base relationnelle de référence. C’est, de mon point de vue, le choix par défaut à faire, à moins que votre projet ait un besoin spécifique, qui ne serait pas couvert par PostgreSQL.

Stephan Schmidt va plus loin que moi, puisqu’il propose d’[utiliser PostgreSQL dans une vingtaine de cas](https://www.amazingcto.com/postgres-for-everything)🇬🇧 pour lesquels, habituellement, on utilise un autre service, tel que Redis, MongoDB, Kafka, Elastic Search, des webhooks, des cron jobs, etc. La plupart du temps, il suggère d’utiliser une extension à la place.

## Common Expression Language

Le [Common Expression Language (CEL)](https://cel.dev/?hl=en)🇬🇧 est un langage simple pour décrire des règles ou des configurations, qui peuvent être appliquées, par exemple, à chaque appel d’un endpoint d’API, pour vérifier les droits de l’utilisateur.

C’est un langage open source créé par Google. Il en existe des implémentations pour Java, C++, Go, Python, C#, Rust et Kotlin (je ne suis pas certain que cette liste soit exhaustive). Google met en avant la rapidité d’exécution de CEL, et son système de types, basé sur celui de Protocol Buffer.

## Comment je suis devenu manager malgré moi

Axel raconte [comment il est passé du rôle de développeur à celui de manager](https://codeheroes.fr/blog/devenu-manager-malgre-moi/)🇫🇷, tout en continuant à coder. Il explique quelles pratiques il a adoptées initialement, et pourquoi elles n’ont pas été suffisantes pour redresser une situation dégradée par un environnement toxique. Il décrit ensuite comment il a pu restaurer la confiance de l’équipe envers l’entreprise, confiance dont la perte était le vrai problème. 

Si vous n’êtes pas manager, ou n’envisagez pas de le devenir, ce retour d’expérience peut vous être utile pour identifier ce que votre manager pourrait faire de mieux. D’autant plus que Axel mentionne, humblement, les erreurs qu’il a commises.
## Tech’Work

Le 18 juin 2026 aura lieu la conférence [Tech’Work](https://techwork.events/)🇫🇷, à Lyon. Ses centres d’intérêts sont la Data, le Craft, le Cloud, l’Agilité et le Networking. La billetterie est ouverte et la quasi-totalité du programme est déjà annoncée.

## Nantes Craft 2026

[Nantes Craft](https://www.nantes-craft.fr/)🇫🇷 sera de retour pour une seconde édition les 10 et 11 septembre prochains. La première, à laquelle j’ai participé, était très réussie, que ce soit au niveau du programme ou de l’organisation. Je vous recommande donc cet événement&nbsp;! Le CFP est ouvert.
