Sur Symfony et les traitements asynchrones, le candidat décrit des handlers rejouables et une file des messages en échec, sans réglage mesuré. Sur la fiabilité des flux de paiement, centimes et verrou pessimiste sont en place mais sans gros volume. Sur Doctrine et PostgreSQL, la méthode par plan d'exécution est solide. La conception orientée domaine est peu abordée, Redis est bien maîtrisé et l'usage de l'IA est encadré par des vérifications outillées.
Guillaume décrit une chaîne de synchronisation de catalogues fournisseurs construite sur Messenger, avec des handlers rejouables et des montants en centimes. Il reste lucide sur ses limites : ses délais de reprise n'ont jamais été ajustés sous charge et la conception par domaine reste peu développée.
Détail par exigence
Symfony et traitements asynchrones
indispensableSolide
Utilise Messenger pour la synchronisation de catalogues avec des handlers qui comparent un hash avant d'agir. Sait décrire retries et file d'échec, mais n'a pas ajusté ces réglages sous charge réelle.
Fiabilité des flux de paiement
indispensableSolide
Représente les montants en centimes avec un objet valeur et utilise un verrou pessimiste contre la double vente. Le volume de paiements réels reste à confirmer.
Doctrine et PostgreSQL
indispensableSolide
Diagnostique une requête lente avec EXPLAIN ANALYZE et choisit un index adapté. Surveille les N+1 avec le profileur.
Conception orientée domaine
Solide
La conception orientée domaine n'est abordée qu'à travers un objet valeur et la séparation plateforme et vendeur, sans discussion de contextes.
Redis et cache
Solide
Place Redis sur des données de lecture avec expiration courte et suppression de clés à l'import, en gardant les données exactes hors cache.
Usage de l'IA
indispensableSolide
Utilise un assistant pour les tests et les normaliseurs, contrôle par PHPStan et tests, et garde confidentialité et architecture pour lui.
Points d'appui
Handlers rejouables sans effet de bord grâce à la comparaison d'un hash de contenu.
Montants en centimes avec objet valeur, après un écart constaté sur un export.
Diagnostic d'une requête lente par plan d'exécution et index composé.
Cadre d'usage de l'assistant IA net : tests et normaliseurs, jamais de données clients.
Points de vigilance
Stratégie de reprise décrite mais réglée à l'instinct, jamais mesurée en production.
Pas d'expérience de volumes de paiements réels.
Conception par domaine limitée à un objet valeur.
Sujets abordés
Symfony et traitements asynchrones · Fiabilité des flux de paiement · Doctrine et PostgreSQL · Conception orientée domaine · Redis et cache · Usage de l'IA
Entretien conduit en autonomie par le candidat, réponses transcrites puis analysées.
L'évaluation finale appartient au recruteur : Revelyum n'émet aucune décision automatisée.
En clair
Oui, il peut faire ce job
Guillaume sait construire des traitements de données qui se rejouent sans risque et il corrige ses lenteurs avec méthode. L'offre demande aussi d'avoir manipulé de vrais paiements, ce qu'il n'a pas encore fait.
Ses points forts
Fiabilité des traitements rejoués
Méthode de diagnostic de la base
Usage prudent de l'assistant IA
À creuser en entretien
Pas de gros volume de paiements
Conception par domaine à approfondir
Savoir-être
Structurer sa réponse
Déroule chaque réponse dans l'ordre du flux, du message à la base.
S'intégrerait bien à une équipe core qui valorise la rigueur, avec un accompagnement sur la conception par domaine.
Détail par exigence
Symfony et traitements asynchrones
indispensableSolide · 7,5/10
Handlers idempotents face aux messages rejoués · 8/10Idempotence obtenue par comparaison de contenu.ne fait rien si c'est identiqueRéponse
R3
Stratégie de retry et file des messages en échec · 7/10Stratégie décrite mais jamais ajustée en production.je n'ai jamais vraiment réglé ces délais en productionRéponse
R3
Fiabilité des flux de paiement
indispensableSolide · 7,5/10
Représenter les montants sans erreur d'arrondi · 7/10Entiers et devise portée par un objet valeur.tout passait en entiers en centimesRéponse
R1
Transactions et verrous contre les doubles débits · 8/10Verrou court dans une transaction.un verrou pessimiste sur la ligne de stock dans une transaction courteRéponse
R2
Doctrine et PostgreSQL
indispensableSolide · 8/10
Requêtes lentes, index et plan d'exécution · 8/10Index justifié par le plan d'exécution.un index composé sur le fabricant et la référence normaliséeRéponse
R4
Hydratation, N+1 et chargement des relations · 8/10Détection des N+1 par l'outillage.je surveillais aussi les N+1 avec le profileur SymfonyRéponse
R4
Conception orientée domaine
Solide · 8/10
Agrégats et invariants métier · 8/10Objet valeur utilisé, notion d'agrégat peu développée.un petit objet valeur Money qui portait la deviseRéponse
R1
Redis et cache
Solide · 7/10
Invalidation du cache · 7/10Invalidation volontaire à l'import.on supprimait les clés concernées plutôt que d'attendre l'expirationRéponse
R5
Durées de vie et données périmées · 7/10Durée de vie adaptée à la donnée.avec une expiration courte de quelques minutesRéponse
R5
Usage de l'IA
indispensableSolide · 7,3/10
S'il code avec un assistant IA (Copilot, Cursor, Claude Code, ChatGPT…) : quelles tâches de développement il lui confie, et lesquelles il garde · 7/10Tâches déléguées nommées.Copilot dans l'éditeur pour les tests et les normaliseurs de donnéesRéponse
R6
Comment il relit, teste et corrige le code que l'assistant produit · 8/10Contrôle outillé avant revue.je le fais passer par PHPStan et la suite de testsRéponse
R6
Ce qu'il ne confie jamais à l'assistant : données confidentielles, sécurité, décisions d'architecture, cas où il s'est trompé · 7/10Limites claires.Je ne lui donne jamais de données clients ni de clésRéponse
R6