Interview d'Emmanuel Bernard, un Champion Java

Thierry-Leriche-Dessirier

En ce début d'année 2017, nous accueillons avec plaisir la nouvelle de la nomination au titre de Champion Java d'Emmanuel Bernard. Ce dernier a volontiers accepté de répondre à nos questions et de nous présenter sa vision du développement. Commentez

- Titre : Interview d'Emmanuel Bernard, un Champion Java

- Auteur : Thierry-Leriche-Dessirier

- Parution : 6 avril 2017

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2017 Thierry-Leriche-Dessirier. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Emmanuel Bernard ?

- III. Ta contribution au monde Java

- IV. Communautés

- V. Conclusion

- VI. Remerciements

- VII. Annexes

- VII-A. Liens

I - Introduction

C'est toujours une grande joie lorsqu'un développeur francophone est nommé Champion Java. Et on peut dire qu'Emmanuel Bernard ne l'aura pas volé. Certains s'étonnent même que cela ne soit pas arrivé plus tôt.

La rédaction de Developpez.com s'est rapprochée d'Emmanuel Bernard pour qu'il nous explique en quoi cela consiste et qu'il nous fasse partager sa vision du métier en 2017.

Nous avons également demandé à José Paumard, lui aussi Champion Java, de nous expliquer les rouages de la communauté des Champions Java qu'il connaît bien désormais.

II - Emmanuel Bernard ?

En quelques mots, qui es-tu ? Quel est ton métier, et comment le définis-tu ?

Bonjour, je suis Emmanuel Bernard, développeur open source depuis plus de 15 ans. D'abord la nuit et les week-ends et puis à temps plein quand j'ai rejoint JBoss (qui s'est fait racheté par Red Hat). Je suis Platform Architect (ou Chief Architect) des produits qui tournent autour de la donnée dans le middleware Red Hat.

Emmanuel Bernard

Ça veut dire faire plein de choses à des niveaux très différents :

- contribuer au code, test, doc, discussion de design sur plein de projets Open Source (Hibernate ORM, Hibernate OGM, Hibernate Search, Hibernate Validator, Infinispan, Debezium, etc.) ;

- aider à définir où Red Hat veut aller, ce que l'on veut résoudre comme problèmes et faire refléter cela dans les roadmaps ;

- mais aussi (surtout) conseiller et guider (mentorer) les gens avec qui je travaille (leur développement personnel, les faire grandir, insuffler la culture Red Hat, etc.).

Quel est ton parcours ?

Je commence à être vieux alors préparez-vous à une réponse-fleuve. J'ai commencé à la Fnac au moment où les équipes inventaient fnac.com. C'est une super expérience de challenges techniques et d'invention d'un métier qui n'existait pas vraiment à l'époque en France : la vente sur Internet. C'était en ASP, VB (pas .Net, COM/DCOM :) ) Et toujours à la Fnac, je me suis mis au Java où j'ai commencé à me mêler à la culture open source.

Je suis devenu contributeur sur Hibernate ORM et j'ai lancé les premiers prototypes qui sont devenus plus tard le standard JPA (notamment l'usage des annotations). J'ai participé à l'Expert Group JPA au sein du Java Community Process, c'est-à-dire l'organisme de standardisation de Java. C'est à ce moment-là que j'ai rejoint JBoss.

Pour résoudre d'autres problèmes, j'ai fondé Hibernate Search (recherche full-text sur les objets) et Hibernate Validator (validation des contraintes de propriété sur les objets), ce qui m'a amené à diriger la création du standard Bean Validation.

Je contribue également à d'autres projets dont Hibernate OGM, Ceylon, Awestruct ou encore Debezium. Quasiment tout ce que je produis est open source.

En parallèle de ces projets, j'ai pris des responsabilités d'architecture et de coordination au sein de Red Hat. Un des points très sympa de Red Hat, c'est que l'on peut rester dans une voie technique et quand même évoluer. Donc non, je ne suis pas manager.

En dehors de cela, j'ai fondé le podcast Les Cast Codeurs et j'aide depuis quelques années les gars derrière Devoxx France pour la sélection des conférences.

Ah oui, j'ai aussi écrit un livre technique : Hibernate Search in Action. C'est l'enfer, je ne vous recommande pas de vous lancer…

Tu participes de façon active à la communauté. On te croise dans de nombreuses conférences. Tu peux nous en parler ?

