L'AFUP Day Lyon - Retour d'expérience
2023-06-28
Grégory, Analyste Programeur Back-end, s'est rendu en mai à l'AFUP Day de Lyon et nous partage son retour d'expérience : entre conférences et rencontres, le journée était chargée et pleine d'échanges intéressants.
QU’EST-CE QUE L’AFUP ET L’AFUP DAY ?
Le vendredi 12 mai 2023 a eu lieu l'édition 2023 de l'AFUP DAY, journée entière dédiée à des présentations très diverses touchant de près ou de loin à PHP. L’AFUP, acronyme signifiant « Association Française des Utilisatrices et Utilisateurs de PHP», fait la promotion des technologies liées à PHP et organise l’AFUP DAY chaque année, généralement en mai. Cette association organise également, au mois d’octobre, le Forum PHP. Ayant moi-même été au forum PHP, édition 2022, vous pouvez cliquer ici pour regarder mon retour d’expérience en replay.
L’AFUP DAY 2023 Lyon (retrouverez quelques articles et présentation de l'édition de Lille) a eu lieu à l’école CPE Lyon où des centaines de développeur(se)s se sont réunis pour l’occasion. Une journée entière rythmée par les rencontres (lors des pauses repas notamment) et les conférences. Contrairement au Forum PHP, il n'y a pas de captation vidéo : ce qui est présenté là-bas n’existe que par les slides partagées par les intervenant(e)s, et les souvenirs des gens assistant aux conférences. C’est pourquoi je vous propose ce retour d’expérience sur chacune des conférences présentées.
CONFÉRENCE 1 : TIRER PARTI DU COMPOSANT EXPRESSIONLANGUAGE DE SYMFONY
Intervenants : Florian MERLE, Matthias ARLAUD
Cette conférence a eu pour objectif de développer l’ExpressionLanguage Component de Symfony et son utilisation à travers quelques cas de figure et quelques démonstrations de code.
Exemple utilisé : Comment traduire une règle métier telle que "L'élève est inscrit à Parcours Sup et a été accepté à un de ses vœux se trouvant loin de son domicile" en code ? La notion d'"élève" peut être modélisée par $eleve ou $student ou $user selon la langue et le contexte, donc comment gère-t-on cette notion de manière unifiée ? il faut rentrer dans des détails profonds comme la notion d'arbre syntaxique, de business rule engine et de code agnostique.
Cet exemple permet de gérer l’édition de règles métier dans l’application. Ce composant (nouveau pour moi) existe ailleurs que dans Symfony. Retrouvez l’ensemble des slides de la présentation ici.
CONFÉRENCE 2 : MENTORS – TROUVER LE BON EQUILIBRE PEDAGOGIQUE
Speaker : Pauline RAMBAUD
Cette conférence, moins technique, a permis de présenter les nombreux intérêts du mentorat et de mettre en évidence les facteurs qui peuvent faire la différence pour vivre une expérience positive. Manque d’encadrement, difficulté à trouver de l’aide, ou encore onboarding incomplet, les risques de mauvaises expériences dès l’entrée dans l’entreprise sont importants et le mentorat peut être une des solutions.
Pour être un bon mentor, il faut surtout « avoir le temps et l’envie de le faire ». Quelques conseils clés ont été explicités :
- Définir des objectifs et ainsi prévoir une progression sans surcharger le/la mentorée
- Préparer un planning
- Anticiper les obstacles potentiels
- Laisser la place aux essais et aux initiatives – les erreurs ne sont pas interdites, elles doivent servir d’exemple pour ne plus les refaire.
- Être pédagogue : avoir des compétences et les expliquer, ce n'est pas pareil
La notion du "bring me a rock" management a également été abordée. Si je demande un caillou, sans plus de consigne, je n'aurai probablement pas le caillou que je veux. Galet, roche, lourd, léger, gris ou blanc ?. Si la consigne est ambigüe, Il est impossible d’avoir un résultat satisfaisant : donner un maximum de détails pour que la tâche soit comprise et correctement effectuée ! Retrouvez cette conférence en vidéo (filmée hors AFUP Day 2023)
CONFÉRENCE 3 : MONADES – PARADIGME UNIQUE POUR LA PROGRAMMATION (A)SYNCHRONE
Speaker : Baptiste LANGLADE
Ce sujet, assez technique, avait pour problématique le temps de traitement de l’ouverture de 2 fichiers (F1 et F2) ouverts en synchrone l’un après l’autre. Ici, le temps de traitement est égal à la somme des deux ouvertures. L’objectif est d’accélérer le traitement en ouvrant les fichiers en asynchrone : le temps de traitement est alors égal à MAX(ouverture(F1),ouverture(F2)). Le gain de temps est conséquent.
Au cours du talk, il a été question de monades, un élément de programmation fonctionnelle qui consiste à encapsuler un objet dans un autre, de manière à ce qu’il ne subisse aucun effet de bord. L’intervenant a exposé les solutions possibles pour la problématique d’ouverture des deux fichiers : React / Generator / Fiber, puis les compromis entre les solutions.
L’ensemble de la présentation (slides/démo) peut être retrouvé ici.
CONFÉRENCE 4 : Le ZÉRO DOWNTINE DEPLOYMENT (ZDD) EN PRATIQUE
Speaker : Smaïne MILIANNI
Problématique : Comment faire des mises en production à chaud sans avoir à mettre l’application en indisponibilité ? Grâce au concept de ZDD et deux règles importantes sur les changements, cela est possible :
- Règle 1 : ils doivent être backward compatibles.
- Règle 2 : ils doivent être faits par release.
L'idée est de préinstaller les changements, par exemple en créant des colonnes à NULL, puis, dans un second temps, affecter des valeurs et des contraintes, ce qui ne provoquera pas d’erreurs lors des migrations SQL. Avec les messages brokers et les serializers, il peut y avoir des process encore plus spécifiques, mais ces deux règles sont les points principaux du ZDD.
Ce qu’il faut prendre en compte avec cette procédure, c’est que le système est dans un état instable jusqu’à la dernière étape, ce n’est pas neutre. Et, pour avoir l’usage du ZDD, il vaut mieux être dans un mode où il y a des MEP plusieurs fois par semaine minimum. Pour une MEP par mois, ce ne serait pas très adapté.
Quelques précautions d'usage peuvent permettre de faciliter le ZDD :
- Documenter les scénarios : toutes les étapes pour accomplir une MEP en ZDD doivent être dans une documentation pour ne pas repartir de zéro à chaque fois.
- Faire post-mortem & feedback : archiver les cas de figure où il y a eu des problèmes, pour la connaissance globale de l’équipe. Itérer sur ce qui a marché.
- Avoir un ZDD référent: savoir qu’on a un interlocuteur privilégié plutôt que de rester avec des questions et potentiellement ne pas relever un point d’importance.
Cliquez ici pour découvrir les slides et cliquez ici pour lire un article technique sur le sujet, si vous souhaitez aller plus loin.
CONFÉRENCE 5 : DÉMYSTIFIONS LES PRATIQUES DU SOFTWARE CRAFTMANSHIP
Speaker : Thomas BOILEAU
Dans ce talk, les différents aspects du software crafting ont été abordés à travers le parcours de l’intervenant. Tout d’abord la notion de Gatekeeping : attitude qui entretient une distance entre deux personnes sur les plans techniques ou intellectuels. D’autres questions ont émergé : qu'est-ce que les bonnes pratiques du software crafting ? Est-ce que tout doit absolument être appliqué ? (non).
En parlant de son parcours depuis son arrivée dans ce domaine, Thomas Boileau retrace ces doutes, ces a priori et surtout son cheminement pour faire du craft de manière plus apaisée avec une bienveillance envers la communauté et les nouveaux arrivants dans celle-ci. Entre attitude jusqu’au boutiste et des règles trop strictes, un équilibre doit être trouvé dans le software crafting.
Pour aller plus loin, cliquez ici pour regarder l'interview du Thomas Boileau sur ce sujet.
CONFÉRENCE 6 : COMMENT REFONDRE UN LEGACY SANS TROP DE DIFFICULTÉS – REX et BONNES PRATIQUES
Speaker : Kévin BALICOT
Cette conférence aborde la théorie du bus factor, qui permet mesurer le risque dû à l'absence de partage d'informations et de compétences entre les membres d'une équipe ou d’une entreprise. Avec cette théorie, refondre un legacy peut être impressionnant, c’est pourquoi Kevin Balicot a proposé des conseils pour le faire sans difficulté.
Voici quelques bonnes pratiques pour refondre un legacy avec les technologies les plus récentes :
- Choisir entre une refonte progressive ou un one shot. Cela dépend de la taille du projet mais aussi des demandes du métier, de son implication ou d’une deadline à respecter.
- Mettre en place un golden master : un site témoin de l'ancienne version qui donne les anciens rendus. Puis, avec behat, faire la différence entre le site modèle et le site mis à jour : selon les cas, on modifie le nouveau site (pour qu'il se conforme aux anciens rendus) ou les élément behat (pour refléter la nouvelle référence).
- Utiliser les niveaux et les scopes du code pour ne pas impacter trop à la fois si le code est massif.
- Faire faire un audit : Engager ce type de ressources sur un projet favorise un engagement de moyens par la suite, et faire un audit permet de garantir qu’il ne sera pas laissé à l’abandon.
- Autres points abordés lors du talk : Command Query Responsibility Segregation CQRS, rector / phpstan / php cs fixer, rule engine…
CONFÉRENCE 7 : LE CAS DU GLUE WORK – LE TRAVAIL INVISIBLE EN ENTREPRISE
Speaker : Camille CASTILLO
Le glue work correspond aux tâches non valorisées en entreprise et pourtant très utiles car elles fluidifient et facilitent le travail d’équipe tout en améliorant la communication. Exemple : Réunion inter équipe, mise en place de temps informels, partage des bonnes pratiques en coding, etc.
Ces tâches, cumulées, prennent beaucoup de temps et sont souvent mal réparties au sein des équipes. Une personne peut donc se retrouver avec une charge de travail plus importante, ce qui laisse moins de temps pour coder par exemple et crée des frustrations.
Souvent, ce glue work n’est pas réparti car « il/elle le fait vite et bien mieux que moi de toute façon" Il est donc important de repérer ces tâches, les valoriser et se porter volontaire pour soulager les personnes qui en font plus.
CONFÉRENCE 8 : TRANSFORMER EFFICACEMENT DU JSON EN STRUCTURE PHP FORTEMENT TYPÉE
Speaker : Romain CANON
A travers des exemples, Romain Canon passe en revue les librairies existantes pour transformer du JSON pour hydrater des structures PHP.
Le besoin est de pouvoir transmettre des objets par JSON, et être certain qu’à l’arrivée les objets pourront reprendre leur « forme » dans PHP sans problème de données (données tronquées, incomplètes, transformées à tort…). Pour cela, les évolutions de PHP ont apporté des typages « forts » qui permettent de garantir le type de la donnée transmise, et pouvoir détecter les erreurs potentielles à la compilation (une détection à l’exécution serait trop tard). Cela permet de faire intervenir l’analyse statique, et d’utiliser des mappers de données.
La librairie Valinor couvre un grand nombre des critères nécessaires. Elle gère les types scalaires, les tableaux et structures de type tableau et elle bénéficie d’une gestion d’erreurs granulaire.
Tips: Sur la gestion des valeurs invalides, il faut mieux proposer une exception plutôt qu'un objet à moitié construit. C’est la règle du « tout ou rien ».
Cliquez ici pour découvrir les slides et ici pour le dépôt de la librairie Valinor.
CONFÉRENCE 9 : LES INSTRUMENTS DES DEVS AUGMENTÉ(E)S
Speaker : Gabriel PILLET
L’intervenant fait un tour des nouvelles technologies sorties ces dernières années, et fait un focus sur deux d’entre elles qu'il a intégrées dans son travail quotidien et dans sa veille :
- ChatGPT – Attention, ChatGPT mélange toutes les sources pour proposer des résultats, il ne faut pas prendre ceux-ci pour argent comptant et garder du recul et un esprit critique.
- Copilot – Facilite le travail des développeurs en complétant automatiquement un code.
En se projetant dans le futur proche, des assistants logiciels pourront peut-être produire une charpente de code (qui pourra être ajustée avant usage) à partir d’un input audio. Github Copilot peut être envisagé comme un copilote dans un rally.
Attention, le changement prend du temps : le gain de productivité est rarement instantané, il faut laisser le temps de s’adapter au changement pour observer un impact.
Gabriel Pillet a donné 3 conseils pour votre progression personnelle :
- #1jour1truc : chaque jour, apprendre une nouvelle astuce (et mieux, la partager)
- 2h de veille hebdomadaire
- Allez voir des conférences
POUR ALLER PLUS LOIN, QUELQUES INFORMATIONS SUR L’AFUP DAY LILLE
Vous trouverez ci-dessous quelques slides de conférences de l’AFUP Day Lille :
- Antoine Bluchet : Du vrai serverless ou comment faire tourner PHP dans le navigateur pour documenter API Platform
- Kevin Dunglas : Mitigate Attacks on your PHP Supply Chain
- Grégoire PINEAU : Doctrine, objet typé, et colonne JSON
- Laura DURIEUX : Où sont les femmes de l'informatique ?
Vous trouverez ci-dessous quelques retours sur cette journée :
- Article de JoliCode
- Article d’Akawaka
- Article d’Efficience IT Pour ma part, j'ai déjà pris ma place pour l'AFUP DAY 2024, je ne manquerai pas de vous en parler !