Conférence NCrafts Bordeaux 2017 – 1ère journée

By vendredi 22 décembre 2017Autres, Conférence

Début décembre a eu lieu, pendant 2 jours, la conférence NCrafts Bordeaux. Cette première conférence locale a pour objectif de faire comme sa grande sœur NewCrafts. Une conférence indépendante et internationale, organisée par des développeurs pour des développeurs dans le but d’apprendre, échanger, faire des retours d’expérience autour de techniques et bonnes pratiques.

Ces conférences sont intrinsèquement liées au Software Craftsmanship ou « l’artisanat du logiciel » qui met l’accent sur les compétences, la qualité du code, etc.

Cet article va résumer la première journée de cette conférence qui avait lieu à Cap Sciences sur les bords de la Garonne.

Keynote – Educational neurosciences, what can they teach us?

Marine Campedel, qui d’habitude présente devant des enseignants et des chercheurs, est venue nous parler du cerveau, de neurosciences et d’apprentissage. Mieux comprendre, dans les grandes lignes, comment le cerveau fonctionne et comment nous apprenons. Elle nous a parlé de la plasticité du cerveau, i.e. de sa capacité à s’adapter, se remodeler en fonction de nos expériences et rencontres. Elle a défait quelques neuromythes : « nous perdons des neurones à partir de 20 ans », « les femmes sont multi-tâches »… et a fini sur une belle note qui sonnait bien avec la philosophie de la conférence autour du partage des connaissances : « co-apprendre : l’enseignant apprend de l’élève comme l’élève apprend de l’enseignant ».

Pharo, a Live programming environment

Pharo est un langage objet fortement inspiré de Smalltalk. Christophe Demarey, ingénieur chez Inria est venu nous présenter en live coding et en TDD ce langage. C’est à la fois un outil de recherche mais aussi un langage utilisée par quelques entreprises.

J’ai été agréablement surpris par la syntaxe claire et épurée, ainsi que par l’environnement de développement très immersif et interactif.

The systemic of the Liskov substitution principle

Passé ce titre peu intuitif et la définition de Wikipédia très formelle, Romeu Moura, à la fois drôle et pédagogue a réussi à nous faire bien comprendre ce principe simple mais puissant. Armé de mind mapping en live et de quelques lignes de code, il nous a montré comment on pouvait appliquer ce principe en amont, à notre code justement pour que toute substitution, e.g. modification d’une entité de notre système, ledit système, e.g. notre application, continue de fonctionner correctement.

Il nous a donné sa définition bien à lui « on peut changer l’implémentation d’un truc par une autre implémentation du même truc sans tout casser ». Il a confronté la vision orienté objet de Gosling, créateur de Java à celle d’Alan Kay le créateur de Smalltalk. On a aussi parlé d’écosystème, d’écologie, de covariance et de contravariance, et cité deux références : Thinking in Systems de Donnella H. Meadowns et Zen and the Art of Motorcycle Maintenance de Robert M. Pirsig.

From Front to Back: Homomorphic Event Sourcing

Après le déjeuner et pour digérer, on a parlé d’Event Sourcing avec Nicole Rauch et Arnaud Bailly, deux développeur·e·s expérimenté·e·s, surtout dans les langages fonctionnels.

Quelques réflexions et propositions de Nicole et d’Arnaud sur la façon de faire collaborer du code dans deux couches différentes, par exemple entre Front et Back sans faire l’approche naïve qui consiste à ne démarrer le développement de la partie User Interface une fois l’API du back-end terminée.

Leur idée est de construire un modèle formel (une machine à états) qui va pouvoir interagir à la fois avec le code réalisé pour le Front et le code réalisé pour le Back. Je vous laisse découvrir le code en Haskell qu’ils ont montré pendant la présentation https://github.com/aleryo/homomorphic-event-sourcing sur la base du jeu de société Acquire. Avant de montrer un peu de code, je ne peux m’empêcher de citer Arnaud : « une bonne conf de développeur·se·s, c’est une conf avec un peu d’Haskell ».

All my team is using Rust. HALP!

Clément Delafargue, CTO chez Clever Cloud, entreprise qui développe une plate-forme de mise en production automatique nous a décrit son rôle de CTO, vu d’un développeur fonctionnel. Pourquoi, malgré un pile de bibliothèques principalement en Scala, ils ont peu à peu utilisé le langage Rust. Ils l’utilisent surtout pour pouvoir déployer et exécuter du code compilé, stand-alone, rapide et efficace, sans le soucis d’avoir tout un système de dépendances à embarquer sur une VM.

Je ne reviendrai pas sur les bienfaits de ce langage système et ne ferai que citer Clément : « Rust répond mieux au besoin de Go que Go ».

Refactoring mount doom, tackling legacy code

Franziska Sauerwein, comme le titre de sa présentation nous laisse à penser, nous a parlé de legacy code et de refactoring.

Très bonne introduction puis conclusion avec l’analogie entre une équipe de développeur·se·s et une anecdote à propos d’une randonnée familiale en montagne qui avait mal commencé mais plutôt bien fini.

Après avoir mis le doigt sur les raisons d’un code qui devient legacy, i.e. qu’on a dû mal à faire évoluer, à maintenir, elle a donné quelques bons conseils. En voici un florilège :

  • il n’y a personne à blâmer, tout le monde généralement essaie de bien faire. Mieux vaut encourager à parler et à trouver des solutions constructives
  • savoir répondre à la question « pourquoi on fait ce refactoring ? »
  • où doit aller le prochain refactoring : une partie critique et business du code, l’endroit où va aller la prochaine fonctionnalité
  • Utiliser la méthode Mikado
  • Faire des kata et pratiquer le refactoring sur des exemples jouets

The day after tomorrow: Let the machine do the coding

Nicole Rauch et Michael Sperber sont venus finir cette journée en nous parlant de sécurité et robustesse dans les applications, et comment un langage comme Idris peut nous aider. Idris est un langage de programmation fonctionnelle, très inspiré par les langages Haskell et ML. Il a un système de type très puissant : dependent type. On peut par exemple mettre des contraintes comme « une paire d’entiers dont le second doit être plus grand que le premier ». La présentation s’est faite en duo avec de la programmation en live.

Conclusion

Journée riche, enthousiasmante et sympathique. On a envie d’aller regarder tel article, feuilleter tel bouquin, essayer ce langage, discuter avec untel, etc.

La 2e journée, qui donnera lieu à un second article sur NCrafts Bordeaux était une session Open Space Conference, i.e. le programme se construit au fur et à mesure de la journée avec tous les participant·e·s.