C'est le truc cool avec l'open source, tu es en relation directe avec les gens qui l'utilisent. Et tu es dans la position envieuse de bosser pour quelque chose de passionnant, auquel tu crois. Donc aller en parler pour convaincre d'autres personnes et partager sa passion est relativement naturel finalement.

C'est un processus assez long de se faire « connaître sur le circuit ». Lancez-vous dans les groupes d'utilisateurs locaux, les conférences à taille humaine et faites-vous connaître doucement.

N'ayez pas peur de vous planter. Lors de ma première grosse conférence sur Hibernate ORM, au Java User Group en Belgique, j'ai tellement paniqué au début que je pense que c'est la pire prestation de ma carrière. Visiblement, ils ne m'ont en pas voulu.

Quelles sont les technologies qui te motivent actuellement ?

À part la téléportation qui me permettrait de gagner du temps, je suis très intrigué par ce mouvement qui s'appelle les data stream. Pour faire simple, l'idée est de stocker tous les changements d'état dans un log au lieu d'appliquer ces changements dans une base de données. De la liste des changements, on peut recréer l'état de sa base, mais surtout on peut attacher plein de services différents qui vont pouvoir écouter cette liste de changements et fournir des fonctionnalités comme un index full-text, de découverte de corrélation (analytique), construction de vues matérialisées, etc. Un des points forts est de supprimer le lien entre le producteur des données et ses consommateurs tout en partageant l'état des données. On peut, par exemple, ajouter un nouveau service consommateur des mois après et lui faire rattraper les changements jusqu'à suivre l'évolution en temps réel. C'est une approche encore neuve avec beaucoup de choses à construire, mais qui ouvre plein de portes intéressantes.

Sinon, je suis toujours à essayer d'améliorer ce que je peux faire des 24 heures par jour que j'ai. Cela va de la méthodologie de gestion de mes tâches (un mélange de GTD et personal kanban) à l'amélioration de mes outils et l'automatisation de mes flux de travail.

Effectivement, tu en as parlé plusieurs fois dans le podcast des Cast Codeurs. Tu peux nous en dire quelques mots, svp. ? Ça marche vraiment ?

On est dans des métiers où l'on a une liste de tâches infinie et donc inatteignable. J'étais arrivé à un moment où je faisais trop de choses en parallèle et j'avais l'impression de ne pas avancer, d'être mécontent de mes progrès et de paniquer sur les deadlines. La méthodologie Getting Thing Done permet de clarifier ce que l'on fait et surtout ce que l'on ne fait pas. On sait que l'on travaille sur les tâches jugées prioritaires et donc que si une tâche n'est pas faite, c'est qu'elle était moins importante. Ça m'a vraiment changé la vie : je suis beaucoup, beaucoup plus zen sur mon organisation.

La méthode s'appuie sur l'idée de lister *tout* ce que l'on a à faire et de les passer en revue régulièrement (toutes les semaines pour moi) pour être sûr que l'on a les priorités aux bons endroits. C'est très libérateur de savoir que *tout* ce que l'on a à faire est dans un système (papier ou autre) et donc que l'on n'a pas à y penser. Qui s'est déjà rappelé au milieu du supermarché qu'il devait répondre à un rapport de bogue important ou, au contraire, qu'il n'y a plus de lait dans le frigo alors qu'on est au boulot ? C'est ce genre de choses que cette méthode évite.

Personal Kanban utilise une approche un peu moins structurée, mais s'appuie sur les mêmes principes. Si vous êtes intéressé, je vous encourage à écouter une discussion entre Guillaume Lours (personal kanban) et moi (GTD), on y compare les méthodes et nos points de vue.

As-tu des passions en dehors de l'informatique ?

Je suis un snowboarder. Orienté free ride: carver les pistes et surfer la poudreuse. Je recommande une super planche pour ça, la Dupraz 5'5”+. Cela fait deux ans que je l'ai et c'est un plaisir.

Sinon, je me suis mis à courir (comme la moitié de la planète visiblement).

J'aime bien le whisky aussi (tourbé, bourbon…).

III - Ta contribution au monde Java

Certains de nos lecteurs sont abonnés au podcast que tu animes avec tes compères, les Cast Codeurs. Peux-tu nous en parler ? Comment cette aventure a-t-elle commencé ? As-tu toujours la passion ?

C'est un podcast francophone qui alterne deux formats :

