Blog Zenika

#CodeTheWorld

AutresÉvénementsCrafting Software

Retour sur AlpesCraft 2024 ⚒️

Les 6 et 7 juin derniers, l’équipe de Zenika à participé à la conférence Alpes Craft 2024 à Grenoble en plus de l’avoir sponsorisé. Un événement incontournable pour parler de Software Craftsmanship qui a réuni près de 350 participants.

Nous avons eu l’occasion de participer et nous avons trouvé la journée riche en enseignements et rencontres. Envie d’en savoir plus sur ce que nous avons retenu ? Lisez notre article complet sur quelques retours de conférence que l’on a suivi et apprécié.

Zenika en force

À Zenika, il est dans notre ADN de toujours chercher à nous améliorer et nous apprécions beaucoup les retours d’expérience qui peuvent transformer notre façon de travailler. Nous avons donc débarqué à douze pour assister à cette conférence, car c’est l’endroit idéal et une occasion unique de rencontrer d’autres professionnels passionnés.

Le petit plus

Entre chaque conférence, un petit moment informel permet de prendre un café et d’échanger avec les conférenciers et les autres participants. La technique du Pacman est de mise. Elle consiste lors des discussions en groupe, à se disposer en cercle, non fermé, afin de faciliter l’inclusion de nouveaux participants dans le groupe. Vous connaissiez ?

Sélection des talks que nous avons vu et souhaitons vous partager

Manager par les “pièces” : le fondement du lean qui transforme toute l’entreprise (Régis Médina)

La keynote de Régis Médina a été une ouverture inspirante sur le concept du Lean management appliqué aux processus d’entreprise. Cette façon de penser repose sur l’idée que chaque tâche ou composant peut être isolé, analysé et amélioré individuellement. Ce concept va au-delà des simples processus pour inclure des raisonnements solides conduisant à de meilleurs produits. Par exemple, dans la programmation, chaque élément de code est une « pièce » à perfectionner comme, par exemple, un système d’authentification. Une « pièce Craft » permet aux équipes de capturer et de standardiser l’expertise, révélant ainsi les modèles mentaux et améliorant continuellement les pratiques. Ce management granulaire permet une optimisation précise et efficace, transformant ainsi l’ensemble de l’entreprise.

‘Tidy First?’ de Kent Beck, un guide pratique pour un code durable et rentable (Arnaud Thiéfaine)

Pour garder sa base de code saine, même lorsque l’on arrive sur un projet qui n’a pas mis la qualité au centre de ses pratiques, on peut appliquer un ensemble de techniques que l’on appelle tidying (littéralement rangement, nettoyage). Le tidying tire ses principes de clean code. C’est l’objet du dernier livre de Kent Beck, Tidy First, expliquant qu’un logiciel informatique a une structure et un comportement, ce dernier étant la partie visible côté utilisateur et le plus important. Il explique pourquoi même si elle n’est pas visible la structure est critique, car elle va influencer la complexité à faire évoluer et maintenir le logiciel dans le temps. Le livre explique donc une quinzaine de pattern de micro-refactoring à appliquer sur la structure qui vont permettre de renforcer la lisibilité et la cohésion du code. On peut appliquer ces micro-pattern avec la technique du “boy scout”, c’est-à-dire qu’on va laisser le code plus propre après notre passage que dans l’état dans lequel on l’a trouvé.

Functional Habits (Jérôme Avoustin)

Jérôme Avoustin nous a parlé de la programmation fonctionnelle et comment celle-ci peut significativement améliorer la qualité du code et s’intégrer harmonieusement avec les pratiques crafts. Via des exemples simples, mais efficaces, il nous a présenté trois concepts de la programmation fonctionnelle.

La composition, qui est au cœur de la programmation fonctionnelle, permet de combiner des fonctions simples pour créer des opérations complexes, offrant une flexibilité et une modularité accrue. 

Les données immuables qui ne changent pas une fois créées, éliminant les effets de bord et rendant le code plus prévisible et maintenable. 

Le Type-Driven Development (TDD), qui consiste à définir tous les éléments comme des types avant d’écrire les tests, améliore la précision et réduit les erreurs de paramétrage.

