Meetup Craftsmanship de Février

Déjà mon deuxième meetup Craftsmanship ! La formule reste inchangée mais le contenu se renouvelle : 3 lightning talk et une partie atelier ! C’est Cyrille qui ouvre le bal.

La progressivité dans le code, par Cyrille Martraire

Cyrille nous invite à prendre conscience de la notion de « progressivité » lors de nos refactorings. Certains remaniements se font en douceur… jusqu’à se heurter à des remaniements qui s’avèrent plus brutaux !

image

Ainsi passer d’un if au for se fait en douceur. Dans un SGBDR, une entités qui était comprise dans la même table que l’entité maître va pouvoir migrer dans une table séparée lorsque sa cardinalité augmente. Cette déformabilité est facilitée par les outils, des IDE proposant des fonctions de refactoring, ou bien entendu la présence de tests unitaires.

Hélas cette déformabilité rencontre des limites, dont les frameworks sont régulièrement responsables : ceux-ci proposent des conforts d’usage selon un cadre nominal, mais la sortie de ce cadre engendre alors une forte augmentation de la complexité.

Enfin, déformabilité ne signifie pas flexibilité anticipée !

Docker pour le développement logiciel, par Mario Loriedo

Peut-on de manière simple gérer ses environnements de développement indépendamment de la machine ? C’est ce que Mario nous propose via un plugin Sublime Text qui nous permet la compilation directe dans un conteneur Docker !

image

Ce petit projet open-source a vu le jour lors du Docker Hackathon, il est hébergé sur Github. si vous souhaitez y contribuer, vous êtes le bienvenu !

Qu’est-ce que l’isomorphisme ?

Bien sûr, ici on parle de l’isomorphisme en programmation. De l’usage d’anciens mots pour de nouveaux usages, en quelque sorte…Ici, on parle avant tout d’utiliser le même langage et les mêmes API côté client et côté serveur. Cela réduit terriblement les technologies que l’on peut considérer. C’et donc essentiellement Javascript à la base, même si on a de petites choses en Ruby.

image

La plateforme la plus avancée en l’état est Meteor, qui propose ses API Java côté serveur, client Web et mobile ! Bien entendu, les API se comportent différemment en fonction de la localisation, un concept que l’on n’a pas trop de mal à imaginer si l’on pense au stockage…

Teasing des sessions

Nous arrivons à la seconde partie de la soirée, celle ou des ateliers ou des sujets d’open-space vont être proposés.

Java 8

Une première session pour évoquer Java 8 et les bonnes pratiques de programmation à mettre en oeuvre avec cette nouvelle mouture de Java. On pense aux lambdas, bien sûr.

Docker pour l’intégration

C’est aussi un open-space qui nous est proposé ensuite : peut-on utiliser Docker pour les tests d’intégration et comment ? Pour quels apports ?

Cycle de vie et versionning des applications

Un autre open-space proposé ici avec une nette coloration devops…

TDD en mission : oui, non, comment ?

Ca fait toujours classe de dire que l’on fait du TDD. Mais dans le contexte réel du client, ce n’est pas toujours si évident : pression des deadlines, fort legacy, etc. Est possible et comment faire ?

Cette session sera retenue lors des votes.

Atelier BDD

Stéphane Bagnier avait prévu son coup. Il propose un atelier des capture des besoins en ATDD, sur papier via l’interview d’un client.

Cet atelier sera également retenu.

Randori de code

Au dernier moment, cette proposition de session de « live coding » en mode Randori, autour de la résolution d’un jeu ! En l’occurence le tic-tac-toe, que j’appelle personnellement « Morpion ».

Ce sera la 3ème session retenue.

Il est maintenant temps de voter.

image

Grand amateur d’ATDD, je me jette bien entendu sur l’atelier de Stéphane !

Atelier BDD

L’animation proposée par Stéphane est très différente de l’atelier ATDD que je propose. Elle est aussi plus ludique. Le « sujet métier » est un jeu. Il s’agit d’un jeu des plus bizarre : le cul de chouette, issu de la série Kaamelott ! Nos 2 animateurs (car ils sont deux) répondent de manière imprécises et évasives aux questions que nous leur posons destinées à éclairer les spécifications du jeu ! Quand aux tentatives d’abstractions, ils s’y montrent carrément hermétiques !

image

L’idée est bien sûr de nous mettre face à des comportements réels ou exagérés d’utilisateurs et de les aborder par le biais d’exemples à l’aide de l’approche BDD.

En phase 1, le réflexe « écriture de tests » de prends pas, les participants rebondissent de questions en questions, sans les approfondir et en cherchant prématurément des généralisations. Bref, quelques concepts sont dégagés, mais cela reste très superficiel

image

Le second round est dédié à l’écriture de tests en binômes, en se concentrant sur des sous-parties du problème. Le résultat est beaucoup plus encourageant, d’ailleurs on découvre des pièges de l’énoncé. Le travers le plus souvent constaté est l’écriture de tests pas suffisamment univoques, parfois même abstraits ! Ce fut d’ailleurs l’objet d’une petite discussion assez intense dans mon propre binôme.

En conclusion : un bel atelier pour faire découvrir le BDD comme technique de spécification agile.

Et pendant ce temps…

Deux autres ateliers se déroulaient durant cette période. Tout d’abord la discussion autour du TDD en entreprise.

image

Je n’avais jamais vu le Randori pratiqué. Il m’a fallu un petit moment pour en comprendre le fonctionnement. Pour tout dire, il m’a aussi fallu un petit moment pour saisir que tests et code fonctionnels étaient mélangés au sein du même fichier source. Un peu de refactoring, que diantre !

image

On termine la soirée (au moins pour moi, car je ne suis pas resté pour la 3ème mi-temps) par un débrief des différentes sessions. Voici celle du TDD, justement.

Publicité

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

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.