- un qui discute des nouvelles du monde Java et de l'univers des développeurs en général ;

- un qui interviewe une personne sur une technologie particulière (JHipster, vert.x, Elasticsearch, HTTP/2…)

Et tant qu'à faire, on essaye de faire cela en s'amusant.

Je trouvais que j'étais trop centré sur les technologies JBoss et je voulais faire de la veille technologique. Et je me suis dit que cela ne devrait pas être beaucoup plus compliqué de partager cette veille sous forme de podcast. Grosse erreur parce que ce cela prend beaucoup de temps, mais cela fait huit ans maintenant et pas mal de contenu. C'est un peu le même thème que l'open source, partager la connaissance sans barrière.

J'avoue que c'est dur parfois de garder la motivation après huit ans. Cela demande beaucoup de temps que je prends sur mon temps libre et celui de ma famille. Mais c'est sympa quand les auditeurs me remercient et, surtout, on se marre bien avec les autres Cast codeurs et les interviews je les fais pour moi, sur les sujets qui m'intéressent.

Pour avoir un son de qualité, on enregistre le son sur chaque ordinateur et je fais le mix des différentes pistes. Plus il y a de gens, plus c'est long. Il faut en gros deux heures pour préparer l'épisode, 1 h 30-2 h pour l'enregistrer et trois à cinq heures pour le mixer et le publier. 165 épisodes : on parle de 110 jours de travail à douze heures par jour :)

Un jour ou l'autre, on a tous utilisé Hibernate ORM, un framework sur lequel tu es un des plus gros contributeurs. Tu peux nous en parler ?

Hibernate ORM est un outil de mapping objet relationnel donc le rôle est d'automatiser 95 % de l'implémentation fastidieuse d'accès à la base de données relationnelle et notamment l'écriture des requêtes SQL pour chaque base de données cible.

Au-delà de sa fonction primaire et du temps gagné, la grosse valeur que je trouve à utiliser un ORM, c'est de prendre une distance sur son modèle de données via le modèle objet. Cela permet de connaître les changements d'état des objets au sein même de l'application et d'y exécuter des fonctionnalités importantes : validation des objets (c'est Hibernate Validator), maintenir un index full-text consistant avec la base de données (c'est Hibernate Search).

Selon toi, quel est le futur des ORM ?