Montée de version sans interruption (Nelson Dionisi) & Continuous Delivery : Straight to the Prod (Caroline Desplanques et Régis Marteau)

Alpes Craft c’est également des retours d’expérience. Des retours qui nous font prendre conscience de l’importance de pouvoir déployer des mises à jour de son application automatiquement sans interruption et de façon continue. Faire cela à un double avantage ; faire en sorte que la mise en production soit un non-événement, donc limiter le stress des déploiements et permettre aux équipes de ne pas perdre du temps sur des tâches rébarbatives et se concentrer sur les tâches où ils apportent de la valeur.

Pour les applications qui n’ont pas d’état (stateless), on peut assez facilement appliquer le principe de déploiement progressif (rolling update) mais à partir du moment où notre application utilise une base de données, ça se complique ! Heureusement, nous avons appris des techniques pour faire du déploiement continu de nouvelles fonctionnalités induisant des changements dans la base de données : nouvelles colonnes, changement de champs, ajout de contraintes, etc.
La règle d’or est toujours la même : la version n+1 de la base de données doit fonctionner avec la version n de l’application ; donc être rétro-compatible. Vous avez d’ailleurs à disposition sur notre blog un article qui détaille ce processus pour différents cas. On a retenu qu’il fallait faire bien attention au timing auquel on lance nos migration sur des applications à fort trafic. En effet, une migration peut causer des ralentissements qui impactent les utilisateurs. Certaines migrations posent des locks sur des tables entières qui mettent en file d’attente les opérations de lecture/écriture et peuvent causer des timeouts. Il est donc très important de bien monitorer la tendance d’utilisation de son site afin de lancer une migration au bon moment.

Dans le cas où vous travaillerez sur une application qui s’appuie sur un bus de message, vous pouvez appliquer à peu près le même principe, sauf qu’il faut commencer par faire en sorte que le consommateur puisse consommer la nouvelle version des messages avant de pouvoir dé-commissionner les consommateurs version n-1.

Ces techniques demandent un investissement non négligeable, surtout pour converger vers un système fiable, mais induiront un gain de temps et de sérénité considérable. Attention, qui dit déploiement continu, dit également plus de versions et plus de releases. Il est donc important de bien communiquer les nouveautés auprès de ses clients et des services internes (marketing, support) qui sont au contact des utilisateurs.

La Théorie de la Residualité : une perspective nouvelle de l’architecture logicielle (Cyrille Martraire)

Comment déterminer qu’un système à une bonne architecture ? Comment la choisir ? Cyrille Martraire nous donne des réponses en nous présentant la théorie de la résidualité. C’est une nouvelle approche pour concevoir des architectures logicielles robustes en se concentrant sur la capacité du système à résister au stress. Contrairement aux méthodes traditionnelles qui s’appuient sur des patterns éprouvés et l’expérience, la résidualité cherche à accélérer l’apprentissage en simulant des stress variés et imprévisibles sur le système.

L’idée centrale est de tester et de pousser une architecture à ses limites dès le début, en utilisant une matrice d’incidence qui croise les composants du système avec divers stress (techniques, commerciaux, etc.). Chaque stress appliqué révèle des faiblesses et permet de noter les actions qui seraient nécessaires pour renforcer la résilience du système.

Cette approche, inspirée de la marche Deleuzienne, prône la répétition avec des variations pour acquérir une compréhension profonde et évolutive du système. En intégrant des éléments aléatoires et inattendus, on élargit le champ des possibles et on prépare le système à affronter du stress inconnu, rendant ainsi l’architecture plus robuste et adaptable.

En résumé, la résidualité offre une méthode scientifique et pragmatique pour construire des architectures capables de survivre aux conditions les plus adverses, dépassant les paradigmes traditionnels du Domain-Driven Design et des approches structuralistes.

Code Case : les méthodes de la crim adaptées au code! (Sylvain Coudert)