Je ne suis pas sûr qu'il faille nécessairement empiler des fonctionnalités : on a des outils très matures. Aujourd'hui, on travaille beaucoup sur l'amélioration de la performance de notre moteur, notamment en analysant finement le comportement de la JVM et en réduisant la taille des requêtes que l'on exécute (la taille des requêtes prenant de la place sur le réseau aux échelles où l'on est).

Le futur de la persistance, c'est une question plus intéressante. L'approche orientée data stream dont je parlais (cf. plus haut) est très intrigante, mais vient également avec des challenges énormes.

Tu penses que ça arrivera dans Hibernate ?

C'est une question que l'on se pose. Une personne dans l'équipe y croit et veut monter un proto. Moi je vois plutôt un « ORM » qui serait capable de prendre les changements d'état de plusieurs data stream et de reconstituer un graphe d'objet (donc de plus haut niveau). Il y a des choses à faire autour du sujet c'est sûr !

Quel est le futur de Java selon toi ? À quoi faut-il s'intéresser ?

Le futur de la JVM est très solide (performance, GC, etc.). Les entreprises qui ont des besoins poussés comme Google, Twitter ou Apple l'ont bien compris, et Java est une bonne partie de leur arsenal. Java aussi est au cœur de beaucoup des frameworks de big data et de l'univers Hadoop en particulier. Le gros travail aujourd'hui est sur les « garbage collectors pause faible » efficaces sur les grosses tailles mémoire, il y a G1 qui est devenu le défaut dans Java 9 et Shenandoah sur lesquels certains de mes collègues travaillent.

Pour le côté plus applicatif, j'irai creuser du côté les concepts réactifs. Ce n'est pas pour tous les usages ni toutes les applications, mais les solutions réactives comme Vert.x amènent une approche très intéressante pour penser les applications et leur interaction avec les entrées/sorties.

De manière générale, l'innovation sur les bibliothèques Java n'a pas freiné. On assiste plutôt à des vagues successives d'innovations qui remplacent certains frameworks ou approches pour d'autres. Elles sont parfois liées à des innovations venant du langage ou de la JVM :

- les annotations et l'approche déclarative/convention plutôt de configuration (Java 5) ;

- les génériques qui ont amené une approche API fortement typée (Java 5) ;

- les lambda qui font évoluer les paradigmes des frameworks (Java 8).

IV - Communautés

C'est quoi un Champion Java ? Qui sont les autres Champions français ?

Un Java Champion est une personne reconnue pour son influence sur une partie de la communauté Java. C'est soit pour des contributions en termes de code, soit en termes d'évangélisation de la plateforme, soit en termes d'influence, soit souvent les trois à la fois. Une règle importante est qu'un employé d'Oracle ne peut pas être un Java Champion. Les Java Champions sont donc indépendants d'Oracle et sont là entre autres pour faire entendre la voix des communautés.

J'ai peur d'en rater, mais certains des autres Champions Java francophones sont Agnes Crepet, Valere Dejardin, Daniel De Luca, Jean-Michel Doudoux, Rémi Forax, David Gageot, Antonio Goncalves, Amira Lakhal, Vincent Massol, José Paumard, Olivier Schmitt.

J'ai donc demandé à José Paumard de participer à cette interview.

José*, je crois savoir que tu es à l'origine de la candidature d'Emmanuel. Tu peux nous expliquer comment ça fonctionne ?

(*) José Paumard, Champion Java depuis Noël 2015.

José : Je pense que la seule personne à l'origine de la nomination d'Emmanuel, c'est Emmanuel lui-même ! Devenir Champion Java n'est pas une question de copinage, un Champion est accepté par les Champions existants par ses qualités.

Au-delà de ça, effectivement, une candidature de Champion Java doit être déposée par un Champion existant. C'est comme ça que les choses se font. Cela dit, il ne s'agit pas d'une cooptation, ce n'est pas parce qu'un Champion présente une candidature qu'elle est automatiquement acceptée. C'est plutôt un parrainage. Ensuite tous Champions votent, et la nomination est décidée ou non. Ça arrive qu'elle ne soit pas acceptée.

Pour Emmanuel, après en avoir discuté ensemble à Devoxx Belgique 2016 (on ne fait pas ce genre de choses dans le dos des gens…), j'ai juste posé sa candidature et les choses se sont enchaînées.

Le processus de désignation des Champions Java est public et a été expliqué par Steven Chin en tant que Community Manager à JavaOne il y a deux ans. Il est assez simple. Un Champion existant doit soumettre la candidature sous forme d'un questionnaire à remplir. Les points à détailler sont les suivants :

1. Java Champions are leaders; ideal candidates are leading Java-related projects, JUG communities, and so on.

2. Java Champions are technical luminaries; the candidate should be a Java engineer or architect who is relatively senior and has lots of experience.

3. Java Champions are independent-minded and credible; Java Champions may author or publish content that is pro, neutral, or negative toward Oracle. [note : en fait un JC ne peut pas être un salarié d'Oracle]

4. Java Champions are involved with some really cool applications of Java Technology or some humanitarian or educational effort. The application must be openly available to the Java community (vs. a company-proprietary or government-classified project).

5. Java Champions are able to evangelize or influence other developers through their own professional activities (via consulting, teaching, writing, speaking, etc.).

Donc si l'on résume : un Champion Java est une référence technique, fortement impliqué dans les communautés et l'open source, indépendant, capable de rayonner. Dans la pratique, comme l'avait mentionné Agnès Crepet, avoir été speaker à JavaOne reste une référence.

Un community manager valide ensuite la candidature (le questionnaire est-il rempli correctement, est-il assez détaillé) qui est postée sur la mailing list des Champions Java. S'ensuit une discussion, suivie d'un vote. Il faut qu'il y ait un minimum de votes Yes, et aucun vote No. En fait, tout Champion Java a un droit de véto sur une candidature. Ce véto, s'il est activé, doit évidemment être justifié. S'il ne l'est pas suffisamment, il ne sera pas pris en compte.

Une fois que les planètes sont alignées, c'est le community manager qui fait l'annonce, rédige le blog post, le tweet, etc.

Et tu as donc pensé à Emmanuel…

José : Voilà !… Alors, pourquoi Emmanuel ? Réponse simple : parce que Emmanuel ! Y a-t-il besoin d'en dire plus ? ;) Blague à part, on a eu une réunion de Champions Java à Devoxx en novembre dernier, et j'ai réalisé que je n'y voyais pas Emmanuel. J'ai vérifié sur les listes, et à ma grande surprise je ne l'y ai pas trouvé. Donc je lui ai demandé s'il l'était, et en fait non… J'étais tellement persuadé qu'il l'était que je ne m'étais jamais posé la question. Donc voilà.

Pour le reste, est-il besoin de rappeler sa (ses) contribution à l'open source au travers d'Hibernate et de tous ses projets dérivés ? Du fait qu'il nous offre notre épisode des Cast Codeurs régulièrement ? Du fait qu'il est toujours disponible pour venir parler aux JUG ? Pour moi les Casts Codeurs rassemblent toutes les valeurs que l'on aime le plus dans l'open source. La gratuité, le partage, l'excellence technique, l'ouverture à la communauté au travers des crowdcasts.

L'open source, c'est le principe de la distribution pyramidale. Chacun donne un peu, selon ses moyens, et en échange tout le monde reçoit beaucoup, y compris ceux qui ne peuvent pas donner. L'open source réussit à faire fonctionner le principe de l'échange pyramidal. Dans le domaine économique, c'est une arnaque et c'est interdit…

Emmanuel, on te croise souvent dans des conférences. Tu es un peu une célébrité. Et pourtant tu restes modeste. Ce nouveau titre va-t-il changer quelque chose ?

Je ne pense pas être particulièrement modeste. Mais j'ai assez roulé ma bosse pour accepter les opinions et idées compétitives aux miennes sans les jeter à la poubelle à priori. Le côté fanatique des débuts s'est calmé :) J'essaie toujours de prendre du temps et de l'énergie pour l'écoute.

Je vois le titre de Champion Java comme une reconnaissance plus qu'un accès à un statut. D'ailleurs ce sont les remerciements que j'ai reçus qui m'ont le plus touché dans cet évènement. Bref, si vous voyez que la taille de mes chevilles augmente, envoyez-moi un petit email.

Que penses-tu de Developpez.com et de sa communauté autour de Java ?

C'est la même approche que les Cast Codeurs pour moi : encourager et partager la connaissance. Chez Red Hat, on a une phrase qu'on aime bien: « ta mère avait raison, c'est mieux de partager. » (“Your mother was right, it's better to share.”)