Les criminels laissent toujours des indices, mais il n’est pas toujours facile de les trouver ! Dans un projet, c’est pareil : il est souvent difficile d’identifier les points qui posent problème. Pour y remédier, Sylvain Coudert nous a présenté une méthode inspirée du livre « Your Code as a Crime Scene » d’Adam Tornhill, qui utilise Git pour tracer la dégradation du code au fil du temps et identifier ainsi les « scènes de crime ». En examinant les logs Git avec des outils comme Code Maat, on peut obtenir des statistiques précieuses qui révèlent les « hotspots » (des fichiers fréquemment modifiés et potentiellement problématiques). Cette méthodologie consiste à analyser les logs, identifier les fichiers suspects, examiner leur complexité et observer le couplage temporel pour ainsi détecter les couplages de code implicites. L’approche permet de rendre visibles les problèmes cachés, de choisir les plus impactant et de travailler efficacement à leur résolution. C’est un bon outil pour impliquer l’équipe et le management dans la prise de conscience des enjeux liés à la dette technique. Il peut être aussi intéressant pour un consultant de l’utiliser en début de mission pour analyser l’état de santé du logiciel.

Vous n’êtes pas passionné(e). Et alors ?! (Helvira Goma)

Au-delà des pratiques et des conférences techniques, nous avons pu nous plonger dans l’histoire de deux peuples vikings divisés par leur vision du travail. L’un étant guidé par la passion, l’autre non. Storytelling à part nous avons pu nous rendre compte de la présence quasi omniprésente de ce mot-clé, motto des entreprises, notamment dans les offres d’emploi. Cette passion a été l’objet de différentes études scientifiques ayant souvent eu pour conclusion qu’elle justifie l’exploitation, légitime les heures supplémentaires, sans compensation financière, sous prétexte qu’elle est elle-même une récompense suffisante ! La passion confère malgré tout des avantages, si elle n’est pas obsessive, puisqu’elle permet de prendre du plaisir et procure de la satisfaction personnelle par exemple lorsqu’on livre un code dont on est fier.

Guerilla Programming : Petit manuel de craft en milieu hostile (Hadrien MENS-PELLEN)

Nous avons également appris comment, au travers de 12 tactiques de « guérilla », la possibilité d’aller vers de la promotion du craft dans un milieu « hostile », qui au premier abord, ne prône pas la volonté de faire du beau code et d’avoir des pratiques de qualité. Cet ensemble de tactiques, nous permet de mieux prendre en main nos missions et de retrouver du bonheur au quotidien. Attention, certaines cartes sont plus risquées à jouer que d’autres et sont à utiliser en dernier recours, c’est-à-dire si nous n’arrivons pas à convaincre ou que la coopération ne fonctionne plus.

Modern Craft Experience avec Github Copilot (Dorra Bartaguiz)

Comme toutes conférences dans la tech, il y a toujours une part réservée à l’IA générative. Cette année Dora Bartaguiz nous a animé un atelier sur l’utilisation de Github Copilot en conjonction avec des pratiques craft comme le TDD et le BDD. Nous espérons produire rapidement du code de haute qualité, mais nous avons découvert que ce n’était pas aussi simple. Le principal défi réside dans le fait que Github Copilot conserve tout le contexte depuis son ouverture, ce qui peut entraîner des pertes de pertinence ou des « hallucinations » de code. Il est donc crucial de bien comprendre et de maîtriser les limites de l’IA. Dora a partagé une méthodologie efficace : commencer par définir un premier exemple, demander à Copilot de générer d’autres exemples, transformer ces exemples en tests, puis implémenter chaque test. Cette approche structurée permet de jongler entre les suggestions de l’IA et ce qui est réellement pertinent, améliorant ainsi la qualité du code produit.

Notre avis

Nous avons vraiment apprécié cette journée de conférence. Elle a été riche en enseignements, en rencontres et nous a permis de participer à des ateliers interactifs

Nous sommes revenus avec une vision renouvelée et des outils concrets pour transformer notre façon de travailler (applicable dès le lendemain !) prouvant une fois de plus l’importance de participer à de tels événements. Nous vous recommandons fortement d’y assister l’année prochaine ; mais attention les places partent très vite !

Par Loïc Rosso & Jérémy Tutzo.

Pour nous suivre sur Youtube, c’est là => ZenikaTv

Auteurs/autrices

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

En savoir plus sur Blog Zenika

Abonnez-vous pour poursuivre la lecture et avoir accès à l’ensemble des archives.

Poursuivre la lecture