Les Français sont plus à l'aise dans leur langue maternelle, donc tous ces contenus sont bien utiles. Je ne voulais pas démarrer un énième podcast en anglais, surtout face au mastodonte d'alors The Java Posse. C'est aussi pourquoi les Cast Codeurs sont toujours en français (ou franglais).

V - Conclusion

Si vous écoutez les Cast Codeurs et qu'un sujet que vous connaissez n'est pas assez discuté à votre goût, n'hésitez pas à envoyer ce qu'on appelle un crowdcast.

C'est tout simplement un enregistrement de quelques minutes que l'on insère dans le podcast. Ça sera peut-être le premier pas d'une longue carrière de partageur :)

D'après vous, qui seront les prochains Champions Java ? Plusieurs noms circulent déjà…

Vos retours et remarques nous aident à améliorer les publications de Developpez.com. N'hésitez donc pas à commenter cet article. Commentez

VI - Remerciements

Toute l'équipe de Developpez.com se joint à moi pour féliciter, de nouveau, Emmanuel Bernard pour sa récente nomination en tant que Champion Java. Nous lui adressons également nos remerciements pour avoir accepté de participer à cette interview et nous avoir transmis sa vision du métier. Bien entendu, nous n'oublions pas José Paumard, qui a contribué à cette interview et nous lui adressons également nos remerciements chaleureux.

Et comme d'habitude, merci aux équipes de Developpez.com qui ont participé à cet article, et en particulier Mickaël Baron et Claude Leloup.

VII - Annexes

VII-A - Liens

Les Cast Codeurs: https://lescastcodeurs.com

Hibernate: http://hibernate.org
Hibernate ORM : http://hibernate.org/orm
Hibernate Search : http://hibernate.org/search
Hibernate Validator : http://hibernate.org/validator

Site personnel d'Emmanuel : https://emmanuelbernard.com

Interview de José Paumard : https://thierry-leriche-dessirier.developpez.com/articles/interview/jose-paumard-zouheir-cadi-devoxx-france-2013

Interview de Jean-Michel Doudoux : https://thierry-leriche-dessirier.developpez.com/articles/interview/jean-michel-doudoux